Ian*_*ink 27 iphone foreground background-service ipad ios
在iOS中,如果操作系统不再处于前台,我将如何指示操作系统保持我的应用程序运行?
还有更多的应用程序可以做到
Gru*_*kes 47
基本上,iOS中没有服务类型应用程序或功能.甚至"背景"应用程序(UIBackgroundMode)也无法完全自由地运行,并且没有其他操作系统上的服务或守护程序等限制.
这是关于后台执行和通知以及计时器等的情况.
1)应用程序无法在后台执行,除非:
a)它要求OS提供额外的时间.这是使用beginBackgroundTaskWithExpirationHandler完成的.Apple没有明确(故意)指定这个额外时间有多长,但实际上大约需要10分钟.
b)应用程序具有后台模式,模式为:voip,audio,location,newstand.即使它有这些类型之一,应用程序也无法无限制地执行.本讨论的其余部分假定应用程序没有后台模式.如果您尝试使用其中一种后台模式使您的应用能够在后台运行,但您的应用无法合法使用特定功能,那么您的应用将在应用商店提交时被拒绝(即拥有UIBackgroundMode它必须是:一个voip应用程序,需要持续的位置更新,在后台连续播放音频的能力是一个基本功能,或者是一个新的应用程序).
2)当一个应用程序被暂停时,它无法做任何事情直接引发自己.它以前不能安排NSTimer,它不能使用像performSelector:afterDelay这样的东西.等等
应用程序再次变为活动状态的唯一方式是,如果USER执行某些操作使其处于活动状态.用户可以通过以下方式执行此操作:
a)直接从其图标启动应用程序
b)启动应用程序以响应应用程序在活动时先前安排的本地通知.
c)启动应用程序以响应服务器发送的远程通知.
d)其他一些:如果应用程序已注册处理通过URL发起的URL,则启动URL; 或者如果其注册能够处理某种类型的内容.
如果当本地/远程通知触发时应用程序位于前台,则应用程序会直接接收该应用程序.
如果当本地/远程通知触发时应用程序当前不在前台,则应用程序不会收到它.通知触发时没有执行代码!
只有在用户选择通知时,应用才会变为活动状态并且可以执行.
请注意,用户可以为整个设备禁用通知,也可以仅针对特定应用程序禁用通知,在这种情况下,用户将永远不会看到通知.如果在通知发生时关闭设备,则会丢失.
1)有一些新的后台模式,例如后台获取(但是你仍然不能以确定的方式被OS唤醒)
2)现在有一个后台推送通知
3)beginBackgroundTaskWithExpirationHandler时间从10分钟减少到3分钟左右.
归档时间: |
|
查看次数: |
41748 次 |
最近记录: |