iCloud включен в Xcode, но не подключается к магазину приложений.Как исправить? - PullRequest
0 голосов
/ 21 февраля 2019

Я изо всех сил пытался заставить свое приложение для iOS включить iCloud.

Я следовал документации и включил iCloud с CloudKit в моем проекте в Xcode.

Но когда я затем загружаю приложение в App Store Connect из XCode, iCloud там нет.Он не отображается в разделе «Возможности», и при использовании приложения через TestFlight iCloud не включается.

Есть ли что-то особенное, что мне нужно сделать?Использование Xcode версии 10.1 + Mac OS High Sierra 10.13.

Примечание. Ниже приведено множество подробностей.Если вы хотите пропустить детали, сводка сводится к тому, что я пошел прямым путем к включению iCloud, но он еще не отображается в App Store Connect или на устройстве через TestFlight.


Шаги:

Я ознакомился с документацией и попробовал несколько решений, таких как здесь и здесь .

1) Я открываю свой проект в xcode.

2) На панели «Возможности xcode» я включаю iCloud, проверяю CloudKit и использую контейнер по умолчанию (контейнер с именем: «iCloud.com. [Идентификатор пакета]»).

3) Вdeveloper.apple.com, я проверяю, что идентификатор приложения, который я использую, автоматически включил iCloud и CloudKit (там он отображается зеленым цветом).

4) На developer.apple.com создайте профиль обеспечения с помощью этогоидентификатор приложенияiCloud указан в списке «Включенные службы» для этого профиля.

5) Вернувшись в xcode, на панели Общие отключите автоматическое управление подписью и выберите этот профиль обеспечения.Если я выберу «автоматически управлять подписью», он использует учетную запись «iPhone Developer» для сертификата подписи, что кажется неправильным;когда я выполняю ручную подпись и выбираю обновленный профиль prov, сертификат подписи корректно гласит «Распространение через Iphone: [название команды]»

6) Приложение «Архив»: продукт -> архив.(Здесь я дважды проверил, что iCloud остается выбранным на панели «Возможности», без ошибок)

7) Загрузить приложение: окно -> органайзер -> выбрать архив, нажать кнопку распространения приложения и взять его оттуда.

Результат: Build успешно загружен в App Store Connect, но нигде не видно поддержки iCloud.

Что еще мне нужно сделать?

ПРИМЕЧАНИЯ:

Когда я заархивирую приложение, файл разрешений (указанный в разделе «AppName -> AppName -> AppName.entitlements)» содержит следующее:

<dict>
    <key>aps-environment</key>
    <string>development</string>
    <key>com.apple.developer.icloud-container-identifiers</key>
    <array>
        <string>iCloud.$(CFBundleIdentifier)</string>
    </array>
    <key>com.apple.developer.icloud-services</key>
    <array>
        <string>CloudKit</string>
    </array>
    <key>com.apple.developer.ubiquity-kvstore-identifier</key>
    <string>$(TeamIdentifierPrefix)$(CFBundleIdentifier)</string>
</dict>
</plist>

aps-среда говорит «разработка».Я попытался заархивировать и загрузить этот способ, но он не работал, чтобы включить icloud в App Store Connect.Я также пытался вручную переключить это на «производство» и архивирование / выгрузку - но результат там был тот же.

- Базовое приложение сделано с Nativescript, но я не думаю, что это должноважно для этого этапа, так как я загружаю через xcode.(Я уже просмотрел информацию по Nativescript по этому вопросу.)

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

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

Я выяснил здесь существенную проблему: я путал то, что, по сути, два разных iClouds (или, по крайней мере, два совершенно разных способа использовать iCloud в качестве разработчика).

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

Без этой информации некоторые люди были сбиты с толку, говоря, что iCloud просто «автоматически работает», в то время как другие углубляются в необходимость настройки.Они оба были правы - просто говорили о разных вещах.

Итак, это то, чего я раньше не понимал: это два разных использования iCloud с точки зрения разработчика:

1) Автоматическое резервное копирование iCloud .Это общесистемная функция, которая позволяет пользователям выполнять резервное копирование данных со своего устройства.Пользователи включают его, включив «iCloud Backup» (настройки -> идентификатор Apple -> iCloud).После включения устройство автоматически регулярно выполняет резервное копирование данных пользователя.Эта функция автоматически создаст резервную копию данных из вашего приложения, которое включено в каталог app / Documents.Дополнительная информация здесь .

См. здесь для получения подробной информации о предотвращении резервного копирования определенных данных, если вы хотите.

Кроме размещения данных, резервное копирование которых вы хотите, в общесистемную резервную копию вдиректор по документам, вам, как разработчику приложения, ничего не нужно делать.Вам даже не нужно включать iCloud через XCode (я думаю - хотя другие, пожалуйста, исправьте меня, если я ошибаюсь).

Это не загрузит данные из iCloud в ваше приложение, когда оно загружено.Скорее, он сохраняет резервную копию (данных вашего приложения и других данных на телефоне пользователя) - основное преимущество которого заключается в том, что если пользователь потеряет свое устройство, он может восстановить эти данные на другом устройстве.

2) Приложение для конкретного облачного хранилища через iCloud. Это не происходит автоматически и требует значимой настройки.

Здесь вы можете использовать iCloud как облачное решение для бэкэнда.Например, вы можете отправлять определенные данные в iCloud при создании этих данных, а затем позже получать эти данные из iCloud в приложение, когда пользователь загружает приложение (вместо того, чтобы сохранять эти данные локально на устройстве пользователя).

Именно здесь и вступает CloudKit.

Чтобы включить это, вам нужно сгенерировать соответствующий файл разрешений - например, включить iCloud с CloudKit в Xcode и быть уверенным, что идентификатор приложения иПрофиль обеспечения подтверждает, что CloudKit включен.Для более подробной информации, см. Мои шаги с 1 по 7 в моем вопросе.Это должно работать, чтобы все было «включено».

Но это только первая часть, вам нужно все настроить.Для этого вам, вероятно, потребуется выполнить некоторую настройку контейнера, который CloudKit создает для вашего приложения, и добавить код, специфичный для внутреннего процесса в вашем приложении.В руководстве есть несколько полезных сведений, ссылки на которые приведены в предыдущем ответе.

Спасибо тем, кто предоставил информацию по этому вопросу, включая техническую поддержку Apple Developer.

0 голосов
/ 24 февраля 2019

Это очень длинная история, поэтому трудно проследить и получить полную картину, но основываясь на ваших комментариях ...

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

Мой совет теперь, когда вы переходите в App Store Connect: переходите ВСЕ в производственную среду , а если нет,обновите профили / инициализации.

Я цитирую

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

Вы можете создавать и удалять типы записей на лету в (синей) среде разработки.Но после развертывания в (зеленой) производственной среде эта схема становится постоянной в этом контейнере.Вы не можете удалять типы записей из (зеленой) рабочей среды.

Удаление - это жестко ...

Попробуйте этот подход и дайте мне знать, если я попал в точку!;) Если я этого не сделал, не голосуйте за меня, просто джет лол, прокомментируйте, и я постараюсь помочь вам дальше.

Этот урок довольно хорошо известен, но я считаю, что он отлично подходит для новичков в iCloud. Проверьте его, если у вас нет: https://www.raywenderlich.com/1000-cloudkit-tutorial-getting-started

Удачи!

...