【iOS】カメラやBluetoothなどのアクセス許可設定を変更するとアプリが終了する

はじめに

iOSアプリでは、カメラやBluetoothなどを使用するときにはシステムへのアクセス許可が必要となります。

こちらをiPhoneやiPadの設定アプリで変更すると、対象のアプリがクラッシュしてしまい焦ったことがあったので、こちらで共有しておこうと思います。

iOSの仕様

結論から言いますと、アプリがバックグラウンドで起動中に、iPhoneの設定アプリでプライバシーなアクセス許可設定(写真やBluetoothなど)を変更すると、iOSがアプリを強制終了させるという仕様があるようです。
私は知りませんでした😭笑

info.plistファイルに’Privacy’として追加する項目が該当します。

これはiOSの仕様なので、皆さんが普段使用しているアプリでも確認できます。TwitterやInstagramなども例に漏れずです。
最近までこの仕様を知らなかったので、(できないのに)かなり対応に時間を浪費しました😓
デバッグでは以下のようなエラーログを確認できました

Message from debugger: Terminated due to signal 9

試しに手元のアプリを起動し、設定アプリに移動して写真などのアクセス許可を変更してアプリに戻ると、終了しているのを確認できると思います。

対処法はあるのか?

iOSの仕様のためどうしようもないです。なので「この仕様を理解してアプリを設計する」しかないようです😭
アプリが終了しても問題ないような設計にしたり、せめてアクセス許可設定が必要な際に、iPhoneの設定アプリへ飛ばしてあげるなどの配慮をしてあげる必要がありそうです。
ちなみに、Androidではそのような仕様はないようです。

UIを決める際には考慮しておきたい仕様です🙌

終わりに

知らないと少し困ると思うので、私と同じように時間を浪費しないように、この記事が少しでも誰かの役に立てば幸いです。