我正在为 iOS 开发一个日历/闹钟应用程序,它与网络服务器同步。当在服务器上添加活动时,会发出推送通知,以便 iOS 客户端可以获取新数据,并根据需要更新和安排下一次警报的时间(本地通知)。
但这仅在应用程序在客户端打开时才有效。我希望客户端收到推送通知,并在需要时在后台重新安排下一个警报的时间。
这在iOS上不可能吗?
为此,您可以使用后台获取,操作系统将定期“唤醒”您的应用程序以在后台执行数据获取。
首先,为您的应用程序启用后台获取功能。在 XCode 6 中,查看您的项目,然后转到能力选项卡,打开背景模式,并检查后台获取.
然后你必须在 App Delegate 中实现一些代码:
In application:didFinishLaunchingWithOptions:
, add:
[application setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];
上面设置了您希望系统“唤醒”您的应用程序以进行后台进程的理想频率。请注意,最终频率是由 iOS 中的算法确定的,因此可能并不总是这么频繁。
-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
//fetch code here
completionHandler(UIBackgroundFetchResultNewData);
}
以上是在后台进程期间调用的实际重写函数。记得拨打电话completionHandler
- 如果不这样做可能会减少您的应用程序下次在后台运行的机会(或者文档是这么说的)。您可以传递给的枚举completionHandler
are UIBackgroundFetchResultNewData
, UIBackgroundFetchResultNoData
, UIBackgroundFetchResultFailed
。根据获取的结果使用其中之一。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)