iOSの仕様
アプリがバックグラウンドで起動中に、iPhoneの設定アプリでアプリのプライバシーなアクセス許可設定(写真やBluetoothなど)を変更すると、iOSがアプリを強制終了させるという仕様があります。
iOSアプリで写真やBluetoothなどへアクセスしようとすると、システムからアクセス許可を求められるアレです。info.plistファイルに’Privacy’として追加する項目が該当します。
これはiOSの仕様のようなので、皆さんが普段使用しているアプリでも確認できます。TwitterやInstagramなども例に漏れずです。
最近までこの仕様を知らなかったので、(できないのに)かなり対応に時間を浪費しました😓
デバッグでは以下のようなエラーログを確認できました。
Message from debugger: Terminated due to signal 9
試しに手元のアプリを起動して、設定アプリに移動して写真などのアクセス許可を変更してみると、アプリが終了しているのを確認できると思います。
対処法はあるのか?
結論、iOSの仕様はどうしようもないので、「この仕様を理解してアプリを設計する」しかないようです😭
アプリが終了しても問題ないような設計にしたり、せめてiPhoneの設定アプリへ飛ばしてあげるなどの配慮をしてあげる必要がありそうです。
ちなみに、Androidではそのような仕様はないようです。
UIを決める際には考慮しておきたい仕様です🙌