ios-location-listener
该库提供在应用处于后台时读取用户位置的功能。
安装
您可以通过CocoaPods安装ios-location-listener。要安装它,请将以下行添加到您的Podfile中:
pod 'ios-location-listener'
用法
为了使用这个库,您需要
-
修改Info.plist文件如下:a)添加新元素键[NSLocationAlwaysAndWhenInUseUsageDescription] = 值["你需要始终访问位置的原因"] b)添加新元素键[NSLocationWhenInUseUsageDescription] = 值["你需要始终访问位置的原因"]
-
选择您的项目,选择“签名与能力”选项卡,点击“+”按钮并添加“后台模式”。检查并激活“位置更新”、“后台获取”和“后台处理”。
-
验证用户是否已激活GPS服务。
-
在您的项目中,创建StreamLocation类的实例和一个AnyCancellable类型的var。
let stream = StreamLocation()
@State var cancellable: AnyCancellable? = nil
let publisher = stream.subject
- 当您想开始更新位置流时,只需在流中调用startUpdatingLocations方法,然后从流中读取,如下所示
stream.startUpdatingLocations()
DispatchQueue.main.async{
self.cancellable = publisher?.sink{
s in
print("\(s.coordinate.latitude)-\(s.coordinate.longitude)")
}
}
注意:即使应用程序被终止,只要没有强制关闭流,此操作将保持活动状态。如果应用程序被终止,位置将在大约150mt时进行监视 - 最小刷新由iOS决定。
- 当您想停止更新位置流时,请对stream调用stopUpdates方法,并取消流操作,如下所示
stream.stopUpdates()
DispatchQueue.main.async {
self.cancellable?.cancel()
}
- 默认情况下,UserNotification中的信息为:"上次位置 lat:(currentLat), long: (currentLong)"。如果您想个性化它,可以在流上调用setAlertMessage方法并传递一个包含您希望显示的自定义消息的字符串。
作者
Kuama 开发团队与
许可证
ios-location-listener 根据 MIT 许可证提供。有关更多信息,请参阅 LICENSE 文件。