iOS NFC功能开发
<p><strong><span style="color: rgba(255, 0, 0, 1)">一、NDEF格式的</span></strong></p><p>使用 NFCNDEFReaderSession。Delegate为:NFCNDEFReaderSessionDelegate</p>
<p><strong><span style="color: rgba(153, 204, 255, 1)">1、初始化对象</span></strong></p>
<p><strong>@property</strong>(<strong>strong</strong>,<strong>nonatomic</strong>)NFCNDEFReaderSession *session;</p>
<p><strong>@property</strong>(<strong>strong</strong>,<strong>nonatomic</strong>)<strong>id</strong><NFCNDEFTag> cuurentTag;</p>
<p><strong>self</strong>.session = [initWithDelegate:<strong>self</strong> queue:<strong>nil</strong> invalidateAfterFirstRead:<strong>YES</strong>]; //YES为只读一个TAG然后结束,NO为读取多个</p>
<p><strong>self</strong>.session.alertMessage = @"读取卡片,请将卡片靠近手机";</p>
<p>[<strong>self</strong>.session beginSession]; //开始识别 弹出识别提示框</p>
<p>代理方法</p>
<p>-(<strong>void</strong>)readerSession:(NFCNDEFReaderSession *)session didDetectTags:(NSArray<<strong>__kindof</strong> <strong>id</strong><NFCNDEFTag>> *)tags API_AVAILABLE(ios(13.0)){</p>
<p> <strong>self</strong>.cuurentTag = ;</p>
<p>}</p>
<p>识别到卡片后会回调该方法,在该方法中可获取到tag。</p>
<p><strong><span style="color: rgba(153, 204, 255, 1)">2、读取卡片内容:获取到卡ID均为空,获取卡ID需要下面第二种方法。</span></strong></p>
<p>2.1 需要先建立连接</p>
<p>;</p>
<p>2.2连接成功之后调用方法,可以获取到卡片的内容</p>
<p>;</p>
<p><strong><span style="color: rgba(153, 204, 255, 1)">3、写入NDEF内容</span></strong></p>
<p>3.1 需要先建立连接</p>
<p>;</p>
<p>3.2连接成功之后调用方法获取卡片状态:判断是否可以写入</p>
<p>[<strong>self</strong>.cuurentTag queryNDEFStatusWithCompletionHandler:^(NFCNDEFStatus status, NSUInteger capacity, NSError * <strong>_Nullable</strong> error) {}];</p>
<p>状态 status == NFCNDEFStatusReadWrite 则可以写入。</p>
<p>3.3 写入</p>
<p>[<strong>self</strong>.cuurentTag writeNDEF:myMessage completionHandler:^(NSError * <strong>_Nullable</strong> error) {}];</p>
<p><strong><span style="color: rgba(255, 0, 0, 1)">二、iOS13新支持的类型:NFCPollingISO14443 NFCPollingISO15693 NFCPollingISO15693</span></strong></p>
<p>使用NFCTagReaderSession。Delegate为:NFCTagReaderSessionDelegate</p>
<p><strong><span style="color: rgba(153, 204, 255, 1)">1.初始化对象</span></strong></p>
<p><strong>self</strong>.session = [</p>
<p> initWithPollingOption:(NFCPollingISO14443 | NFCPollingISO15693 | NFCPollingISO15693) delegate:<strong>self</strong> queue:dispatch_get_main_queue()];</p>
<p><strong>self</strong>.session.alertMessage = @"读取卡片,请将卡片靠近手机";</p>
<p>[<strong>self</strong>.session beginSession]; //开始识别 弹出识别提示框</p>
<p>代理方法</p>
<p>-(<strong>void</strong>)tagReaderSession:(NFCTagReaderSession *)session didDetectTags:(NSArray<<strong>__kindof</strong> <strong>id</strong><NFCTag>> *)tags{</p>
<p> <strong>self</strong>.cuurentTag = ;</p>
<p>}</p>
<p><strong><span style="color: rgba(153, 204, 255, 1)">2、读取id(判断卡类型,以下以其中一种为例),内容获取方法同上</span></strong></p>
<p><strong>if</strong> (<strong>self</strong>.currentTag.type == NFCTagTypeMiFare) {</p>
<p> <strong>id</strong><NFCMiFareTag> mifareTag = [<strong>self</strong>.currentTag asNFCMiFareTag];</p>
<p> NSData *data = mifareTag.identifier</p>
<p>}</p>
<p><strong><span style="color: rgba(153, 204, 255, 1)">3.写入方法同上使用的tag需要为具体类型的tag,如:NFCMiFareTag</span></strong></p>
<p>;</p>
<p> </p><br><br>
来源:https://www.cnblogs.com/lxh123/p/11687301.html
頁:
[1]