我启动了我的应用并安排了本地通知。这是我使用的代码的简化版本:
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)
当我的应用在后台时,它们会触发。到目前为止,非常好。
然后我重启设备。我不会强行退出应用程序。
而现在通知不再触发。我需要再次打开应用程序。
有没有办法让我的日程安排在重启后继续存在?
答案 0 :(得分:1)
UNLocationNotificationTrigger
是iOS10中添加的新助手类,可以更轻松地根据信标或地理围栏检测触发通知。 根据文档,它仅在应用程序使用时使用:
应用必须请求访问位置服务,并且必须具有使用该权限的使用时权限。要请求使用位置服务的权限,请在调度任何基于位置的触发器之前调用CLLocationManager的requestWhenInUseAuthorization()方法。
https://developer.apple.com/reference/usernotifications/unlocationnotificationtrigger
根据以上权限,应用只会在使用时触发。 该文档没有明确说明它无法在后台运行,因此您可以尝试使用requestAlwaysAuthorization()
而不是{来请求始终位置权限 {1}}(如果你这样做的话,一定要把正确的钥匙放在你的plist中),看看这是否有帮助。
另一种方法是不使用此帮助程序类,而是手动启动requestWhenInUseAuthorization()
和信标监视,然后在获得区域条目回调时手动创建自己的CoreLocation
:
UILocalNotification
众所周知,上述方法适用于重启应用程序。