我正在尝试使用 iOS 13 中的核心 NFC 擦除 NFC 标签上的所有内容。如果我查看编写标签的文档,我会得到以下功能:
- (void)writeNDEF:(NFCNDEFMessage *)ndefMessage completionHandler:(void (^)(NSError *))completionHandler;
我通常使用以下函数创建一个 NFCNDEFMessage:
- (instancetype)initWithNDEFRecords:(NSArray<NFCNDEFPayload *> *)records;
InitwithNDEFRecords 声明记录是:
An array of payload objects for the message. To create an empty message, pass in an empty array.
因此我目前的功能是:
//Create an array containing the records we will write.
NSMutableArray* writeArray = [[NSMutableArray alloc] init];
[tag writeNDEF:[[NFCNDEFMessage alloc] initWithNDEFRecords:writeArray] completionHandler:^(NSError* error) {}];
我相信代码将传入一个空数组,它不会在标签上创建一个空消息来擦除它。我在完成块内收到一个错误,写入日志时如下:
Error Domain=NFCError Code=401 "Stack Error" UserInfo={NSLocalizedDescription=Stack Error, NSUnderlyingError=0x280fecc60 {Error Domain=nfcd Code=15 "Stack Error" UserInfo={NSLocalizedDescription=Stack Error}}}
如果我没有传入一个空数组并且实际上有一些记录要写入,它会正确写入标签。
我看到 App Store 上的应用程序确实支持擦除标签,例如“NFC 工具”。我联系了开发人员,但他没有回复我的电子邮件,说明他是如何做到的。
如何在 iOS 13 上擦除标签?