Сбой Xamarin/iOS SharedAccessoryManager.ShowBluetoothAccessoryPicker

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

EAAccessoryManager.SharedAccessoryManager.ShowBluetoothAccessoryPicker(предикат, завершение)

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

  • БТ радио включено
  • Info.plist содержит Поддерживаемые внешние дополнительные протоколы.
  • Попытался убедиться, что вызов выполняется в потоке пользовательского интерфейса.
  • Пробовал звонить напрямую из события нажатия кнопки
  • Тот же базовый код в Swift/Xcode отлично работает
  • Убедитесь, что ARMv7 и ARM64 были выбраны в параметрах сборки в соответствии с этой статьей: wit">iPad Air – CoreBluetooth[ОШИБКА] Отмена средства выбора, так как не удалось связаться с Bluetooth

Ксамарин:

        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/Свифт:

        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

person Philip Anthony Muse    schedule 06.04.2016    source источник
comment
Не могли бы вы связать свой Info.plist как с Xamarin, так и с XCode?   -  person Prashant Cholachagudda    schedule 06.04.2016
comment
Я полагаю, вы называете это на устройстве? Какое устройство вы используете и какой abi вы запускаете на нем? Согласно этому ответу: stackoverflow.com/questions/20402973/, вам необходимо выполнить сборку как для 32-битной, так и для 64-битной версии. Поэтому в параметрах сборки убедитесь, что выбраны ARMv7 + ARM64.   -  person Cheesebaron    schedule 06.04.2016
comment
Спасибо за предложение. Ранее я нашел статью, на которую вы ссылались, и в параметрах сборки были выбраны ARMv7 и ARM64. Извиняюсь, что не опубликовал это изначально. Я отредактирую свой оригинальный пост, чтобы добавить эту информацию. Также устройства, которые я примерял. iPad Air 2 под управлением iOS версии 9.2.1. iPhone 6 под управлением iOS версии 9.3   -  person Philip Anthony Muse    schedule 06.04.2016


Ответы (1)


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

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

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

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

person Philip Anthony Muse    schedule 08.04.2016