首先,需要注意的是,我正在开发一个企业级应用程序,因此不需要App准则\批准考虑。
我的目标是:
1)用户只需打开一次的iPhone应用程序。在这段时间里,他将经历一些注册过程。
2)一旦步骤(1)完成(通过应用程序暂停或应用程序关闭),应用程序应该每小时(或多或少)“唤醒”一次,并从后台向服务器发送一些关于用户的数据(当然,这都是在用户同意下完成的)。
我尝试过的可选解决方案:
我非常详细地阅读了苹果在https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html后台运行的指南
我决定使用2 UIBackgroundModes:
( 1)对于地点,我使用:
如果您继续运行重大更改位置服务,并且您的iOS应用程序随后被挂起或终止,则当新的位置数据到达时,该服务会自动唤醒您的应用程序。
2)对于背景提取,我使用
performFetchWithCompletionHandler()和
UIApplication.sharedApplication().setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum);出于某种原因,应用程序在24小时后不会在后台运行。这意味着这款应用永远不会再次“醒来”,尽管根据苹果的规定,无论何时发生重大的位置更新,它都应该会醒来。
我能做些什么来保证我的应用程序能够在后台正常运行?
发布于 2016-03-21 14:14:07
这个解决方案与沉默的PN合作。
我的目标就像“赏金”中提到的那样:".让一个iOS应用程序定期运行,当30+天完全不打开的时候,它会定期运行。在应用程序关闭后也应该运行。“
我发现和"content-available" : 1一起发送PN对我起了作用。
我设置了一个服务器,它每15分钟向所有注册设备发送一个“静音PN”。我能够从同一台服务器确认这些客户端接收到PN并对其进行操作。
谢谢你的建议。
发布于 2016-03-16 12:31:24
在您的项目属性中,您必须允许应用程序的后台模式更新位置和后台获取。
获取背景信息并不像看起来那么容易。iOS将自行定义在后台模式中获取数据的频率--甚至每15分钟设置一次选项:(正如我的实践所示,如果用户不时打开应用程序,则获取新数据的时间间隔更短,因此iOS会对正常应用程序的使用进行一些计算。因此,应用程序根据应用程序的使用情况调用后台获取数据。
但是你可以做一个小把戏:你可以从你的定位过程中调用提取过程。对于数据交换,它在我的项目中是有用的:)
https://stackoverflow.com/questions/35987366
复制相似问题