以下代码适用于通知。但是,当我尝试应用程序时,在远近之间通知太多了。
extension AppDelegate: CLLocationManagerDelegate {
func sendLocalNotificationWithMessage(message: String!) {
let notification:UILocalNotification = UILocalNotification()
notification.alertBody = message
UIApplication.sharedApplication().scheduleLocalNotification(notification)
}
func locationManager(manager: CLLocationManager!,
didRangeBeacons beacons: AnyObject[]!,
inRegion region: CLBeaconRegion!) {
NSLog("didRangeBeacons");
var message:String = ""
if(beacons.count > 0) {
let nearestBeacon:CLBeacon = beacons[0] as CLBeacon
switch nearestBeacon.proximity {
case CLProximity.Far:
message = "You are far away from the beacon"
case CLProximity.Near:
message = "You are near the beacon"
case CLProximity.Immediate:
message = "You are in the immediate proximity of the beacon"
case CLProximity.Unknown:
return
}
} else {
message = "No beacons are nearby"
}
NSLog("%@", message)
sendLocalNotificationWithMessage(message)
}
}
这是一种使用某种激情陈述的方法吗?类似的东西:
localNotification.fireDate = NSDate(timeIntervalSinceNow: 900)
如果我输入" func sendLocalNotificationWithMessage",它将触发所有通知。我必须找到一种方法来放置切换后?
或者也许是通知柜台?
答案 0 :(得分:0)
如果您在过去900秒内发送了另一个通知,那么您想要做的就是延迟显示新通知。如果这是目标,你可以这样做:
var lastNotificationTime = 0.0
func locationManager(manager: CLLocationManager!,
didRangeBeacons beacons: AnyObject[]!,
inRegion region: CLBeaconRegion!) {
NSLog("didRangeBeacons");
var beaconVisible = false
var proximity = CLProximity.Unknown
if(beacons.count > 0) {
beaconVisible = true
let nearestBeacon:CLBeacon = beacons[0] as CLBeacon
proximity = nearestBeacon.proximity
}
else {
beaconVisible = false
}
if (NSDate.timeIntervalSinceReferenceDate() - lastNotificationTime > 900) {
lastNotificationTime = NSDate.timeIntervalSinceReferenceDate()
var message:String = ""
if beaconVisible {
switch proximity {
case CLProximity.Far:
message = "You are far away from the beacon"
case CLProximity.Near:
message = "You are near the beacon"
case CLProximity.Immediate:
message = "You are in the immediate proximity of the beacon"
case CLProximity.Unknown:
return
}
}
else {
message = "No beacons are nearby";
}
NSLog("%@", message)
sendLocalNotificationWithMessage(message)
}
}