Xamarin/iOS共享访问管理器.显示蓝牙访问选择器失败



我正在为我的项目将Swift代码移植到Xamarin。每次调用此函数时,它都会失败,并且附件选择器对话框不会显示。

EAAccessoryManager.SharedAccessoryManager.ShowBluetoothAccessoryPicker(谓词,完成)

以下是我确认的一些事情:

  • BT收音机打开
  • Info.plist具有支持的外部附件协议
  • 已尝试确保在UI线程上完成调用
  • 尝试直接从按钮单击事件调用
  • Swift/Xcode中相同的基本代码运行良好
  • 确保在本文的构建选项中选择了ARMv7和ARM64:iPad Air-CoreBluetooth[错误]取消选择器,因为我们不能';t使用蓝牙通信

Xamarin:

        EAAccessoryManager.SharedAccessoryManager.ShowBluetoothAccessoryPicker(null, completion: ((Foundation.NSError error) => {
            Console.WriteLine("My callback");   
            if (error != null) {
                Console.WriteLine(String.Format("Error code: {0} Desc: {1}", error.Code, error.DebugDescription));
                Console.WriteLine("Failed? " + EABluetoothAccessoryPickerError.Failed.ToString());
                Console.WriteLine("Failed? " + Convert.ToInt64(EABluetoothAccessoryPickerError.Failed));
            }
        }));

Xcode/Swift:

        EAAccessoryManager.sharedAccessoryManager().showBluetoothAccessoryPickerWithNameFilter(nil) { (error) -> Void in
        if error != nil {
            NSLog("Error code: (error!.code) (error.debugDescription)")
        }
    }

Xamarin代码不会显示选择器,并且总是会失败。

2016-04-05 19:54:02.136 ASGDemo.iOS[6383:2146384] Connect Clicked
2016-04-05 19:54:06.139 ASGDemo.iOS[6383:2146384] BTM: attaching to BTServer
2016-04-05 19:54:09.157 ASGDemo.iOS[6383:2146384] BTM: session attach called back with BT_SESSION_ATTACHED (fffffed0)
2016-04-05 19:54:09.158 ASGDemo.iOS[6383:2146384] BTM: attemping to re-attach in 1 seconds
2016-04-05 19:54:09.242 ASGDemo.iOS[6383:2146384] My callback
2016-04-05 19:54:09.250 ASGDemo.iOS[6383:2146384] Error code: 3 Desc: Error Domain=EABluetoothAccessoryPickerErrorDomain Code=3 "(null)"
2016-04-05 19:54:09.253 ASGDemo.iOS[6383:2146384] Failed? Failed
2016-04-05 19:54:09.254 ASGDemo.iOS[6383:2146384] Failed? 3

Xamarin的好心人直接帮助了我,所以我在这里发布了解决方案。他们说这是一个已经修复的错误。更新应在本月晚些时候通过自动更新发布(如果您已启用)。

目前,他们提供了一个变通方法,我已经验证了它可以为我和我的同事在我们的项目中工作。以下是解决方法的步骤:

  1. 清理项目
  2. 取消选中"iOS Build"部分下项目选项中的"Enable device specific builds"
  3. 从设备中删除旧应用程序
  4. 现在,重建/重新部署,它应该可以工作了

感谢大家的建议和帮助。同时,也要感谢Xamarin的员工们的迅速响应。

最新更新