自 Xcode 6.3 以来可能出现的新 iBeacon 监控问题

Posted

技术标签:

【中文标题】自 Xcode 6.3 以来可能出现的新 iBeacon 监控问题【英文标题】:New Possible iBeacon Monitoring Issue since Xcode 6.3 【发布时间】:2015-04-14 22:01:09 【问题描述】:

所以这里是细分

所有 Swift 语言 配置一: Xcode 6.3 任何版本 ios 8.1+

配置2: Xcode 6.2 任何版本的 iOS 8.2 及更低版本,因为 XCode 6.3 需要构建到 iOS 8.3 设备。

Iphone 5 / Ipod 5th Gen 在两个测试中。

在配置 #1 期间 在我们的应用程序中,我们监控主要区域(没有主要/次要的 UUID)。引发 enter 事件后,我们还开始监视具有相同 UUID 但分配了主要/次要的子区域。进入具有多个较小区域的“主”区域后,当仅删除其中一个时,将调用 CLLocationManager 的函数 didExitRegion,但它是使用主区域而不是预期的子区域调用的。当我们退出所有子区域(从而退出主区域)时,我们会得到 2 个回调,这两个回调都是针对主区域的。

我们预期的预期行为是,当您退出子区域而不是主区域时,您会收到子区域的回调。当退出最后一个子区域时,您会收到 2 个回调,一个来自子区域,第二个来自主区域。 这是苹果文档中所写的行为以及它在我们的 CONFIG #2 aka 直到 Xcode 版本 6.3 中的工作方式(基本上它在 Xcode 升级之前是如何工作的。

我真正的问题:是否还有其他人遇到此问题,并且是否有人知道任何可能的解决方法来获取 didExitRegion 调用以返回正确的 CLRegion。我还使用了我们公司的一个开发人员帮助支持的东西,希望苹果自己可以回答,因为这似乎是 xcode 如何处理操作系统调用的一部分。因此,如果我收到他们的回复,我会将其发布在下面。 提前为我的新手道歉,这只是我的第二个或第三个问题,仍然掌握它。 编辑: 没关系,我是个大白痴,我不小心复制粘贴了一些我正在为不同问题修复的代码,从而覆盖了变量...

【问题讨论】:

您在 6.4 测试版上获得相同的行为吗? 没关系,我是个大白痴,我无意中复制粘贴了一些我正在为其他问题修复的代码,从而覆盖了变量... 【参考方案1】:

这只是一个想法……

来自startMonitoringForRegion:

您必须为要监控的每个区域调用一次此方法。如果应用程序已经监控了具有相同标识符的现有区域,则旧区域将被新区域替换。

先尝试注册较小的区域。还要在运行时查看monitoredRegions,看看它是否包含您所期望的内容。

【讨论】:

这里的identifier 是应用程序在监控区域时提供的字符串,而不是 UUID/Major/Minor - 这可能是问题所在,但前提是OP 没有为每个区域指定不同的标识符。 我为每个区域使用不同的标识符。并且所有不同的区域都显示在监控表中。主要和 2 个子区域。我遇到的问题是我的情况是使用 Xcode 6.2 而不是 6.3,实际上没有更改任何代码。【参考方案2】:

不是xcode的问题你没有正确设置didEnterRegion and didExitRegion的条件

【讨论】:

以上是关于自 Xcode 6.3 以来可能出现的新 iBeacon 监控问题的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 6.3 错误 - 无法在情节提要中创建 IBOutlet 引用或使用自定义 UIViewController

自 Xcode 13 / iOS15 以来,获取“公共数据库中不允许自定义区域”

XCode 6.3 错误:Interface Builder 文件中的未知类

UITableViewAutomaticDimension 在 Xcode 6.3 中不起作用

UILabel - iOS 8 Xcode 6.3 中的单行文本占用 2 行

自Xcode 10以来,UIImageView setImage在后台线程上崩溃[重复]