【问题标题】:NFCTagReader iOS Not hitting didDetect methodNFCTagReader iOS 未命中 didDetect 方法
【发布时间】:2018-01-30 23:19:33
【问题描述】:

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

https://developer.xamarin.com/samples/monotouch/ios11/NFCTagReader/

我已从 xamarin 站点获取 NFCTagReader,并设置了所有适当的配置设置以访问标签阅读器。问题是,当我单击扫描时,会按预期弹出“准备扫描”窗口,然后我扫描一个标签,它会在屏幕上显示小勾号以表明它已找到,但它永远不会闯入我的代码的 DidDetect 方法代表。它将命中 DidInvalidate 方法并给出 ReaderSessionInvalidationErrorUserCanceled 的代码。

我缺少的任何想法。以下是我的代码 sn-p:

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


        }




    }

【问题讨论】:

  • 您使用的是什么设备,因为它需要运行 iOS 11 的 iPhone 7、7 Plus、8、8 Plus 或 X?另外,我会再检查一次Xamarin docs,以确保您的测试设置符合所有限制并且配置正确。
  • 您找到解决方案了吗?在我的情况下,它也显示了它的工作原理,但它从未命中 didinvalidate 或 diddetect。

标签: ios xamarin xamarin.ios nfc core-nfc


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 2013-01-31
    • 1970-01-01
    • 2014-06-14
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    相关资源
    最近更新 更多