Tag: 核心蓝牙

使用CoreLocation重要位置监控和CoreBluetooth时,电池耗尽

我们已经发布了一个在后台运行的应用程序,并使用CoreBluetooth & CoreLocation自动保存您的停车位置。 在高层次上,我们的应用程序只是寻找一个CoreBluetooth断开事件,并打开GPS,直到我们得到一个定位(精度<= 10米)或3分钟的最大时间(这可能发生在停放在没有GPS覆盖的地下停车场)。 然后,我们使用重要的位置监测来自动重新启动我们的应用程序,以防系统终止我们的应用程序。 在我们的开发过程中,我们从来没有看到自己的电池耗尽问题,但是我们75%的用户表示他们看到了显着的电池消耗。 我们的支持者中有10%对此次调查做出了回应,因此很难确定细分的代表性,但是这个用户的比例很大。 http://www.findmycarsmarter.com/forum/viewtopic.php?f=4&t=30 然后,我们发布了一个更新,允许用户禁用重要的位置监控,60%的人表示通过禁用重要的位置监控漏洞消失。 http://www.findmycarsmarter.com/forum/viewtopic.php?f=4&t=42 最初,我们不能自己重复排水问题,但是我们发现,当我们安装了一个简单的应用程序,只需打开显着的位置监测,结合查找我的汽车更智能,我们间歇性地看到了stream失的重现。 在排水状态下,手机不进入hibernate状态。 即使手机已进入睡眠状态并且显示屏已closures,((设置 – >使用情况 – >自上次完整充电以来的时间))中的使用时间也会持续增加。 有些东西阻止系统进入hibernate状态。 电池在这个阶段每小时消耗大约15%。 这个排水pipe间歇性地出现,似乎在一两个小时后自行清除,随机再来。 我们还没有find一种可靠性重现stream失的方法。 我们认为这个问题是由多个客户端调用CoreLocation引起的。 我们询问了一些遇到问题的用户,以便擦除他们的电话,并只安装“查找我的智能汽车”应用程序。 只是安装了这个应用程序,排水渠没有展示。 我们有其他的报道,当我们的应用程序与谷歌纵横或Facebook等使用,当他们看到stream失发生。 或者,如果他们去杀了其他的应用程序,漏水消失。 我们已经看到通过一个电源周期的漏洞,没有启动应用程序。 这意味着它必须是防止操作系统进入hibernate状态的系统级服务。 尽pipe我们认为这个问题是由多个客户端调用CoreLocation的一些竞争条件引起的,但我们从来没有看到使用CoreLocation的应用程序重现问题。 我们甚至创build了4个或5个不同的应用程序,将同时访问CoreLocation,我们没有看到漏水发生。 然而,当我们使用CoreLocation的应用程序和使用CoreLocation + CoreBluetooth的第二个应用程序时,我们看到了问题。 有很less的应用程序使用CoreLocation + CoreBluetooth组合,所以潜在的这就是为什么更多的开发者没有遇到这个问题。 尽pipe我们无法解释CoreLocation和CoreBluetooth如何相互作用导致这个漏洞,以及CoreLocation的第二个应用程序如何进入等式。 由于漏极是间歇性的,所以只是在我们使用CoreLocation + CoreBluetooth进行testing的时候才会出现问题。 在只有这两个应用程序安装了CTM1和FMC的5.0.1 iPhone 4S上,我们可以间歇性地进入漏极状态。 有趣的是,在我们的普通设备上,擦除设备上的漏水问题似乎不太常见。 不幸的是,我们只看到了几次排水状态,没有能够可靠地重现排水,我们没有一个良好的控制状态工作。 我们已经向苹果公司提交了一个错误报告,并且发布了一个技术支持事件,但是Stackover社区也可以提供一些见解。 我们在5.0.1和5.1 Beta 3中都看到了这个问题。 CTM1 http://www.findmycarsmarter.com/files/CTM1.zip On Going into […]

用蓝牙LE在iOS和Android之间进行通信

我有一个使用CoreBluetooth在iPad(中央)和iPhone(外设)之间进行通信的应用程序。 我有一个有两个特点的服务。 我有一个运行最新的Android 4.3与BTLE支持的Nexus 7。 Android在BTLE的风潮上稍微晚了一点,但似乎他们已经接近iOS的样子了,最初他们只支持作为中央处理器的外设模式进入后期版本。 我可以加载示例Android BTLE应用程序并浏览附近的外围设备。 通过我的iPhone广告作为外设,我可以在Android端的附近外围设备列表中看到来自CBAdvertisementDataLocalNameKey的值。 我可以连接到iPhone,连接时蓝牙符号从浅灰色变成黑色。 连接总是持续10秒,然后断开连接。 在Android方面,我应该看到一个可用的服务和特性列表在连接时立即出现。 我已经certificateAndroid代码安装正确,因为我可以将它连接到TI的CC2541DK-SENSOR硬件,并且在连接到它时列出所有服务和特性。 我花了几天的时间解决这个问题,但没有成功。 问题是我无法确定哪个设备出现错误,从而导致断开连接。 CBPeripheralManagerDelegate在连接阶段或服务发现阶段没有callback,所以我不知道在哪一点发生错误(如果错误是在iOS端)。 在Android端调用一个方法来启动服务发现,但是他们的callback“onServicesDiscovered”永远不会被调用,这是令人困惑的。 有没有什么办法可以深入到iOS端的BTLE通信的内部,看看发生了什么事情,并确定发生了什么错误?

Xcode中的iPhone模拟器是否支持蓝牙低功耗?

我正在尝试一些支持蓝牙低功耗的新Mac mini的iOStesting应用程序。 CoreBluetooth框架用于那些。 但是,我无法在iPhone模拟器中使用蓝牙,这是Xcode的一部分。 当我分配一个新的CBCentralManager ,centralManagerDidUpdateState:接收CBCentralManagerStatePoweredOff表示蓝牙当前closures。 我第一次运行文本应用程序,然后打开一个盒子,看起来很漂亮(只使用语言variables,而不是实际的文本)和两个button。 第一个带我到设置面板,有一个选项来启用蓝牙。 但是,我告诉它启用蓝牙后,它只显示旋转animation,它不会完成或取消。 即使重新启动Mac后,仍然只有旋转animation。 箱子也不开放了。 从本质上讲,我认为iPhone模拟器应该支持蓝牙低功耗。 否则,模拟器上的设置应用程序中没有选项是没有意义的。 此外,中央pipe理器状态是CBCentralManagerStatePoweredOff但不支持CBCentralManagerStateUnsupported ,这将代表该平台不支持蓝牙低功耗 。 这也给希望支持存在。 iPhone模拟器是否支持蓝牙低功耗? 如果是,我该如何启用它?