NFCTagReader iOS没有点击didDetect方法

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)

Mat*_*att 2

有点金发时刻,只是想结束这个问题,但我想回答这个问题,以防其他人遇到和我一样的问题。

问题最终是由于给我的标签是空白而引起的。因此,手机在检测到标签时会点击,但永远不会调用 didDetect 方法。当我使用 Android 标签编写器应用程序向 NFC 标签写入内容后,DidDetect 就会按预期触发。