iOS退出(0)弃用?

有没有人知道如果退出(0)在iOS应用程序中被弃用? 我知道手动终止应用程序并不是一个好的决定,但是如果我们使用代码,Apple是否会禁止应用程序?

我有一个应用程序被拒绝,因为退出的方式(通过UIAlertView),做一个exit(5)当用户点击正确的button。

我收到:

我们发现您的应用程序包含用于退出应用程序的UI控件。 这不符合App Store评论指南要求的iOS人机界面指南。

请参阅附件截图/ s以供参考。

iOS人机界面指南指定,

“当用户按主页button打开不同的应用程序或使用手机等设备function时,总是要准备停止iOS应用程序的停止。特别是,人们不要点击应用程序closuresbutton或从菜单中select退出。为了提供良好的停车体验,iOS应用程序应该:

  • 尽可能快地保存用户数据,因为退出或终止通知可随时到达。

  • 在停止时保存当前状态,尽可能详细,以便人们在再次启动应用程序时不会丢失上下文。 例如,如果您的应用程序显示滚动数据,请保存当前的滚动位置。

删除任何退出您的应用程序的机制是适当的。

一个“隐藏的”退出可以被理解为对用户的崩溃,不是吗?

不,你不能退出,因为你的应用程序应该被拒绝。 苹果已经一再阻止这种做法,并且已知会导致iOS多任务切换出现严重的错误。 你应该简单地让用户自己使用homebutton。

http://developer.apple.com/library/ios/#qa/qa1561/_index.html

“此外,数据可能不会被保存,因为-applicationWillTerminate:和类似的UIApplicationDelegate方法在调用exit时不会被调用,如果在开发或者testing中有必要终止你的应用程序,那么推荐使用abort函数或者assertmacros。

2012-04-09
更新更强烈地阻止退出function,并包含debugging的最佳实践。

2008-08-27
讨论在代码中终止iOS应用程序的最佳实践的新文档。

直接从iOS人机界面指南http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/MobileHIG/UEBestPractices/UEBestPractices.html#//apple_ref/doc/uid/TP40006556-CH20-SW27

“不要以编程方式退出

切勿以编程方式退出iOS应用程序,因为人们倾向于将其解释为崩溃。 但是,如果外部环境妨碍您的应用程序按预期运行,则需要告诉用户有关情况并解释他们可以做些什么。 根据应用故障的严重程度,您有两种select。

显示描述问题的有吸引力的屏幕并提出修正。 屏幕提供反馈,让用户放心,您的应用程序没有任何问题。 它将用户置于控制之下,让他们决定是否要采取纠正措施并继续使用您的应用程序,或者按主页button并打开不同的应用程序

如果只有部分应用的function不可用,请在用户使用该function时显示屏幕或提醒。 仅当用户尝试访问不能正常工作的function时才显示警报。

如果必要,请显示许可协议或免责声明

如果您在iOS应用程序中提供了最终用户许可协议(或EULA),则应用程序商店会显示该协议,以便人们可以在获取您的应用程序之前阅读该协议。

如果可能,请避免要求用户在首次启动应用程序时向EULA表示同意。 如果没有协议显示,用户可以享受您的应用程序没有延迟。 但是,尽pipe这是首选的用户体验,但在所有情况下可能都不可行。 如果您必须在您的应用程序中显示许可协议,请按照与您的用户界面相一致的方式进行操作,并且为用户带来最less的不便。

如有可能,请在您的应用说明或EULA中提供免责声明。 用户随后可以在App Store中查看免责声明,并且可以平衡业务需求和用户体验需求。“

不,苹果公司不会拒绝你的应用程序使用exit(0)

你是正确的,这不是一个伟大的deviseselect,但它有时可能是有用的。

Larme提到,如果使用不当,可能会被视为崩溃,崩溃将导致您的应用被拒绝。

但是,在(有条件的情况下)你可能想强制应用程序启动一个新的应用applicationDidEnterBackground时,它可以在applicationDidEnterBackground非常有用。