即使app已关闭,也会在后台检测信标

时间:2015-08-09 09:56:53

标签: ios cordova cordova-plugins ibeacon

您好我正在使用信标开发应用程序,即使应用已关闭,我也需要持续扫描信标。有没有能够在后台运行的cordova插件,请向我推荐示例应用程序教程

4 个答案:

答案 0 :(得分:1)

背景模式只是部分答案。您需要在Info.plist中包含其中一个或两个条目:

JsFiddle

然后在您的代码中的某个位置,您需要请求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,每秒提供所有可见信标的更新。为了在后台持续执行此操作,您需要:

  1. 在@Canan83建议的XCode中,在您应用的.plist内容中添加location作为后台模式。
  2. 启动后台线程,让您的应用在后台运行。
  3. 请求requestAlwaysAuthorization为@sloik建议。
  4. 我写了tutorial and reference app如何做到这一点。该教程提到这只工作3分钟,但在背景模式的位置,3分钟限制消失。请注意,添加此后台模式可能会使批准AppStore的应用更加困难。 Apple必须批准这种后台使用位置服务的原因。

    您无法通过Cordova执行此操作的原因是因为JavaScript必须运行以收集测距API返回的信标数据。这在前台工作,但不在后台工作,因为Cordova依赖于WebView在前台执行JavaScript代码。在后台,您的自定义代码无法运行。

答案 2 :(得分:0)

  

允许UIBackgroundModes在项目plist中进行位置更新   文件。

在左窗格中选择项目,然后选择功能并展开背景模式列表,然后选择位置更新选项:

enter image description here

答案 3 :(得分:0)

尝试this plugin使用iBeacons。似乎有一些插件可以让应用程序在后台运行,例如this one。我怀疑你会在同一个插件中找到这两个函数。