首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS企业应用程序--如何确保我的应用程序在后台运行?

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

Stack Overflow用户
提问于 2016-03-14 12:18:32
回答 2查看 861关注 0票数 5

首先,需要注意的是,我正在开发一个企业级应用程序,因此不需要App准则\批准考虑。

我的目标是:

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

2)一旦步骤(1)完成(通过应用程序暂停或应用程序关闭),应用程序应该每小时(或多或少)“唤醒”一次,并从后台向服务器发送一些关于用户的数据(当然,这都是在用户同意下完成的)。

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

我非常详细地阅读了苹果在https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html后台运行的指南

我决定使用2 UIBackgroundModes:

  • 位置
  • 获取

( 1)对于地点,我使用:

  • startMonitoringSignificantLocationChanges();
  • manager.requestAlwaysAuthorization() 为了确保我的应用程序在“应用程序关闭”甚至“设备重新启动”之后运行,我不得不使用这两个选项。见苹果指南:ref/doc/uid/TP40009497-CH2-SW1

如果您继续运行重大更改位置服务,并且您的iOS应用程序随后被挂起或终止,则当新的位置数据到达时,该服务会自动唤醒您的应用程序。

2)对于背景提取,我使用

代码语言:javascript
复制
performFetchWithCompletionHandler()

代码语言:javascript
复制
UIApplication.sharedApplication().setMinimumBackgroundFetchInterval(UIApplicationBackgroundFetchIntervalMinimum);

出于某种原因,应用程序在24小时后不会在后台运行。这意味着这款应用永远不会再次“醒来”,尽管根据苹果的规定,无论何时发生重大的位置更新,它都应该会醒来。

我能做些什么来保证我的应用程序能够在后台正常运行?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-21 14:14:07

这个解决方案与沉默的PN合作。

我的目标就像“赏金”中提到的那样:".让一个iOS应用程序定期运行,当30+天完全不打开的时候,它会定期运行。在应用程序关闭后也应该运行。“

我发现和"content-available" : 1一起发送PN对我起了作用。

我设置了一个服务器,它每15分钟向所有注册设备发送一个“静音PN”。我能够从同一台服务器确认这些客户端接收到PN并对其进行操作。

谢谢你的建议。

票数 3
EN

Stack Overflow用户

发布于 2016-03-16 12:31:24

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

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

但是你可以做一个小把戏:你可以从你的定位过程中调用提取过程。对于数据交换,它在我的项目中是有用的:)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35987366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档