Core NFC是在iOS11中引入,用于處理NFC閱讀Tag。目前NFC只開啟了讀權(quán)限侵俗,據(jù)分析應(yīng)該是為了Apply Pay的安全問題背镇。使用NFC前需要注意以下幾點(diǎn):
1咬展、需要開啟一個(gè)session,與其他session類似瞒斩,同時(shí)只能開啟一個(gè)破婆。
2、需要App完全在前臺(tái)模式胸囱。
3祷舀、每個(gè)session最多掃描60s,超時(shí)需再次開啟新session烹笔。
4裳扯、配置讀取單個(gè)或多個(gè)Tag,配置為單個(gè)時(shí)箕宙,會(huì)在讀取到第一個(gè)Tag時(shí)自動(dòng)結(jié)束session嚎朽。
5、隱私描述柬帕。
第一步需要配置Capabilitles哟忍。使用NFC需要配置Capabilitles,這會(huì)自動(dòng)為你生成entitlements文件中的必要配置陷寝。
2
第二步打開隱私相關(guān)設(shè)置锅很。向info.plist中添加Privacy - NFC Scan Usage Description。
第三步激活A(yù)pp ID的相關(guān)功能凤跑。如下圖所示爆安。
第四步在項(xiàng)目中引入Core NFC。引入Core NFC和相關(guān)代理delegate.
#import "ViewController.h"
#import <CoreNFC/CoreNFC.h>
@interface ViewController ()<NFCNDEFReaderSessionDelegate>
@end
第五步代碼實(shí)現(xiàn)仔引。值得注意的是:1扔仓、當(dāng)invalidateAfterFirstRead為YES時(shí)表示會(huì)在讀取到第一個(gè)Tag時(shí)自動(dòng)結(jié)束session褐奥,否則會(huì)話會(huì)持續(xù)。2翘簇、NFC只能在iPhone7及其以上設(shè)備中使用撬码。
- (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);
}