美文网首页
iOS11新特性NFC检测

iOS11新特性NFC检测

作者: 素颜约定 | 来源:发表于2018-04-17 10:31 被阅读0次

    Core NFC是在iOS11中引入,用于处理NFC阅读Tag。目前NFC只开启了读权限,据分析应该是为了Apply Pay的安全问题。使用NFC前需要注意以下几点:

    1、需要开启一个session,与其他session类似,同时只能开启一个。

    2、需要App完全在前台模式。

    3、每个session最多扫描60s,超时需再次开启新session。

    4、配置读取单个或多个Tag,配置为单个时,会在读取到第一个Tag时自动结束session。

    5、隐私描述。

    第一步需要配置Capabilitles。使用NFC需要配置Capabilitles,这会自动为你生成entitlements文件中的必要配置。

    2

    第二步打开隐私相关设置。向info.plist中添加Privacy - NFC Scan Usage Description。

    第三步激活App ID的相关功能。如下图所示。

    第四步在项目中引入Core NFC。引入Core NFC和相关代理delegate.

    #import "ViewController.h"
    #import <CoreNFC/CoreNFC.h>
    @interface ViewController ()<NFCNDEFReaderSessionDelegate>
    @end

    第五步代码实现。值得注意的是:1、当invalidateAfterFirstRead为YES时表示会在读取到第一个Tag时自动结束session,否则会话会持续。2、NFC只能在iPhone7及其以上设备中使用。

    - (IBAction)click:(id)sender {

    if (@available(ios 11.0,*)) {

    if ([NFCNDEFReaderSession readingAvailable]) {

    NFCNDEFReaderSession * message = [[NFCNDEFReaderSession alloc] initWithDelegate:self queue:nil invalidateAfterFirstRead:YES];

    [message beginSession];

    }

    }

    }

    #pragma arguments

    -(void)readerSession:(NFCNDEFReaderSession *)session didDetectNDEFs:(NSArray *)messages

    {

        if (@available( ios 11, *)) {

            for (NFCNDEFMessage * message in messages) {

                for (NFCNDEFPayload * payload in message.records) {

                    NSLog(@"type===%@",payload.type);

                    NSLog(@"typeNameFormat====%d",payload.typeNameFormat);

                    NSLog(@"identifier===%@",payload.identifier);

                    NSLog(@"payload===%@",payload.payload);

                }

            }

        }

    }

    -(void)readerSession:(NFCNDEFReaderSession *)session didInvalidateWithError:(NSError *)error

    {

        NSLog(@"error=====%@",error);

    }

    相关文章

      网友评论

          本文标题:iOS11新特性NFC检测

          本文链接:https://www.haomeiwen.com/subject/zvlukftx.html