2011-03-19 251 views
21

如何暂停我的应用程序或向我的应用程序发送暂停消息?暂停应用程序

我想模拟按home键。

回答

-7

当应用程序暂停时,会发布UIApplicationWillResignActiveNotification通知。

我想你可以尝试手动发布此通知。虽然没有尝试过。

+0

该通知是由iOS的提高,调用自己不会暂停的应用程序的方法。 – 2017-01-10 11:11:27

2

你不能这样做。

如果你想退出你的应用程序,不要害怕被拒绝,并从爱用户的误报崩溃报告邮件,你可以调用exit(0);

+0

使用'exit(0)'将会终止应用程序并且不会挂起它(例如将它移动到后台)。 – 2017-01-10 11:13:46

15

退出应用程序或将其发送到后台程序是违反iOS Human Interface Guidelines的,通常不会用于获取通过审查过程好兆头:

不要退出编程

永远不会放弃的我操作系统应用程序 以编程方式,因为人们倾向于 将此解释为崩溃。但是,如果外部环境妨碍您的 应用程序的功能为 ,您需要告知用户 了解情况并解释他们可以对其执行的操作。根据 严重的应用故障, 您有两种选择。

显示一个有吸引力的屏幕,描述问题并提出 更正。屏幕提供了 反馈,可以让用户确信 您的 应用程序没有任何问题。它让用户控制, 让他们决定是否要 采取纠正措施,并使用你的应用程序继续 或按 Home键,然后打开一个不同的 应用

如果仅仅是一些应用程序的功能是不当 人激活该功能时,显示 屏幕或提示。显示 只有当人们尝试访问 功能不是 正在运行的警报。

的哲学原因是早些时候文件中解释:

人,而不是应用程序,应该 启动和控制操作。虽然 应用程序可以建议一个 的行动或警告关于危险的 的后果,它通常是一个错误 为应用程序作出决策 远离用户。最好的应用程序找到 给予 人他们需要的功能 之间的正确平衡,同时帮助他们避免危险 结果。

当行为和控制是 熟悉和可预测的时候,用户感觉更多地控制应用程序 。而且,当 的操作很简单,并且 直接,用户可以很容易地了解并记住它们。

人们期望能够有充分的机会 取消操作 开始前,他们希望 得到一个机会,以确认其意向 执行可能 破坏作用。最后,人们希望能够正常停止 正在进行的操作。

应该没有理由需要强制您的应用程序在其操作过程中进入后台。它在屏幕上显示时应保持完整的功能,当用户想要切换应用程序时应该由用户决定。

+0

你会说的权利,但应用程序启动通知,并应重新打开 关闭,你知道发生了什么只是执行一些 说明,谢谢! – Doom 2011-03-19 16:48:55

31

没有为UIApplication的一个私有的实例方法:

下面的代码将工作,(在iPhone 3GS测试):

UIApplication *app = [UIApplication sharedApplication]; 
[app performSelector:@selector(suspend)]; 
+0

这是应用程序商店接受的吗?我知道,少数情况下退出(0)将被拒绝。我不确定暂停。你能证实我吗? – Chan 2014-07-10 12:33:51

+4

@Chan你永远不应该为通过应用商店提交的应用调用私人API。请参阅Brad的最佳实践答案。 – Rob 2014-10-22 15:36:55

+1

这并不是鼓励您使用私有API,但我已经在应用商店中使用此应用。虽然在应用商店提交它会显示一条警告,提示使用了私有API。 – sole007 2015-09-24 06:23:40

12

在SWIFT:

UIControl().sendAction(#selector(NSURLSessionTask.suspend), to: UIApplication.sharedApplication(), forEvent: nil) 

编辑Swift3:

UIControl().sendAction(#selector(URLSessionTask.suspend), to: UIApplication.shared, for: nil) 
-3

用途:

sleep(15) 

,将暂停您的应用程序的具体时间

+1

这会将应用程序冻结一段时间(如果在主队列中完成),这与暂停应用程序(例如将其移动到后台)不同。 – 2017-01-10 11:12:27