2016-04-06 6 views
3

Я портирую рабочий код Swift для Xamarin для моего проекта. Каждый раз, когда я вызываю эту функцию, она терпит неудачу, и диалог выбора аксессуаров не отображается.Xamarin/iOS SharedAccessoryManager.ShowBluetoothAccessoryPicker Fails

EAAccessoryManager.SharedAccessoryManager.ShowBluetoothAccessoryPicker (сказуемое, завершение)

Вот некоторые вещи, которые я подтвердил:

  • BT Радио на
  • Info.plist имеет Поддерживаемые внешние вспомогательные протоколы
  • Пробовал выполнение вызова по резьбе пользовательского интерфейса
  • Пробовал звонить ужасно ctly от события нажатия кнопки
  • Тот же самый основной код в 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

Не могли бы вы связать свой Info.plist как с Xamarin, так и с XCode? –

+5

Предполагаю, вы называете это на устройстве? Какое устройство вы используете и что вы используете на нем? В соответствии с этим ответом: http://stackoverflow.com/questions/20402973/ipad-air-corebluetootherror-cancelling-picker-as-we-couldnt-communicate-wit вам нужно построить как для 32, так и для 64-разрядных версий. Поэтому в настройках сборки убедитесь, что выбраны ARMv7 + ARM64. – Cheesebaron

+0

Спасибо за предложение. Ранее я нашел статью, на которую вы ссылались, и оба варианта ARMv7 и ARM64 выбраны в настройках сборки. Извините, что не публиковал это изначально. Я отредактирую свое оригинальное сообщение, чтобы добавить эту информацию.Кроме того, устройства, которые я пробовал. iPad Air 2, версия iOS версии 9.2.1. iPhone 6, работающий под управлением iOS версии 9.3 –

ответ

0

Хорошие люди в Xamarin помогли мне напрямую, поэтому я размещаю решение здесь. Они сказали, что это ошибка, которая уже исправлена. Обновление должно быть отправлено позднее в этом месяце с помощью автоматических обновлений (если это разрешено).

На данный момент они предоставили обходное решение, которое я проверил для работы со мной и моими коллегами по нашему проекту. Ниже приведены шаги обходного:

  1. Чистые проект
  2. Снимают Включение конкретного устройства строит в опциях проекта под IOS-сборки секции.
  3. Удалить старое приложение из устройства
  4. Теперь перестраивать/перераспределить и он должен работать.

Спасибо всем за ваши предложения и помощь. Кроме того, благодаря людям в Xamarin за их быстрый ответ.