Не удалось обновить существующее приложение магазина приложений [дубликат]

Прежде всего, даже если viewDidUnload не устарел, вам, должно быть, пришлось отменить это уведомление в viewDidUnload AND dealloc. Даже до iOS 6, viewDidUnload НЕ вызывается в большинстве случаев; только в ситуациях с низкой памятью. Поэтому, если бы вы только помещали его в viewDidUnload, а не dealloc раньше, он не был бы незарегистрирован, и, вероятно, он был бы разбит, когда он был освобожден и получил уведомление. Поэтому вам, должно быть, пришлось поместить его в dealloc, чтобы он работал правильно.

Во-вторых, если вы делали это правильно раньше, вам не нужно делать что-либо дополнительное для его работы правильно в iOS 6. Единственное отличие в iOS 6 состоит в том, что представления больше не выгружаются вообще (даже в ситуациях с низкой памятью). Таким образом, это то же самое, что и в iOS 5, когда вы не столкнулись с ситуацией с низкой памятью. Поскольку представления не выгружаются, viewDidLoad вызывается только один раз, поэтому ваше уведомление будет регистрироваться только один раз. Он будет незарегистрирован в dealloc, поскольку вы должны положить его для того, чтобы он работал правильно.

8
задан Community 23 May 2017 в 12:02
поделиться

5 ответов

Я получил это из .ipa, созданного как артефакт Дженкинса. Проблема для меня заключалась в том, что Дженкинс использовал другой профиль обеспечения.

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

0
ответ дан Alex Bartiş 16 August 2018 в 00:41
поделиться

Чтобы исправить это, просто включите «Автоматическое управление подписанием» с общей вкладки настроек проекта.

У меня также возникла проблема с запуском приложения на моем устройстве прямо из xcode 8. Удаление и генерация профиля и сертификата не работал на меня. Но включение «Автоматическое управление подписанием» сработало для меня.

Надеюсь, что это поможет!

Проверьте этот мой вопрос: Xcode 8 показывает ошибку, что профиль подготовки не включает подпись сертификат

2
ответ дан Community 16 August 2018 в 00:41
поделиться
  • 1
    Я прикрепил изображение ошибки, которую я получаю, которая отличается от ошибки, упомянутой в вашей ссылке. – ArdenDev 22 September 2016 в 15:15

У меня была такая же проблема при попытке обновления приложения. И вот что я нашел:

Я проверил права приложения-идентификатора старого приложения и нового приложения. Вы можете сделать это, запустив codesign -d --entitlements :- path/to/AppName.app/AppName или откройте файл «archived-extended-rights.xcent» по пути «AppName.app/AppName".

Идентификатор приложения старого приложения был« 1234XXX5X6.com. mycompany.myapp ", но в новом приложении это было" 1234XXX5X6.com.mycompany.myapp.develop ".

Обычно я устанавливаю« Bundle Identifier »непосредственно в Info.plist.

Но я не знал, что в настройках сборки проекта есть также свойство «Свойство Bundle Bundle».

Предыдущая версия приложения была построена с Xcode 7.3.1 и имела следующие настройки:

  • Info.plist: com.mycompany.myapp
  • Настройки сборки: com.mycompany.myapp.develop
  • application-identifier: 1234XXX5X6.com.mycompany.myapp

Новая версия была построена с помощью Xcode 8.2.1 и он имел следующие настройки:

  • Info.plist: com.mycompany.myapp
  • Настройки сборки: com.mycompany.myapp.develop
  • application- идентификатор: 1234XXX5X6.com.mycompany.mya pp.develop

Кажется, что новый Xcode имеет другой источник для идентификатора приложения. Поэтому я только что исправил «Идентификатор продукта Bundle», и моя проблема была решена.

7
ответ дан HammerSlavik 16 August 2018 в 00:41
поделиться

Вот одно из решений, если вы хотите обновить существующее приложение App Store без его удаления, но ваше право на идентификатор приложения не соответствует. Загрузите архив своей новой сборки в App Store, а затем используйте TestFlight, чтобы загрузить ее на свое устройство. Это не так быстро, как создание устройства, но оно перезапишет ваше старое приложение вашей новой сборкой, сохранив при этом ваши старые данные. Для (относительно) более быстрого повторного тестирования вашего процесса обновления, когда у вас есть новая сборка, доступная в TestFlight:

  1. Удалите приложение со своего устройства (при условии, что оно было недавно построено)
  2. Загрузите сборку вашего магазина приложений и сгенерируйте некоторые данные
  3. Загрузите сборку TestFlight, но не запускайте ее
  4. Создайте свою новейшую сборку непосредственно на устройстве
  5. ]

Конструкция TestFlight перезаписывает право без удаления старых данных, поэтому Xcode с радостью установит вашу новую сборку поверх сборки TestFlight, но вы все еще проверяете процесс обновления, как если бы вы строили непосредственно поверх версию App Store вашего приложения.

1
ответ дан Mark A. Durham 16 August 2018 в 00:41
поделиться

Удалите существующее приложение с устройства и снова запустите.

4
ответ дан Vineesh TP 16 August 2018 в 00:41
поделиться
  • 1
    Почему люди голодают без упоминания причины. – Vineesh TP 25 July 2017 в 03:52
  • 2
    Думаю, это потому, что речь идет о «обновлении». – GreatWiz 17 August 2017 в 14:10
  • 3
    Мы передали право собственности на приложение от компании A компании B (нам). У устройства разработки все еще была версия от установленной компании A. Удаление компании Приложение с устройства и построение исправили проблему, как ожидалось. – Jon 29 March 2018 в 21:28
  • 4
    попробуйте удалить существующий профиль из предпочтения xcode и добавить новый профиль компании. Сборка и сборка и запуск снова – Vineesh TP 30 March 2018 в 00:36
Другие вопросы по тегам:

Похожие вопросы: