您好我正在使用信标开发应用程序,即使应用已关闭,我也需要持续扫描信标。有没有能够在后台运行的cordova插件,请向我推荐示例应用程序教程
答案 0 :(得分:1)
背景模式只是部分答案。您需要在Info.plist中包含其中一个或两个条目:
然后在您的代码中的某个位置,您需要请求requestWhenInUseAuthorization或在您的情况下requestAlwaysAuthorization。然后,您需要在位置管理器委托中处理此问题。我是这样做的:
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
if (status == kCLAuthorizationStatusAuthorizedWhenInUse) {
[self startMonitoringAllRegions];
[self.locationManager startUpdatingLocation];
}
else if (status == kCLAuthorizationStatusNotDetermined) {
[self.locationManager requestWhenInUseAuthorization];
}
}
所以某个地方我要求开始监控一个信标区域,然后在这个方法中,我正在检查我是否有用户的许可,如果不是我正在请求if(来自plist的字符串将被显示)如果我有,我正在开始更新用户位置。
希望能让你前进:D
答案 1 :(得分:1)
这可以使用原生iOS代码,但不适用于Cordova。当你说"扫描"信标,这通常意味着使用CLLocation测距API,每秒提供所有可见信标的更新。为了在后台持续执行此操作,您需要:
location
作为后台模式。requestAlwaysAuthorization
为@sloik建议。我写了tutorial and reference app如何做到这一点。该教程提到这只工作3分钟,但在背景模式的位置,3分钟限制消失。请注意,添加此后台模式可能会使批准AppStore的应用更加困难。 Apple必须批准这种后台使用位置服务的原因。
您无法通过Cordova执行此操作的原因是因为JavaScript必须运行以收集测距API返回的信标数据。这在前台工作,但不在后台工作,因为Cordova依赖于WebView在前台执行JavaScript代码。在后台,您的自定义代码无法运行。
答案 2 :(得分:0)
答案 3 :(得分:0)
尝试this plugin使用iBeacons。似乎有一些插件可以让应用程序在后台运行,例如this one。我怀疑你会在同一个插件中找到这两个函数。