NFCTagReader iOS 没有命中 didDetect 方法
NFCTagReader iOS Not hitting didDetect method
我正在做一个 POC,将 NFCTagReader 实现到 xamarin.ios 应用程序中。
https://developer.xamarin.com/samples/monotouch/ios11/NFCTagReader/
我从 xamarin 站点获取了 NFCTagReader 并设置了所有适当的配置设置以访问标签 reader。问题是,当我单击扫描 "Ready to Scan" window 时按预期弹出然后我扫描一个标签,它在屏幕上显示小勾号以表明它找到了但它从未闯入 DidDetect 方法我在委托中的代码。它将命中 DidInvalidate 方法并给出 ReaderSessionInvalidationErrorUserCanceled 的代码。
任何想法我错过了什么。以下是我的代码片段:
partial void Scan(UIBarButtonItem sender)
{
InvokeOnMainThread(() =>
{
Session = new NFCNdefReaderSession(this, null, true);
if (Session != null)
{
Session.BeginSession();
}
});
}
#endregion
#region NFCNDEFReaderSessionDelegate
public void DidDetect(NFCNdefReaderSession session, NFCNdefMessage[] messages)
{
foreach (NFCNdefMessage msg in messages)
{
DetectedMessages.Add(msg);
}
DispatchQueue.MainQueue.DispatchAsync(() =>
{
this.TableView.ReloadData();
});
}
public void DidInvalidate(NFCNdefReaderSession session, NSError error)
{
var readerError = (NFCReaderError)(long)error.Code;
if (readerError != NFCReaderError.ReaderSessionInvalidationErrorFirstNDEFTagRead &&
readerError != NFCReaderError.ReaderSessionInvalidationErrorUserCanceled)
{
InvokeOnMainThread(() =>
{
var alertController = UIAlertController.Create("Session Invalidated", error.LocalizedDescription, UIAlertControllerStyle.Alert);
alertController.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, null));
DispatchQueue.MainQueue.DispatchAsync(() =>
{
this.PresentViewController(alertController, true, null);
});
});
}
}
有点金发碧眼的时刻,正要结束这个问题,但我想会回答这个问题,以防其他人遇到和我一样的问题。
问题最终是由给我的标签是空白引起的。因此 phone 会在检测到标签时点击,但永远不会点击 didDetect 方法。一旦我使用 Android 标签编写器应用程序向 NFC 标签写入内容,DidDetect 就会按预期触发。
我正在做一个 POC,将 NFCTagReader 实现到 xamarin.ios 应用程序中。
https://developer.xamarin.com/samples/monotouch/ios11/NFCTagReader/
我从 xamarin 站点获取了 NFCTagReader 并设置了所有适当的配置设置以访问标签 reader。问题是,当我单击扫描 "Ready to Scan" window 时按预期弹出然后我扫描一个标签,它在屏幕上显示小勾号以表明它找到了但它从未闯入 DidDetect 方法我在委托中的代码。它将命中 DidInvalidate 方法并给出 ReaderSessionInvalidationErrorUserCanceled 的代码。
任何想法我错过了什么。以下是我的代码片段:
partial void Scan(UIBarButtonItem sender)
{
InvokeOnMainThread(() =>
{
Session = new NFCNdefReaderSession(this, null, true);
if (Session != null)
{
Session.BeginSession();
}
});
}
#endregion
#region NFCNDEFReaderSessionDelegate
public void DidDetect(NFCNdefReaderSession session, NFCNdefMessage[] messages)
{
foreach (NFCNdefMessage msg in messages)
{
DetectedMessages.Add(msg);
}
DispatchQueue.MainQueue.DispatchAsync(() =>
{
this.TableView.ReloadData();
});
}
public void DidInvalidate(NFCNdefReaderSession session, NSError error)
{
var readerError = (NFCReaderError)(long)error.Code;
if (readerError != NFCReaderError.ReaderSessionInvalidationErrorFirstNDEFTagRead &&
readerError != NFCReaderError.ReaderSessionInvalidationErrorUserCanceled)
{
InvokeOnMainThread(() =>
{
var alertController = UIAlertController.Create("Session Invalidated", error.LocalizedDescription, UIAlertControllerStyle.Alert);
alertController.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, null));
DispatchQueue.MainQueue.DispatchAsync(() =>
{
this.PresentViewController(alertController, true, null);
});
});
}
}
有点金发碧眼的时刻,正要结束这个问题,但我想会回答这个问题,以防其他人遇到和我一样的问题。
问题最终是由给我的标签是空白引起的。因此 phone 会在检测到标签时点击,但永远不会点击 didDetect 方法。一旦我使用 Android 标签编写器应用程序向 NFC 标签写入内容,DidDetect 就会按预期触发。