Приложение iOS, работающее на iOS 13, сбрасывается каждый раз, когда пользователь уходит в фоновый режим в течение как минимум 30 секунд - PullRequest
4 голосов
/ 31 октября 2019

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

С момента выпуска iOS 13 некоторые изнаши пользователи связывались с нами, сообщая, что наше приложение сбрасывалось каждый раз, когда они переходили в фоновый режим в течение среднего промежутка времени (приблизительно 30 секунд).

Конечно, абсолютно ничего не известно о поведении, ничего о Crashlytics и т. д. Мы смогли воспроизвести на устройстве QA, но не смогли воспроизвести на устройстве, подключенном к отладчику.

Итак, очевидно, мы использовали Console для отслеживания происходящего, и мы заметили, что после отправки странного сообщенияок. Через 25 секунд после того, как наше приложение было переведено в фоновый режим:

default 10:14:01.658579+0100    XXX RunningBoardServices    Received process assertions expiration warning!
default 10:14:01.659214+0100    XXX RunningBoardServices    Notifying client of imminent expiration of assertion
default 10:14:01.659568+0100    XXX RunningBoardServices    Expiration notification complete

Если вы были достаточно быстры, чтобы перезапустить приложение, все просто работало нормально, но если вы оставили приложение неактивным еще на 5 секунд (прибл.) и затем перезапустил его, затем приложение сбрасывалось (appDidFinishLaunching ...).

...

1 Ответ

3 голосов
/ 31 октября 2019

...

Мы копали глубже и глубже, не найдя ничего ... пока не решили обновить некоторые наши внешние библиотеки через Cocoapods, и угадайте, что? мы нашли нашего виновного: GoogleDataTransport из Firebase suite!

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

Вот и все, ребята. Я надеюсь, что это поможет некоторым другим!

Приветствия.

РЕДАКТИРОВАТЬ: С этой страницы (Firebase примечания к выпуску) https://firebase.google.com/support/release-notes/ios#6.11.0, вы можете прочитать:

Исправлено условие гонки, из-за которого загрузка не завершалась, когда приложение находилось в фоновом режиме. Версия 6.10.0 - 8 октября 2019 г.

Из того, что я понимаю, возможно Firebase не уведомлял iOS о том, что загрузка, которую они выполняли в фоновом режиме, была завершена. Это может объяснить, почему iOS 13 убивает приложение в этом случае.

?‍♂️

EDIT 2: Apple, очевидно, выпустила обновление для iOS (13.2.2), котороедолжен решить следующие фоновые проблемы: https://twitter.com/engadget/status/1192512171252551682?s=12.

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

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

...