首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CoreNFC ISO7816的例子?

CoreNFC ISO7816的例子?
EN

Stack Overflow用户
提问于 2022-05-31 14:35:22
回答 1查看 103关注 0票数 1

我正在寻找一个CoreNFC ISO7816连接和阅读的示例。有人能给我看最简单的吗?我是iOS开发的新手,也是对我没有帮助的官方文档。我尝试使用NFCTagReaderSession类。它的构造函数签名是

代码语言:javascript
运行
复制
init?(pollingOption: NFCTagReaderSession.PollingOption, delegate: NFCTagReaderSessionDelegate, queue: DispatchQueue?)

NFCTagReaderSessionDelegate是一个协议,所以我为实现创建了一个类:

代码语言:javascript
运行
复制
class NFCReaderDelegate: NSObject, NFCTagReaderSessionDelegate {
    func tagReaderSessionDidBecomeActive(_ session: NFCTagReaderSession) {}
    
    func tagReaderSession(_ session: NFCTagReaderSession, didInvalidateWithError error: Error) {}
    
    func tagReaderSession(_ session: NFCTagReaderSession, didDetect tags: [NFCTag]) {
        print("got a Tag!"
        print("\(tags)")
        //let nfcTag = tags.first!
        print("connecting to Tag!")
    }
}

所以,我做了个有趣的事

代码语言:javascript
运行
复制
func nfc() -> Void {
let delegate = NFCReaderDelegate()
    let option = NFCTagReaderSession.PollingOption.iso14443
    let session = NFCTagReaderSession(pollingOption: option, delegate: delegate, queue: nil)
//..............

正如我所理解的,连接的结果作为对标记的引用,我应该将其看作是对委托的tagReaderSession方法的调用,但是没有发生任何事情。接下来,我尝试手动调用session.connect(to:)方法。它的签名是

代码语言:javascript
运行
复制
func connect(to: NFCTag, completionHandler: (Error?) -> Void)

但是,在哪里可以买到NFCTag

我尝试用像let tag: NFCTag = NFCTag.iso7816()这样的表达式手动声明它,但是它也要求一个协议参数.所以,到目前为止,我还不能成功。我只需要一个简单可行的小程序。

EN

回答 1

Stack Overflow用户

发布于 2022-10-20 14:52:16

委托不经常保留,因此保存对变量delegate的临时引用可能会被解除分配,一旦函数nfc()完成,则为零。

而不是。让您的holding类实现NFCTagReaderSessionDelegate,或者只保留一个实例:

代码语言:javascript
运行
复制
// Keep it here to avoid it from being deallocated
let delegate = NFCReaderDelegate()

func nfc() -> Void {
    let option = NFCTagReaderSession.PollingOption.iso14443
    let session = NFCTagReaderSession(pollingOption: option, delegate: delegate, queue: nil)
    //..............
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72449753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档