Расширению iOS8 нужен собственный профиль подготовки?

Я запускаю расширение для iOS 8, но не могу запустить его на своем устройстве. Ошибка при попытке запустить:

Подходящие профили обеспечения не найдены

Профиль подготовки, указанный в настройках вашей сборки («ExtensionName»), имеет идентификатор приложения net.company.AppName, который не соответствует идентификатору вашего пакета net.company.AppName.ExtensionName. Xcode может решить эту проблему, загрузив новый профиль подготовки из Центра участников.

  1. Нужен ли мне отдельный профиль подготовки как для основного приложения, так и для расширения?
  2. Должны ли они совместно использовать идентификатор пакета (по умолчанию он добавляет имя расширения к идентификатору пакета, поэтому, возможно, нет)?
  3. Если у него есть отдельный идентификатор пакета, как это отражается в профиле обеспечения (если есть отдельный)?

person Neil Coxhead    schedule 15.08.2014    source источник
comment
Я даже не могу сосчитать, сколько раз я добавлял устройство в профиль обеспечения и забыл добавить устройство в профиль расширения. Он не будет установлен (развертывание Ad-hoc/Enterprise), если оба профиля подготовки не действительны для устройства.   -  person Andrew    schedule 27.09.2014


Ответы (5)


Казалось бы, Xcode предпочел бы, чтобы это было так, однако ничто не мешает вам использовать профиль с подстановочными знаками, пока вы не захотите сделать Adhoc или Release в App Store. Однако, что касается вашего вопроса, для каждой цели, которая у вас есть, вам нужен профиль и идентификатор пакета. Так что да, вам «нужен» еще один профиль подготовки для вашего расширения, хотя я ожидаю, что Apple упростит этот процесс.

В целом, вероятно, лучше всего использовать профиль разработчика WildCard, пока вам не понадобится профиль обеспечения. Помните, что это всего лишь бета-версия, и они все еще работают почти над всем.

person Oxcug    schedule 15.08.2014
comment
Попытка заархивировать сегодня (выпуск Xcode 6 GM и iOS 8 GM), и он хочет подготовить профили для расширений. Вздох. - person jjxtra; 10.09.2014
comment
Профили WildCard, похоже, не поддерживают AppGroups или, возможно, любые другие типы прав, поэтому, если вы используете эту функцию, вам необходимо создать явный профиль для вашего приложения и по одному для каждого расширения. - person Rupert Rawnsley; 07.10.2015
comment
Этот ответ все еще актуален? - person Brad Thomas; 20.09.2016
comment
@BradThomas Да :). Они не сильно изменились с точки зрения процесса подписания кода, кроме того факта, что у них есть большая толстая кнопка автоматизации. Что я настоятельно рекомендую использовать, если вы можете. - person Oxcug; 23.09.2016

Расширения — это отдельные цели от основного приложения. Вы должны обращаться с ними так, как если бы они были отдельными приложениями с разными идентификаторами пакетов и разными профилями подготовки.

Лучше всего, если вы просто создадите их во время тестирования вместо использования подстановочных знаков, потому что вам может потребоваться протестировать некоторые возможности, которые вы включили, например группу приложений, чтобы ваше расширение и хост-приложение могли получить доступ к одному и тому же контейнеру.

Обратите внимание: если вы хотите, чтобы какие-либо возможности были включены для вашего хост-приложения и расширений, вы должны включить их отдельно для всех из них.

person honcheng    schedule 26.09.2014
comment
Нужно ли подписывать расширения с профилями обеспечения хост-приложения? - person Matt; 15.07.2015
comment
мне нужно заархивировать отдельное расширение? или просто заархивировать основное приложение и загрузить в магазин приложений? - person Shauket Sheikh; 05.06.2017
comment
@Matt Профиль обеспечения состоит из: 1 или более сертификатов + идентификатор приложения + список устройств. Если вы не используете подстановочные знаки для своего идентификатора приложения, то AppID вашего хост-приложения и расширения приложения не совпадают. Таким образом, вы не можете подписать профиль подготовки хост-приложения. Но сертификат тот же. Список устройств может быть таким же - person Honey; 01.06.2020

Я нашел эту документацию, относящуюся к расширениям приложений< /а>. Если вы читаете нижнюю часть страницы 20, кажется, что на самом деле предлагается использовать тот же сертификат распространения. Я пошел дальше и изменил идентификатор пакета для расширения Today Extension, чтобы расширить возможности своих приложений. Например, com.DeveloperName.AppName.TodayExtension создал идентификатор приложения в Центре разработки, чтобы соответствовать этому , и создал для него профиль распространения. Мое приложение +Quotes был успешно обновлен, выполнив следующие действия. У меня не было никаких проблем с приложением или расширением, но Xcode, похоже, немного сбивается с толку при попытке автоматически назначить правильные профили подготовки для моего расширения. Выбор их вручную решает эту проблему.

person Daniel Storm    schedule 11.09.2014
comment
Другой пользователь сообщил, что вам нужны отдельные сертификаты: stackoverflow.com/a/25981474/1633251 - person David H; 22.10.2014
comment
Другой пользователь сообщил, что вам нужны отдельные профили настройки. Он ничего не сказал об отдельных сертификатах. - person Geoff Hackworth; 17.12.2014
comment
TodayExtension — не лучшее имя, потому что это имя исполняемого файла в консоли Xcode для вывода отладки. Если слишком много разработчиков будут использовать это имя процесса, отладка станет сложнее. - person malhal; 23.07.2015
comment
Ссылка на расширения приложений не работает - person Brad Thomas; 20.09.2016
comment
Даниил, ты прав. Xcode серьезно раздражает в этом случае. У меня тоже работал выбор вручную. - person Shahid Iqbal; 06.03.2017

Вам нужен отдельный профиль подготовки для вашего расширения, но с тем же сертификатом, что и у вашего основного приложения. Когда вы создаете новый профиль обеспечения, идентификатор приложения вашего расширения также появится в списке, выберите его и перейдите к созданию нового профиля обеспечения.

Также выберите этот профиль обеспечения в цели вашего расширения.

введите описание изображения здесь

person Vaibhav Saran    schedule 22.06.2016
comment
Я бы также добавил, что для каждого расширения необходимо создать новый идентификатор приложения, чтобы оно отображалось в списке идентификаторов приложений. - person Vitalii; 19.01.2017

Я просто использую «Автоматически управлять входом в систему», пока мне не нужно нажать на магазин приложений. Это работает из коробки с симуляторами, еще не пробовал с устройствами.

Несколько советов по сборке Appstore:

  1. Я создал один подстановочный идентификатор для каждого расширения уведомлений, но префикс этого идентификатора пакета подстановочных знаков должен соответствовать идентификатору пакета вашего приложения в качестве префикса. Если это не так, появится следующая ошибка: "Идентификатор пакета встроенного двоичного файла не имеет префикса идентификатора пакета родительского приложения". Таким образом, если идентификатор пакета вашего приложения: "com.companyName.appName", подстановочный идентификатор пакета для вашего расширения должен быть "com.companyName.appName.*". >. Затем вы можете заменить * на определенное расширение уведомления в XCode. Обратите внимание, что Apple разрешает использовать только одну точку ("".") после идентификатора пакета приложения для именования идентификатора пакета вашего расширения.
  2. Версия и номер сборки вашего расширения должны совпадать с версией вашего приложения.
  3. После создания идентификатора приложения создайте с ним профиль обеспечения распространения и используйте его в XCode.
person nr5    schedule 28.05.2019