iOS企业应用程序 - 如何确保我的应用程序在后台运行?

时间:2016-03-14 12:18:32

标签: ios iphone

首先,重要的是要注意我正在开发企业应用程序,因此不需要考虑App Store指南或批准。

我的目标如下:

1)iPhone应用程序,用户只能打开一次。在这段时间里,他将经历一些注册过程。

2)一旦步骤(1)结束(通过app暂停或app关闭),应用程序应该“醒来”#34;每小时(或多或少)并从后台向服务器发送有关用户的一些数据(当然,所有这些都是通过用户协议完成的)。

我尝试过的可选解决方案:

我非常仔细地阅读了在https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

中在后台运行的Apple准则

我决定选择2个UIBackgroundModes:

  • 位置

1)对于我使用的位置:

  

如果您让重要更改位置服务正在运行并且您正在运行   iOS应用程序随后被暂停或终止,该服务   新位置数据到达时自动唤醒您的应用。

2)对于后台提取我使用

performFetchWithCompletionHandler()

UIApplication.sharedApplication().setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum);

出于某种原因,应用程序在24小时后无法在后台运行。这意味着应用永远不会醒来"再次,即使根据Apple指南,每当发生重要的位置更新时 - 它都会被唤醒。

我可以做些什么来尽可能保证我的应用会在后台定期运行?

2 个答案:

答案 0 :(得分:4)

在项目属性中,您必须允许应用程序的后台模式更新位置和后台提取。

在后台获取并不像看起来那么容易。 iOS将自己定义在后台模式下获取数据的频率,即使每15分钟设置一次选项:( 正如我的实践所示,如果用户不时打开应用程序,则获取新数据的时间间隔会更短,因此iOS会对正常的应用程序使用进行一些计算。因此,应用程序会根据应用程序调用后台获取数据。

但是你可以制作一个技巧: 你可以从你的位置程序调用获取程序。对于数据交换,它在我的项目中很有用:)

答案 1 :(得分:3)

该解决方案适用于Silent PN。

我在赏金中提到的目标是:" ..有一个iOS应用程序在后台运行定期超过30天没有打开。也应该在应用关闭后运行。"

我发现在发送带有"content-available" : 1的PN时,对我来说是个窍门。

我建立了一个服务器,每15分钟发送一次"无声的PN"到所有注册的设备。我能够从同一台服务器确认这些客户端收到PN并对其进行操作。

感谢@andlin的建议。