Как добавить аксессуар 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, но это то, что исправило это для меня.

Другие вопросы по тегам