Как добавить аксессуар HomeKit с помощью HMAccessoryPayLoad?
Здравствуйте, в настоящее время я работаю над HomeKit, я хочу реализовать одну функцию с помощью HomeKit.
Мое требование - не использовать QR-код, я хочу добавить аксессуар. Поскольку у каждого аксессуара есть собственный URL-адрес, например,X-HM://XXXXXXXXX
связан с QR-кодом, т.е. HMAccessoryPayLoad
.
Я вижу очень похожие вопросы, на которые нет ответа.
Как добавить и настроить аксессуар с помощью HMAccessoryPayLoad
Откройте HomeKits X-HM:// URL-схему
Итак, согласно документации, я попытался использовать приведенный ниже код для добавления аксессуара. Я надеюсь, что с помощью этого кода мы сможем добавить аксессуар напрямую, не открывая вид камеры HomeKit по умолчанию.
if #available(iOS 11.3, *) {
let payload = HMAccessorySetupPayload.init(url: URL.init(string: "X-HM://XXXXXXXXXX")!)
home!.addAndSetupAccessories(with: payload!) { (accessories, error) in
if let error = error {
print("Error from addAndSetupAccessories:",error)
} else {
print("The accessory is added.")
}
}
} else {
// Fallback on earlier versions
}
После запуска этого кода он не дает ни ошибки, ни успеха. Я попытался проверить консоль, но она пуста.
Не могли бы вы помочь мне добавить аксессуар с использованием полезной нагрузки и без использования кода или открытия камеры по умолчанию.
3 ответа
Я получил электронное письмо со справкой от Apple, как включить com.apple.developer.homekit.allow-setup-payload, само право управляется командой MFI, поэтому вам нужно обратиться к представителю MFI, чтобы запросить право.
Я получил ответ от службы поддержки Apple, потому что в основном я был в той же ситуации.
По сути, этот API не работает, если вы не добавите Entitlement "com.apple.developer.homekit.allow-setup-payload" со значением, равным True.
Я знаю, что по этому поводу нет документации, но это все.
Более того, дело в том, что на данный момент я не знаю, как добавить это право в профиль обеспечения. Я обратился в службу поддержки Apple, и я обновлю эту ветку интеграции Xamarin iOS - HomeKit, как только у меня будет ответ.
Вы видите, что это правильный подход, потому что если вы попробуете его на симуляторе, он будет работать. Дело в том, что для использования его на реальном устройстве нам необходимо разрешение в профиле обеспечения.
Не уверен, что это по-прежнему актуально для кого-либо, но для того, чтобы это исправить, вам нужно добавить эту возможность в свой профиль подготовки в своей учетной записи разработчика Apple -> Сертификаты, Идентификатор и Профили -> выберите свой идентификатор -> перейдите к дополнительным возможностям Вкладка, и вы найдете там HomeKit AllowSetupPayload.
Я не уверен, почему это не включено в обычный HomeKit, но это то, что исправило это для меня.