it-swarm.com.ru

Идентификаторы комплекта расширений WatchKit

Я пытаюсь создать свое приложение, но оно не удалось. Мне показывают сообщение ниже.

ошибка: Расширение WatchKit не содержит приложений WatchKit, чьи идентификаторы комплекта соответствуют "com.domain.appname.watchkitapp". Убедитесь, что значение WKAppBundleIdentifier в Info.plist вашего расширения WatchKit соответствует значению CFBundleIdentifier в Info.plist вашего приложения WatchKit.

Я недавно изменил "com.domain.appname.watchkitapp" на "com.domain.differentappname.watchkitapp".

Я не могу найти, где это изменить.

47
Tom Coomer

Вы должны быть осторожны при изменении идентификаторов пакетов, вот как они должны быть установлены (вам нужно изменить каждый идентификатор в Info.plist для приложения iPhone , для Расширения Watchkit и для Watchkit App ):

iPhone Application Info.plist:

Установите любой идентификатор пакета по своему усмотрению (свойство «Идентификатор пакета»).

Пример:

Bundle identifier: com.fruitcompany.orange

WatchKit App Info.plist

Идентификатор пакета здесь должен иметь префикс идентификатора приложения для iPhone, например так (пример):

Bundle identifier: com.fruitcompany.orange.watchkit

Вам также необходимо изменить WKCompanionAppBundleIdentifier, который должен совпадать с идентификатором пакета приложения iPhone, например:

WKCompanionAppBundleIdentifier: com.fruitcompany.orange

Расширение Watchkit Info.plist:

Идентификатор пакета здесь должен иметь префикс идентификатора приложения для iPhone, например так (пример):

Bundle identifier: com.fruitcompany.orange.watchkit.extension

Вам также необходимо установить WKAppBundleIdentifier в атрибуте NSExtension.

WKAppBundleIdentifier

Идентификатор WKAppBundleIdentifier должен совпадает с идентификатором пакета приложения WatchKit следующим образом:

WKAppBundleIdentifier: com.fruitcompany.orange.watchkit
161
Dejan Skledar

Во-первых, позвольте мне подчеркнуть отличный ответ на этой странице от @DejanSkledar, так как все места, отмеченные в ответе, важны.

Тем не менее, точная настройка в этом ответе не было достаточно для меня. Я хотел бы дополнить этот ответ и указать, что начиная с watchkit 2, по-видимому, требуется иерархия, необходимая при работе от приложения к приложению наблюдения, а затем, наконец, к расширению приложения с точки зрения идентификатора пакета.

Вот настройки в каждом из соответствующих им файлов info.plist, которые работали для меня после того, как я нашел ответ edwardmp по связанной проблеме

Идентификатор пакета приложения для iPhone: com.domain.yourapp

Смотреть идентификатор приложения: Com.domain.yourapp.watchkit

Идентификатор пакета расширения Watchkit: Com.domain.yourapp.watchkit.extension

Как вы можете видеть, приложение для iPhone имеет приложение watchkit, которое само по себе имеет расширение watchkit, и каждый из этих уровней должен быть отражен в каждом из их соответствующих идентификаторов пакета.

Завершая отношения, приложение для часов должно указывать на приложение iPhone, к которому оно принадлежит, используя его (WKCompanionAppBundleIdentifier), а расширение для часов должно указывать на приложение для часов, которому оно принадлежит (WKAppBundleIdentifier.)

Смотреть WKCompanionAppBundleIdentifier приложения: Com.domain.yourapp

Смотреть расширение приложения WKAppBundleIdentifier: Com.domain.yourapp.watchkit

Надеюсь, это сэкономит кому-то время, так как мне пришлось бороться с этим несколько часов :(

14
AdamJonR

Вам также может понадобиться изменить ключ WKCompanionAppBundleidentifier в p.list информации о сопутствующем приложении iOS проекта, чтобы он соответствовал ключу WKAppBundleIdentifer в файле info.plist расширения набора часов. Я узнал об этом, когда скопировал предыдущий проект набора часов и изменил WKAppBundleIdentifier в расширении info.plist набора часов, чтобы он соответствовал идентификатору пакета в info.plist набора часов, и проект все еще получил ту же ошибку. Вам нужно перейти в Finder, найти сопутствующий проект iOS info.plist и дважды щелкнуть по нему, а затем при необходимости изменить ключ WKCompanionAppBundleIdentifer. Я не смог увидеть этот ключ, посмотрев на файл info.plist в Xcode.

1
Nelson Capes

Таким образом, вы не обязательно что-то меняете, когда просто хотите работать на тестовых устройствах. Но вам нужно запросить еще два профиля обеспечения, чтобы протестировать приложение для часов. Эти два дополнительных идентификатора могут быть получены из целевого объекта расширения и целевого приложения наблюдения. Это то же самое, что вам нужно сделать, когда вы хотите загрузить приложение для часов в App Store

0
Lucas Huang