我有一个本地地理围栏通知,使用以下代码进行设置:
func startMonitoring(annotation:MKAnnotation) {
let region = CLCircularRegion(center: annotation.coordinate, radius: 10.0, identifier: "randomID")
region.notifyOnExit = false
let notification = UILocalNotification()
notification.region = region
notification.alertBody = "You got it!"
notification.category = self.notificationCategory
notification.soundName = "my_sound.wav"
notification.userInfo = ["ID": "randomID"]
UIApplication.sharedApplication().scheduleLocalNotification(notification)
}
这很有效,但是用户必须在一定时限内到达该区域才能使通知的行动可用。如果时间限制已经过去,我如何才能通知?
我目前只有" WhenInUse"授权用户的位置,并希望保持这种方式。
答案 0 :(得分:1)
最好使用CLLocationManager手动监控CLCircularRegion,当您的应用被通知用户已进入该区域时,请检查它是否在时间限制内并手动发布UILocalNotification。
请参阅此处的Using Regions to Monitor Boundary Crossings
部分:https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/index.html
答案 1 :(得分:1)
您可以使用setminimumbackgroundfetchinterval
设置后台提取,如果预定通知将过期,则取消已安排的通知。
它不是100%可靠,因为你无法控制确切的时间,但它总比没有好。