设备重启后的本地通知

时间:2017-01-17 11:17:16

标签: ios ibeacon restart reboot usernotifications

我启动了我的应用并安排了本地通知。这是我使用的代码的简化版本:

let content = UNMutableNotificationContent()
content.body = "Wild IBEACON appeared!"
let region = CLBeaconRegion(proximityUUID: uuid, identifier: "iBeacon region")
let trigger = UNLocationNotificationTrigger(region: region, repeats: true)
let request = UNNotificationRequest(identifier: "iBeacon notification", content: content, trigger: trigger)
notificationCenter.add(request)

当我的应用在后台时,它们会触发。到目前为止,非常好。

然后我重启设备。我不会强行退出应用程序。
而现在通知不再触发。我需要再次打开应用程序。

有没有办法让我的日程安排在重启后继续存在?

1 个答案:

答案 0 :(得分:1)

UNLocationNotificationTrigger是iOS10中添加的新助手类,可以更轻松地根据信标或地理围栏检测触发通知。 根据文档,它仅在应用程序使用时使用:

  

应用必须请求访问位置服务,并且必须具有使用该权限的使用时权限。要请求使用位置服务的权限,请在调度任何基于位置的触发器之前调用CLLocationManager的requestWhenInUseAuthorization()方法。

https://developer.apple.com/reference/usernotifications/unlocationnotificationtrigger

根据以上权限,应用只会在使用时触发。 该文档没有明确说明它无法在后台运行,因此您可以尝试使用requestAlwaysAuthorization()而不是{来请求始终位置权限 {1}}(如果你这样做的话,一定要把正确的钥匙放在你的plist中),看看这是否有帮助。

另一种方法是不使用此帮助程序类,而是手动启动requestWhenInUseAuthorization()和信标监视,然后在获得区域条目回调时手动创建自己的CoreLocation

UILocalNotification

众所周知,上述方法适用于重启应用程序。