exit(0)
iOSアプリケーションで非推奨かどうか誰かが知っていますか?アプリを手動で終了するのは良い決断ではないことは知っていますが、コードで使用する場合、Appleはアプリケーションを禁止しますか?
3 に答える
いいえ、Appleはアプリの使用を拒否しませんexit(0)
。
あなたは正しいです、それは素晴らしいデザインの選択ではありませんが、それは時々役に立つかもしれません。
Larmeが述べたように、誤って使用すると、クラッシュとして認識される可能性があり、クラッシュするとアプリが拒否されます。
applicationDidEnterBackground
ただし、 (条件付きで)アプリを強制的に新しく起動する場合に非常に役立ちます。
exit(5)
ユーザーが正しいボタンをクリックしたときに、(UIAlertViewを介して)終了する方法が原因で拒否されたアプリを取得しました。
私はそれを受け取りました:
アプリには、アプリを終了するためのUIコントロールが含まれていることがわかりました。これは、AppStoreレビューガイドラインで要求されているiOSヒューマンインターフェイスガイドラインに準拠していません。
添付のスクリーンショットを参照してください。
iOSヒューマンインターフェイスガイドラインでは、次のように指定されています。
「iOSアプリケーションは、ホームボタンを押して別のアプリケーションを開いたり、電話などのデバイス機能を使用したりすると、常に停止する準備ができています。特に、アプリケーションの閉じるボタンをタップしたり、メニューから[終了]を選択したりすることはありません。優れた停止エクスペリエンスを提供するために、iOSアプリケーションは次のことを行う必要があります。
終了または終了の通知はいつでも届く可能性があるため、ユーザーデータをできるだけ早く、できるだけ頻繁に保存してください。
停止時に現在の状態を可能な限り詳細に保存して、アプリケーションを再開したときにコンテキストが失われないようにします。たとえば、アプリにスクロールデータが表示されている場合は、現在のスクロール位置を保存します。」
アプリを終了するためのメカニズムを削除するのが適切です。
「隠された」出口は、ユーザーにとってのクラッシュとして理解できますね。
いいえ、アプリは拒否されるべきであるため、 exitを呼び出さないでください。これはAppleによって繰り返し推奨されておらず、iOSマルチタスクスイッチングで重大なバグを引き起こすことが知られています。ホームボタン自体を使用するようにユーザーに任せるだけです。
http://developer.apple.com/library/ios/#qa/qa1561/_index.html
「さらに、exitを呼び出すと、-applicationWillTerminate:および同様のUIApplicationDelegateメソッドが呼び出されないため、データが保存されない場合があります。開発中またはテスト中にアプリケーションを終了する必要がある場合は、アプリケーションを終了するか、関数を中止するか、マクロをアサートすることをお勧めします。」
2012-04-09
終了機能をより強力に阻止するように更新され、デバッグのベストプラクティスが含まれています。
2008-08-27iOS
アプリケーションをコードで終了するためのベストプラクティスについて説明した新しいドキュメント。
iOSヒューマンインターフェイスガイドラインから 直接http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/MobileHIG/UEBestPractices/UEBestPractices.html#//apple_ref/doc/uid/TP40006556-CH20-SW27
「プログラムで終了しないでください
人々はこれをクラッシュと解釈する傾向があるため、プログラムでiOSアプリを終了しないでください。ただし、外部の状況によってアプリが意図したとおりに機能しない場合は、ユーザーに状況を伝え、ユーザーがそれに対して何ができるかを説明する必要があります。アプリの誤動作の程度に応じて、2つの選択肢があります。
問題を説明し、修正を提案する魅力的な画面を表示します。画面には、アプリに問題がないことをユーザーに安心させるフィードバックが表示されます。これにより、ユーザーは管理下に置かれ、ユーザーが修正措置を講じてアプリを使い続けるか、ホームボタンを押して別のアプリを開くかを決定できます。
アプリの機能の一部しか利用できない場合は、ユーザーがその機能を使用したときに画面またはアラートを表示します。機能していない機能にユーザーがアクセスしようとした場合にのみアラートを表示します。
必要に応じて、使用許諾契約または免責事項を表示します
iOSアプリでエンドユーザー使用許諾契約書(またはEULA)を提供すると、App Storeに表示され、ユーザーがアプリを入手する前に使用できるようになります。
可能であれば、ユーザーが最初にアプリを起動するときにEULAに同意するようにユーザーに要求することは避けてください。契約書が表示されていなくても、ユーザーは遅滞なくアプリを楽しむことができます。ただし、これが推奨されるユーザーエクスペリエンスであっても、すべての場合に実行できるとは限りません。アプリ内で使用許諾契約を表示する必要がある場合は、ユーザーインターフェースと調和し、ユーザーへの不便を最小限に抑える方法で表示してください。
可能であれば、アプリの説明またはEULA内に免責事項を記載してください。その後、ユーザーはApp Storeで免責事項を表示でき、ビジネス要件とユーザーエクスペリエンスのニーズのバランスをとることができます。」