Mat*_*att 9 nfc xamarin.ios ios xamarin core-nfc
我正在做一个将NFCTagReader实现到xamarin.ios应用程序的POC.
https://developer.xamarin.com/samples/monotouch/ios11/NFCTagReader/
我从xamarin网站上获取了NFCTagReader并设置了所有相应的配置设置以访问标签阅读器.问题是,当我点击扫描时,按预期弹出"准备扫描"窗口,然后我扫描一个标签,它在屏幕上显示小刻度,表明它已找到,但它从未打破我的代码的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);
});
});
}
}
Run Code Online (Sandbox Code Playgroud)
有点金发时刻,只是想结束这个问题,但我想回答这个问题,以防其他人遇到和我一样的问题。
问题最终是由于给我的标签是空白而引起的。因此,手机在检测到标签时会点击,但永远不会调用 didDetect 方法。当我使用 Android 标签编写器应用程序向 NFC 标签写入内容后,DidDetect 就会按预期触发。
| 归档时间: |
|
| 查看次数: |
440 次 |
| 最近记录: |