iOSでアプリ側の強制終了はリジェクト対象!?
備忘録として。
現在業務で開発しているiOSアプリでそろそろ佳境を迎えようかというときに、仮に記述していただけなのかもしれませんが同僚の書いたソースコードに、
exit(0);
という記述があってドキッとしてしまいました。というのも、この記述でアプリ自身を強制終了することができるのですが、アプリ側で強制終了するのはリジェクト対象といった内容のサイトで散見していたからです。
ということでアップルのガイドラインをみてみようと思います。
プログラミングによって終了させない
iOSアプリケーションはプログラミングによって終了させないようにします。これは、ユーザがプログラミングによる終了をクラッシュと解釈する傾向があるためです。ただし、外部の状況によってアプリケーションが意図した通りに機能しなくなっている場合、その状況をユーザに伝えて、それについてユーザができることを説明する必要があります。アプリケーションの障害がどれくらい重大かによって、次の2つの選択肢があります。
ユーザの注意を引く画面を表示し、その画面で問題を説明し、修正を提案する。画面は、アプリケーションによる不具合ではないことをユーザに伝えるフィードバックを提供します。ユーザに制御を渡すことで、状況を改善するためのアクションを取ってアプリケーションを継続するか、ホーム(Home) ボタンを押して別のアプリケーションを起動するかをユーザが決定できるようにする。
アプリケーションの機能の一部のみが動作しない場合、ユーザがその機能を有効にしたときに画面またはアラートのどちらかを表示する。アラートは、動作しない機能にユーザがアクセスしようとするときにのみ表示します。
これって・・・どういうことなんだろう?
いずれにせよ、強制終了はさせないほうが無難な気がします。