即使应用程序已关闭,背景中的信标检测

问题描述:

嗨,我正在开发带有信标的应用程序,即使应用程序已关闭,我也需要继续扫描信标。有没有科尔多瓦插件,它能够在后台运行,请建议我的示例应用程序的教程即使应用程序已关闭,背景中的信标检测

+0

你确定你需要的应用程序在后台进行连续扫描信标,或将具有应用醒来后接近信标(例如,以示通知)就够了吗?前者要做得更加棘手(见下面的回答),而且也难以超越苹果审查团队。 – heypiotr

允许在项目的plist文件 位置更新UIBackgroundModes。

选择在左窗格中的项目,然后选择能力和扩大背景模式列表,然后选择位置更新选项:

enter image description here

+0

嗨感谢您的答复,我的要求是,当我是个附近的任何灯塔我需要得到一个本地通知,当我点击它的应用程序需要打开基于需要填充数据检测的信标主要和次要值 – Eagle

背景模式只有一个部分答案。你需要有一个或两个条目中的Info.plist:

enter image description here

然后在代码中的某个地方,你需要问requestWhenInUseAuthorization或你的情况requestAlwaysAuthorization。然后你需要在位置经理代表处处理。我做它像这样:

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status { 
    if (status == kCLAuthorizationStatusAuthorizedWhenInUse) { 

     [self startMonitoringAllRegions]; 

     [self.locationManager startUpdatingLocation]; 
    } 
    else if (status == kCLAuthorizationStatusNotDetermined) { 
     [self.locationManager requestWhenInUseAuthorization]; 
    } 
} 

所以地方我所要求启动监测的灯塔区域,然后在这个方法中我检查我是否有权从用户这样做,如果不是我如果我正在开始更新用户位置,请求是否(将显示来自plist的字符串)。

希望,这将让你去:d

+0

谢谢,你是否有工作代码的信标监测,即使应用程序从应用程序切换器中删除,并且如果有示例应用程序r的教程在那里?...... – Eagle

+0

我的应用程序是“扫描”只有在使用时,但当我测试它的图标显示在锁定屏幕上。这个想法是,你正在注册区域监控和iOS会'唤醒'你的应用程序。但正如我说我只有监控的区域,当应用程序在使用:)至于从网上教程任何我想:) – sloik

+0

没关系我无法扫描信标,你可以给我发教程 – Eagle

这可能是与本地iOS的代码,但不与科尔多瓦。当你说“扫描”信标时,这通常意味着使用CLLocation测距API,它每秒提供所有可见信标的更新。为了在后台持续做到这一点,你需要:

  1. 在Xcode中的应用的.plist filke添加location作为后台模式@ hasan83建议。
  2. 启动后台线程以保持您的应用在后台运行。
  3. 请求requestAlwaysAuthorization @sloik建议。

我写了一个tutorial and reference app如何做到这一点。该教程提到这只工作3分钟,但与位置的背景模式,3分钟限制消失。请注意,添加此背景模式可能会让您的应用程序被批准用于AppStore更加困难。苹果必须批准这种背景使用定位服务的原因。

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

+0

谢喜的链接您的回复,我的要求是,当我是个附近的任何灯塔我需要得到一个本地通知,当我点击它的应用程序需要打开基于需要填充数据 – Eagle

+0

明白了检测的信标主要和次要值。虽然应该可以通过自定义本地插件(或通过增加现有信标插件)来增强Cordova的支持能力,但不幸的是,该功能目前尚不存在。 – davidgyoung

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