Xamarin / iOS SharedAccessoryManager.ShowBluetoothAccessoryPicker 失败

4
我正在为我的项目将可用的Swift代码移植到Xamarin。每次调用此函数时,它都会失败并且附件选择器对话框不会显示。
EAAccessoryManager.SharedAccessoryManager.ShowBluetoothAccessoryPicker(predicate, completion)
以下是一些我已确认的事项:
- BT无线电打开 - Info.plist有“支持的外部配件协议” - 尝试确保在UI线程上进行调用 - 尝试直接从按钮单击事件调用 - 在Swift/Xcode中相同的基本代码运行良好 - 确保根据此文章在构建选项中选择了ARMv7和ARM64:iPad Air - CoreBluetooth[ERROR] Cancelling picker as we couldn't communicate with Bluetooth 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

2
请问您能否链接一下 Xamarin 和 XCode 的 Info.plist 文件呢? - Prashant Cholachagudda
5
你是在设备上调用这个吗?你使用的是什么设备和什么ABI?根据这个答案:https://dev59.com/SHnZa4cB1Zd3GeqPwOoO,你需要为32位和64位版本都构建。所以在“Build Options”中确保选择了ARMv7 + ARM64。 - Cheesebaron
谢谢你的建议。我之前已经找到了你提到的那篇文章,并在构建选项中选择了ARMv7和ARM64。对于没有最初发布这些信息表示歉意,我会编辑我的原始帖子来添加这些信息。另外,我尝试过的设备有iPad Air 2,运行iOS版本9.2.1,以及iPhone 6,运行iOS版本9.3。 - Philip Anthony Muse
1个回答

0

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

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

  1. 清理项目
  2. 在iOS-Build部分的项目选项中取消选中启用特定设备构建
  3. 从设备中删除旧应用程序
  4. 现在,重新构建/重新部署,它应该可以工作了。

感谢大家的建议和帮助。同时,也感谢Xamarin的工作人员及时回应。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接