iOS11开放了NFC的功能,但是仅限于iPhone7和7plus上使用,下面就介绍一下它的使用。(这里我用xcode11.2,iOS13.1)
开发者证书开通nfc权限
#import <CoreNFC/CoreNFC.h>
info.plist加入下边的字段:
com.apple.adersession.formats
数组里再加入
NDEF
Privacy - NFC Scan Usage Description
we are going to use your nfc
一:获取UID;
Delegate为:NFCTagReaderSessionDelegate
@property (strong, nonatomic)NFCTagReaderSession *session;
@property(strong,nonatomic)id<NFCTag> cuurentTag;
if (@available(iOS 13.0, *)) {
self.session = [[NFCTagReaderSession alloc]
initWithPollingOption:(NFCPollingISO14443 | NFCPollingISO15693 | NFCPollingISO15693) delegate:self queue:dispatch_get_main_queue()];
} else {
// Fallback on earlier versions
}
}
if (@available(iOS 11.0, *)) {
if (adingAvailable) {
self.session.alertMessage = @"把卡放到手机背面";
[self.session beginSession];//启动 Session
} else {
NSLog(@"此设备不支持NFC");
}
} else {
// Fallback on earlier versions
}
-(void)readerSessionDidBecomeActive:(NFCNDEFReaderSession *)session{
NSLog(@"开始扫描");
}
-(void)tagReaderSession:(NFCTagReaderSession *)session didDetectTags:(NSArray<__kindof id<NFCTag>> *)tags{
NSLog(@"%@",tags);
self.cuurentTag = [tags firstObject];
id<NFCMiFareTag> mifareTag = [self.cuurentTag asNFCMiFareTag];
NSData *data = mifareTag.identifier;
NSString *string = [self convertDataBytesToHex:data];
NSLog(@"result---%@",string);
}
- (NSString *)convertDataBytesToHex:(NSData *)dataBytes {
if (!dataBytes || [dataBytes length] == 0) {
return @"";
}
NSMutableString *hexStr = [[NSMutableString alloc] initWithCapacity:[dataBytes length]];
[dataBytes enumerateByteRangesUsingBlock:^(const void *bytes, NSRange byteRange, BOOL *stop) {
unsigned char *dataBytes = (unsigned char *)bytes;
for (NSInteger i = 0; i < byteRange.length; i ++) {
NSString *singleHexStr = [NSString stringWithFormat:@"%x", (dataBytes[i]) & 0xff];
if ([singleHexStr length] == 2) {
[hexStr appendString:singleHexStr];
} else {
[hexStr appendFormat:@"0%@", singleHexStr];
}
}
}];
return hexStr;
}
恭喜你,已经获取到了。。。
本文发布于:2024-02-02 00:12:00,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170680965240090.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |