美文网首页
iOS 11 CoreNFC 使用

iOS 11 CoreNFC 使用

作者: Goko | 来源:发表于2017-08-14 10:54 被阅读94次

    CoreNFC 有以下几点要注意

    1. 开启一个session,并且同时只能开启一个

    2. App完全在前台模式,切入后台失效

    3. session最多扫存活60s,超时必须重启新session

    4. NFC读取权限

    5. 目前只支持7、7P以及之后
      接下来我们开始Demo

    第一步:

    新建一个工程,然后打开NFC的配置


    第二步:

    在你的info.plist中添加:
    Privacy - NFC Scan Usage Description
    NFC usage description
    com.apple.developer.nfc.readersession.formats
    NDEF

    第三步:

    导入CoreNFC.framework 的框架

    image.png

    第四步:

    实现代码:

    #import <CoreNFC/CoreNFC.h>
    #import "ViewController.h"
    
    @interface ViewController ()<NFCNDEFReaderSessionDelegate>
    
    @property(nonatomic,strong)NFCNDEFReaderSession * nfcSession;
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        self.nfcSession = [[NFCNDEFReaderSession alloc] initWithDelegate:self queue:dispatch_queue_create(NULL, DISPATCH_QUEUE_CONCURRENT) invalidateAfterFirstRead:NO];
        [self.nfcSession beginSession];
        
    }
    -(void)readerSession:(NFCNDEFReaderSession *)session didDetectNDEFs:(NSArray<NFCNDEFMessage *> *)messages{
        [messages enumerateObjectsUsingBlock:^(NFCNDEFMessage * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
            [obj.records enumerateObjectsUsingBlock:^(NFCNDEFPayload * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
                NSLog(@"typeNameFormat:%d",obj.typeNameFormat);
                NSLog(@"payload:%@",obj.payload);
                NSLog(@"type:%@",obj.type);
                NSLog(@"identifier:%@",obj.identifier);
            }];
        }];
    }
    -(void)readerSession:(NFCNDEFReaderSession *)session didInvalidateWithError:(nonnull NSError *)error{
        NSLog(@"error:%@",error.localizedDescription);
    }
    @end
    

    相关文章

      网友评论

          本文标题:iOS 11 CoreNFC 使用

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