【问题标题】:Xamarin iOS NFC Session is invalidated unexpectedlyXamarin iOS NFC 会话意外失效
【发布时间】:2019-11-14 16:39:02
【问题描述】:

有一个 Xamarin 表单项目并尝试将 NFC 读取挂接到应用程序。目前正在开发 iOS 原生方面。我已经在苹果门户端设置了所有的配置和选项,并且我在权利中添加了以下内容:

<dict>
  <key>com.apple.developer.nfc.readersession.formats</key>
   <array>
   <string>NDEF</string>
   </array>
 </dict>

也添加到 info.plist 中:

<key>NFCReaderUsageDescription</key>
<string>NFC tag to read NDEF messages into the application</string>

我的 iOS 原生依赖的代码如下:

[assembly: Dependency(typeof(RFIDScannerHelper))]
namespace MyProject.Mobile.Platform.iOS
{
public class RFIDScannerHelper : IRFIDScannerHelper
{        
    public bool hasRFID()
    {
        return true;
    }

    NFCNdefReaderSession Session;

    public void ScanRFID(Action<string> act, VisualElement el)
    {
        NFChecker nfchecker = new NFChecker();
        Session = new NFCNdefReaderSession(nfchecker, null, false);
        Session?.BeginSession();
    }       
}

public class NFChecker : NSObject, INFCNdefReaderSessionDelegate
{
    public Action<string> nfcFoundAction;

    public void DidDetect(NFCNdefReaderSession session, NFCNdefMessage[] messages)
    {
        foreach (NFCNdefMessage msg in messages)
        {
            if (msg.Records.Count() > 0)
            {
                nfcFoundAction.Invoke(new NSString(msg.Records[0].Payload, NSStringEncoding.UTF8));
            }
        }         
    }

    public void DidInvalidate(NFCNdefReaderSession session, NSError error)
    {
        var readerError = (NFCReaderError)(long)error.Code;
        if (readerError != NFCReaderError.ReaderSessionInvalidationErrorFirstNDEFTagRead &&
            readerError != NFCReaderError.ReaderSessionInvalidationErrorUserCanceled)
        {
        }            
    }
}
}

当它运行时,似乎一切都正确触发,但在会话开始时,它直接进入 ReaderDelegate 中的 DidInvalidate 方法,错误显示“会话意外无效”。

谁能告诉我我可能会错过什么?

更新

我还尝试了 xamarin 提供的示例 here。但我也收到完全相同的错误“会话意外无效”。我已经搞砸了我们的配置,但没有任何组合可以改变这个错误。有没有人让 xamarin 样本工作?

【问题讨论】:

  • 您是否在配置文件中启用了 NFC 标签读取功能并在将此应用安装到您的设备时使用该文件?
  • 已经设置好了。谢谢
  • 您的代码看起来不错,如果所有配置都已设置,它应该可以工作。你可以试试官方示例here 看看它是否适用于你?
  • 官方应用也有同样的问题...我能做些什么来解决它?

标签: xamarin.forms xamarin.ios nfc custom-renderer


【解决方案1】:

@matt,这是 Visual Studio 2019 错误。您应该在项目设置中选择 Entitlements.plist,但您不能,因为您应该插入路径的“条目”始终被禁用。我已经报告了问题

https://developercommunity.visualstudio.com/content/problem/752711/xamarinios-i-cant-set-entitlements.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多