在收到UILocalNotification时让应用程序执行后台代码

时间:2015-07-13 11:29:46

标签: ios objective-c iphone background notifications

我正在使用iOS 8,我正在安排UILocalNotification作为解决方案,因为我无法执行后台代码,除非在有限的时间内或那个该应用程序属于某些类别(例如与外部BLE配件等进行通信..但即便如此,它也仅限于该代码):

Background execution documentation here):

  

如果您的应用处于任务中间且需要一点额外时间   完成那项任务,它可以调用   beginBackgroundTaskWithName:expirationHandler:或   beginBackgroundTaskWithExpirationHandler:UIApplication的方法   对象请求一些额外的执行时间。

我想要实现的是检查在启动UILocalNotification时是否存在某些条件(使用本地通知似乎是让应用执行某些操作的唯一方法而在背景中..)。 除非有另一种方式......

不幸的是,我似乎只能在应用程序进入前台时拦截调用并执行代码(用户点击通知徽章并调用** didReceiveLocalNotification **。

- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notif

这对应于Apple here描述的行为。

  

用户点按提醒中的默认按钮或点击(或点击)   应用程序图标如果轻触默认操作按钮(在运行的设备上)   iOS),系统启动应用程序,应用程序调用其委托   application:didFinishLaunchingWithOptions:方法,传入   通知有效载荷(用于远程通知)或   本地通知对象(用于本地通知)。虽然   application:didFinishLaunchingWithOptions:不是最好的地方   处理通知,此时获取有效负载给你   在处理程序方法之前启动更新过程的机会   被称为。

我知道如何在应用程序处于后台时拦截UILocalNotification并执行一些代码而无需用户点击通知吗?

1 个答案:

答案 0 :(得分:1)

您无法使用本地通知的触发功能在后台启动您的应用。如您所知,您的应用仅在用户点按通知时执行。

您可以使用带有内容可用密钥的远程通知在后台启动您的应用程序。