问题标签 [region-monitoring]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5021 浏览

ios - CVisit 是如何工作的?

我正在开发一个应用程序,该应用程序严重依赖于监控可能在多个地区/地区的用户访问。我目前正在试验效果很好的区域监控,但是,位置回调并不像我想要的那样准确。我见过 CLVisit,但那里的文档并没有很好地解释它,尤其是它的使用。

0 投票
1 回答
421 浏览

ios - 应用程序didFinishLaunchingWithOption:检测应用程序进入iBeacon区域后是否启动

进入 iBeacon 区域时,iOS 会启动未运行的应用程序。第一个调用的方法是- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions。由于启动原因可能不同,我希望能够从启动选项中检测到启动是否是由于进入特定(我正在监视的)iBeacon 区域。这可能吗?

我从 ApplicationDelegate 文档中找到了以下内容,但我不相信这是正确的,因为它没有直接提及 iBeacons。

UIApplicationLaunchOptionsBluetoothCentralsKey该键的存在表明该应用程序之前有一个或多个 CBCentralManager 对象,并由蓝牙系统重新启动以继续与这些对象关联的操作。这个键的值是一个包含一个或多个 NSString 对象的 NSArray 对象。

数组中的每个字符串代表中央管理器对象的恢复标识符。这与您之前初始化中央管理器对象时分配给 CBCentralManagerOptionRestoreIdentifierKey 键的字符串相同。系统仅为具有活动或未决外围设备连接或正在扫描外围设备的中央管理器提供恢复标识符。

在 iOS 7.0 及更高版本中可用。

0 投票
0 回答
93 浏览

ios - 了解 iBeacon 区域监控延迟和测试

为了测试区域监控,我添加了一些在应用启动时触发的UILocalNotifications 。我还为我用来测试的应用程序启用了后台模式与 BLE 附件通信。

现在,我观察到它并不总是以相同的时间范围启动(因为苹果的文档已经预计会有一定的延迟以避免误报)。但是我正在尝试测试整个 iBeacon 区域监控的可靠性,因此我起草了一些基本的测试用例:

情况1:

  1. 手机已关闭且信标已打开(应用程序未运行)。
  2. 手机已开机

预期结果:我希望 iOS 能够唤醒应用程序。

实际结果:这并不总是立即发生。它在很长一段时间(例如20分钟)后才会发生。这个有官方上限吗?


案例二:

  1. 电话已打开且信标已关闭(应用程序未运行)。
  2. 信标已开启

预期结果:我希望 iOS 能够唤醒应用程序。

实际结果:通常确实会发生。


案例3:

  1. 电话已打开且信标已关闭(应用程序未运行)。
  2. 信标已开启
  3. 等到应用程序被唤醒(后台运行)。
  4. 关闭信标。
  5. 等到区域退出。
  6. 杀死应用程序(在后台运行时)。
  7. 打开信标。
  8. 等到 App 被唤醒(后台运行)。

上述流程通常有效。但是我注意到当我们等到 5 发生时它运行良好(退出区域并且该事件被后台运行的应用程序检测到)。


有什么建议或进一步的用例吗?我特别在案例 1 中挣扎。

0 投票
1 回答
631 浏览

ios - iBeacon:根据您当前的位置唤醒应用程序

这是什么意思?

在此处输入图像描述

