我正在使用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并执行一些代码而无需用户点击通知吗?
答案 0 :(得分:1)
您无法使用本地通知的触发功能在后台启动您的应用。如您所知,您的应用仅在用户点按通知时执行。
您可以使用带有内容可用密钥的远程通知在后台启动您的应用程序。