ios - NFCTagReader iOS 没有命中 didDetect 方法

标签 ios xamarin xamarin.ios nfc core-nfc

我正在做一个 POC,将 NFCTagReader 实现到 xamarin.ios 应用程序中。

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);
                });
            });


        }




    }

最佳答案

有点金发碧眼的时刻,正要结束这个问题,但我想会回答这个问题,以防万一其他人遇到和我一样的问题。

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

关于ios - NFCTagReader iOS 没有命中 didDetect 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48532064/

相关文章:

objective-c - 在这种情况下,主队列/当前队列与主线程/后台线程之间的区别?

android - 通过 Xamarin 和 C# 使用和构建第 3 方控件

c# - Xamarin 中的 SSL 握手失败

objective-c - 在 UITableView 中插入新行的技术

xamarin.ios - 带有 MonoTouch 的 OpenFeint

android - PhoneGap 对比安卓和 iOS

ios - 不推荐使用Firebase Analytics setScreenName

xamarin - 如何在xamarin表单的工具栏中添加选择器

c# - CGPDFDocument 和 CGPDFPage 的 MonoTouch CoreGraphics PDF 内存问题

objective-c - ios - 如何连接字符串以创建 url?