我是一位相对较新的快速开发者,我在iOS 8中听说过您可以根据用户位置发送本地通知。我已经看过一些代码,特别是这个代码可以创建基于时间的简单本地通知。
var leftNotification1:UILocalNotification = UILocalNotification()
leftNotification1.alertBody = "NotidicationA"
leftNotification1.repeatInterval = NSCalendarUnit.CalendarUnitHour
leftNotification1.fireDate = NSDate(timeIntervalSinceNow: 900)
UIApplication.sharedApplication().scheduleLocalNotification(leftNotification1)
我还看到你可以用类似这样的位置触发器替换fireDate:
var localNotification:UILocalNotification = UILocalNotification()
localNotification.regionTriggersOnce = true
localNotification.region = CLCircularRegion(circularRegionWithCenter: CLLocationCoordinate2D(latitude: 37.33233141, longitude: -122.03121860), radius: 50.0, identifier: "Location1")
UIApplication.sharedApplication().scheduleLocalNotification(localNotification)
我知道您需要获得用户许可的地点,并对地点进行投票。我不知道如何做这种事情并将其与该代码链接。当我将此代码输入我的ViewDidLoad时,就像我为顶级代码输入的那样,由于显而易见的原因它没有工作,CoreLocation没有注册,也没有轮询位置。如果有人可以告诉我如何使这些代码正常工作,或者甚至更好地给我一个示例代码来看看它会很棒。感谢。
答案 0 :(得分:8)
我发现一些指南有不同的方法来处理这个问题,你需要import CoreLocation
然后你需要在ViewController.swift的ViewController函数中注册CLLocationManagerDelegate。
您需要获得使用
位置的权限locationManager.delegate = self
locationManager.requestAlwaysAuthorization()
UIApplication.sharedApplication().cancelAllLocalNotifications()
如果您使用requestWhenInUseAuthorization,它将不会显示通知,因为它们仅在您不在应用程序时显示。在iOS 8中,它要求您在info.plist文件中声明NSLocationAlwaysUsageDescription
,您只需输入一些文本,以便在请求位置访问时显示。
完成所有操作后,您可以开始创建通知,您可以使用以下代码执行此操作
let locattionnotification = UILocalNotification()
locattionnotification.alertBody = "You have entered a high risk zone (Crown Range Road) , proceed with caution"
locattionnotification.regionTriggersOnce = false
locattionnotification.region = CLCircularRegion(circularRegionWithCenter: CLLocationCoordinate2D(latitude:
37.33182, longitude: -122.03118), radius: 100.0, identifier: "Location1")
UIApplication.sharedApplication().scheduleLocalNotification(locattionnotification)
如果您在进入和退出区域时收到多条消息,或者在您第一次进入该区域时只有一条消息,则regionTriggersOnce选项允许您打开和关闭。
您可以将纬度,经度和半径(以米为单位)的值更改为您想要的值,当您进入该点的半径范围内时,您将收到消息内容的警告。
有关不同选项的更多详细信息,请查看https://developer.apple.com/library/ios/documentation/iPhone/Reference/UILocalNotification_Class/
答案 1 :(得分:2)
SetSDK允许你现在真的很简单地设置它。基本上,只需几行代码。
SetSDK.instance.onDeparture(from: .any) { departed in
/* do your Swift things here */
let departureCoordinates = departed.location
// keep going
}
SetSDK.instance.onArrival(to: .any) { arrived in
/* do your Swift things here */
let arrivalCoordinates = arrived.location
// keep going
}
SDK处理持久性位置收集而不会中断电池,并且不断学习它发送通知的位置,因此无需手动输入地理围栏或其他类似内容。刚开始吧。