iOS 位置提醒 "While Using" 应用程序
iOS Location Reminders "While Using" the app
我一直在开发一款新应用,它通过地理围栏利用基于位置的提醒。
据我所知,为了做到这一点,应用程序必须通过以下方式请求授权:
CLLocationManager.requestAlwaysAuthorization()
到目前为止,它按预期工作,但我很好奇 "Reminders" 应用程序和 Omnifocus 等其他应用程序如何仅请求 "When in use" 或:
locationManager.requestWhenInUseAuthorization()
这些应用程序仍然能够提供基于位置的提醒,而无需始终请求授权。我还注意到,这些应用程序不会在后台触发状态栏上的 "location" 图标,而我的应用程序会这样做。他们如何让这些应用程序发送这些通知?
谢谢!
D
在观看 WWDC CLLocation 更新到 iOS 8 时找到了答案:
https://developer.apple.com/videos/wwdc/2014/?id=706
提醒和类似应用无需 AlwaysAuthorization 即可运行,因为它们利用了 UILocalnotification 框架更改。从iOS 8开始,支持Region Based Triggering。
所以现在,如果您实际上不需要 "Launch" 您的应用程序在后台并在位置更改时执行某些操作,而只是显示通知,您可以只使用 UILocalNotification 和 RegionBased Triggering。
@NSCopying var region: CLRegion!
在iOS8中,UILocalnotification有'region'属性,对应一个CLRegion对象
来自 Apple 文档:
为这个(区域)赋值 属性 会导致在用户越过区域边界时发送本地通知。区域对象本身定义了当用户进入或退出区域时是否触发通知。这个属性的默认值为nil。
您可以为此 属性 或 fireDate 属性 指定一个值,但不能同时指定两者。尝试安排包含区域和触发日期的本地通知会引发异常。
我一直在开发一款新应用,它通过地理围栏利用基于位置的提醒。
据我所知,为了做到这一点,应用程序必须通过以下方式请求授权:
CLLocationManager.requestAlwaysAuthorization()
到目前为止,它按预期工作,但我很好奇 "Reminders" 应用程序和 Omnifocus 等其他应用程序如何仅请求 "When in use" 或:
locationManager.requestWhenInUseAuthorization()
这些应用程序仍然能够提供基于位置的提醒,而无需始终请求授权。我还注意到,这些应用程序不会在后台触发状态栏上的 "location" 图标,而我的应用程序会这样做。他们如何让这些应用程序发送这些通知?
谢谢!
D
在观看 WWDC CLLocation 更新到 iOS 8 时找到了答案:
https://developer.apple.com/videos/wwdc/2014/?id=706
提醒和类似应用无需 AlwaysAuthorization 即可运行,因为它们利用了 UILocalnotification 框架更改。从iOS 8开始,支持Region Based Triggering。
所以现在,如果您实际上不需要 "Launch" 您的应用程序在后台并在位置更改时执行某些操作,而只是显示通知,您可以只使用 UILocalNotification 和 RegionBased Triggering。
@NSCopying var region: CLRegion!
在iOS8中,UILocalnotification有'region'属性,对应一个CLRegion对象
来自 Apple 文档: 为这个(区域)赋值 属性 会导致在用户越过区域边界时发送本地通知。区域对象本身定义了当用户进入或退出区域时是否触发通知。这个属性的默认值为nil。
您可以为此 属性 或 fireDate 属性 指定一个值,但不能同时指定两者。尝试安排包含区域和触发日期的本地通知会引发异常。