Chr*_*ton 78 ios core-bluetooth
受试者说的都是,真的.文档,就其本身而言,表明针对在iOS设备上运行的CoreBluetooth框架编写的应用程序可以在其背景权限列表中添加"蓝牙中心",因此在处于非活动状态时处理某种蓝牙事件,但是确切的事件是不送货?
例如:
Chr*_*ton 120
似乎没人知道,所以我买了一个iOS开发者帐户并进行了一些实验.这是我发现的:
在前台运行时,您可以使用CBCentralManager :: scanForPeripheralsWithServices开始扫描.您的扫描可以限制为广告特定服务的设备,或者不受限制(对于该呼叫的参数传递nil).它也可以允许或禁止重复 ; 在前一种情况下,每次iPhone收到广告包时,你都会得到一个didDiscoverPeripheral回调; 在后者中,每个设备只能找到一个回调.
输入背景时,规则显示如下:
我不知道连接尝试不可连接设备(例如BLE广告商,如实现邻近配置文件的设备)是否足够好,因为我的示例设备是可连接的.但是,至少对于可连接的设备,此扫描/连接/断开/扫描过程足以轮询设备在后台的存在.
以上结果是使用运行iOS 5.0.1的iPhone 4S收集的
除了克里斯的回答:
peripheral:didUpdateValueForCharacteristic:error:
在后台接收来自外围设备的通知(),即使在10分钟后也是如此.因此,当您想要在后台持续运行时,您有两个选择:
后来应该是来自WWDC 2012核心蓝牙视频的"事件背景" https://developer.apple.com/videos/wwdc/2012/ 但前者看起来像黑客,我不想依赖它.
我在iPhone5,iOS6.1.4上测试了这个
Apple终于发布了Core蓝牙编程指南,这里是官方说明
注意背景和CoreBluetooth与iBeacons相关的行为也很好,尽管Apple喜欢将其视为CoreLocation功能:
当打开iBeacon区域的通知时,它们将通知用户区域进入或退出.可以使这些通知取决于显示器是打开还是关闭.即使请求通知的应用程序在后台,这些通知也会起作用.(这在文档中很清楚).
不太明显:如果您使用iBeacon测距API,那么您的应用必须位于前台.它没有在文档中明确说明这一点 - 实际上,人们可能误以为范围应该在文档的后台工作.然而,一位苹果工程师在Apple开发者论坛的长篇帖子中隐藏了这个帖子,我也看到了这个失败.测距仅适用于前景.
人们可以发现外围广告iBeacons正在宣传的其他服务.但这只能在前台工作.因此,如果您希望使用iBeacons通知中心接近,然后使用其他基于BLE的服务执行其他一些事务,这将起作用,但仅限于前台.它不会在后台运行.对于在后台使用基于BLE的服务的交易,广告必须是常规的BLE广告,而不是iBeacon.您不能使用iBeacon广告在后台帮助发现过程,然后切换到在后台使用BLE服务.(我非常希望这可以工作,但没有骰子).
归档时间: |
|
查看次数: |
24153 次 |
最近记录: |