我编写了一个已注册特定 iBeacon 区域监控的应用程序。我运行该应用程序一次,以便它可以向 iOS 注册监视但是,一旦我终止该应用程序并尝试对其进行测试(测试进入信标接近时应用程序是否由 iOS 启动

我注意到应用程序有时会被 iOS 成功唤醒(我添加了一个 UILocalNotification ,当应用程序被唤醒时触发,选项键等于UIApplicationLaunchOptionsLocationKey。我选择了进入时通知并在退出时通知监控首选项。

但是,当我关闭信标并双击主页按钮时,它会显示上图。当信标打开但没有触发通知时,它会保持这种状态很长一段时间。它有时会触发通知(但并非总是如此)。

为什么 iOS 会继续向我展示应用程序,即使它显然没有启动?是否保证应用程序在进入信标区域时始终启动?(我等了很长的 20 分钟.. 有时我会一起收到过去日期的通知.. 例如 30 分钟后,我会收到截止日期为 30 分钟前的通知...)

0 投票
0 回答
62 浏览

ios - 应用程序在 UIApplicationLaunchOptionsLocationKey 之后在后台唤醒应用程序后未调用 applicationWillTerminate

目标:我试图检测应用程序何时关闭。在 iOS 杀死我的应用程序后,没有调用 applicationWillTerminate。


问题:

applicationWillTerminate在应用程序被唤醒应用程序之后不会被调用,然后由 iOS (通常有 10 秒的时间)在后台通过位置事件(例如进入信标区域又名UIApplicationLaunchOptionsLocationKey)终止。这是为什么?

事件顺序:

  • 应用程序未运行
  • 信标已打开
  • 应用被 iOS 唤醒
  • 一段时间后(通常是 10 秒)应用程序停止运行
  • 但是没有调用 applicationWillTermiante 方法。
0 投票
1 回答
660 浏览

ios - 信标区域监控应用的 CLLocationManager 的生命周期

我注意到,每当我重新启动应用程序并查看以下方法时,我发现返回的 beaconRegion 不为零。这如何精确地工作?

换句话说,iOS 如何处理CLLocationManager的分配?每次唤醒应用程序时都会反序列化它并以这种方式检索区域信息吗?


这是运行以下代码时 Xcode 调试器控制台的输出:


下面我粘贴我用来测试的源代码,它可能会有所帮助(它基于 Apple 提供的AirLocate示例):

0 投票
1 回答
76 浏览

ios - iOS 区域监控 - 它是否在应用更新后仍然存在?

我有一个使用区域监控在后台唤醒的应用程序。区域的初始化是在应用程序启动时完成的,因此显然区域监控在应用程序首次启动之前(即安装后)是不活动的。

假设应用程序至少启动过一次,应用程序更新后会发生什么?用户是否必须重新启动应用程序才能使区域监控继续工作?

应用程序更新对区域的配置没有任何变化。

0 投票
1 回答
974 浏览

ios - 监控区域时,iBeacon 主要/次要值是否可用?

我正在尝试构建一个测试应用程序,该应用程序将检测部署在几个物理位置的一组给定 iBeacon。检测应该在后台进行,并按照一定的逻辑调用服务器。

Apple 的经验法则是对我的所有物理位置使用相同的 UUID:

UUID 由所有位置共享。

这允许 iOS 设备使用单个标识符来识别具有单个区域的任何商店。

每个特定的商店,旧金山、巴黎和伦敦,然后被分配一个唯一的主要值,允许设备识别它所在的特定商店。

我找到了使用给定 UUID 设置区域的调用,但没有找到检测到 UUID 时返回的对象以及返回的字段。

当 iOS 检测到带有给定的信标时,应用程序在哪里获取major/值?minorUUID

0 投票
1 回答
120 浏览

ios - iOS 设备重启后需要多长时间才能开始接收位置更新?

我有一个执行地理围栏/信标区域监控的应用程序。该应用程序在前台、后台和终止状态下运行良好。

问题:在我重新启动手机(没有杀死应用程序)后,我注意到信标/地理围栏事件(进入/退出)有延迟,并且在重新启动时不手动启动应用程序。即使我之前进入该区域,我也只会在重启 3-4 分钟后才开始获取进入/退出事件。这是正常行为吗?

谢谢

0 投票
1 回答
256 浏览

ios - CLRegion 后台监控未发生

在我的项目设置>目标>功能中,我打开了背景模式,并选中了“位置更新”。

在此处输入图像描述

在此处输入图像描述

应用委托

故事控制器

我稍后会通过以下方式监视该地区:

当我离开或进入 1 公里范围且应用程序后台运行时,我没有收到任何通知。

我该如何进行这项工作?当我注销我的监控区域时,我确实看到 lat & lng 是正确的。