Tag: 蓝牙

EAAccessoryDidConnectNotification不会触发,直到Bluetooth Accessory Picker完成块被调用

我最近开始使用EAAccessoryManager showBluetoothAccessoryPickerWithNameFilter方法来连接到我们的MFI蓝牙配件(如果它还没有连接),当我们的应用程序启动。 我遇到了以下情况: 配件断电 用户启动应用程序 显示配件选取器 用户开启附件(之前已配对,因此重新连接) 附件选取器继续显示,应用程序不会收到EAAccessoryDidConnectNotification直到用户按下“取消” EAAccessoryDidConnectNotification附件选取器。 在上面解释的情况下,即使我们连接到由NSPredicate定义的附件,拾取器NSPredicate挂起,在调用拾取器完成块之前,我们不会收到附件已连接的通知。 用户有点陷入僵局。 我们正在运行iOS 7.1.1并且已经针对7.1和7.0进行了testing。 任何帮助,将不胜感激。 这里有一些日志显示我所看到的: 2014-04-28 12:03:48.028 App[508:60b] BTM: attaching to BTServer 2014-04-28 12:03:48.262 App[508:60b] BTM: setting pairing enabled 2014-04-28 12:03:55.578 App[508:60b] BTM: attempting to connect to service 0x00000001 on device "Accessory-10" 00:07:80:79:92:8D 2014-04-28 12:03:55.966 App[508:60b] BTM: connection to service 0x00000001 on device "Accessory-10" 00:07:80:79:92:8D […]

iOS蓝牙CBCharacteristic UUID弃用?

在最新的Apple文档中,CBCharacteristic的UUID属性通过它绘制了一条线,并且仅在5.0到7.1之间才提供该标记。 但是,你通常期望看到的“被弃用的”这个词根本就没有。 更重要的是,没有什么可以确定一个特征的build议,例如,当我们在委托方法外围设备中传递一个特征时:didUpdateValueForCharacteristic :. 在这种方法中,决定我正在处理的是哪个特征是至关重要的。 CBCharacteristic实例的描述符成员是零。 那里还有什么? 苹果计划如何区分特征? UUID的全部是识别…

检测连接的audio设备的iOS

我试图找出如何检测如果任何audio设备连接在iphone / ipad / ipod上。 我知道所有有关audio路由调用和路由更改callback,但这些都不告诉我什么附加的东西。 他们只报告audio当前路由的位置。 我需要知道,例如,如果耳机和/或蓝牙仍然连接,而audio通过扬声器路由。 或者,例如,如果用户在使用蓝牙时插入耳机,然后决定断开蓝牙,则需要知道即使audio仍然通过耳机路由,蓝牙也是断开的。

我可以向组内的单个iBeacon设备发送消息吗?

我只是读了一下iBeacon,我可能想用它来做一个我目前正在参与的项目。我现在所理解的是: 简而言之,一个iBeacon设备向任何范围内的人广播一条消息。 该消息包括发送者的MAC地址,并且从其信号强度中,接收者可以计算距离。 iBeacon设备既可以是发件人,也可以是接收者,或者兼而有之。 1)首先; 它是否正确? 其次,在维基百科页面上,我读到it could enable payments at the point of sale (POS) 。 因为我明白,这基本上是一个非常本地的广播服务,我只是想了解如何这样的工作。 2)如果付款,商店或客户开始付款? 3)你将如何防止其他附近的设备拿起支付信息? 4)最后; 是否有可能发送一个iBeacon消息到只有一个iBeacon设备标识其MAC地址? 任何提示和见解都非常受欢迎!

Swift获取decimal.value的特性

我尝试使用Swift 3在Xcode中创build一个小型的iOS应用程序。我尝试连接到一个BLE设备,然后读取电池电量。 我得到这个回应: … UUID =电池电量,属性= 0x12,值= <30​​> … 然后我尝试将HEX 30转换为十进制数字48.但是我不知道如何。 我试过这个: print(String(bytes: characteristic.value!, encoding: String.Encoding.utf8)) print(Int(strtoul(str, nil, 16))) let dataBLE = String(data: characteristic.value!, encoding: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) print(dataBLE) 但是这些工作都没有。 我怎样才能从hex转换为十进制的值来自characteristic.value ?

kontakt.io信标的问题

我们刚刚收到了10件。 一套来自kontakt.io(波兰)的信标。 不知何故,他们似乎不能正常工作,或者我们没有恢复如何正确地操作。 在我们将它们踢走之前,有人可以告诉我这是否是信标(iOS)的常见行为? 我们确实收到了恒定范围的通知,但是这些通知不包含范围内的信标,既不在我们自己的testing应用程序中,也不在苹果的AirLocate示例或官方的kontakt.io应用程序中。 我们总是需要closures和打开蓝牙来查看任何内容,AirLocate显示了一些,但信息不足(总是显示“Unknown”),我们自己的testing应用程序只接收一个信息,而不是所有10个信标,尽pipe它们在里面范围内,而kontakt.io应用程序不会显示或触发反色。 当我们能够在AirLocate例子中看到范围内的信标时,列表自动填充(在切换蓝牙状态之后),但是在几秒钟内丢失所有信标。 这是一个错误configuration,因此我们的错,我们是否获得了破坏的信标,或者这是共同的行为…? 任何帮助赞赏。 谢谢!

蓝牙BLE设备一旦连接就会断开连接?

我一直在使用连接到蓝牙BLE设备的Swift编写应用程序。 出于某种原因,应用程序并不总是连接到设备。 在这种情况下,它将连接,但直接断开连接。 这只会发生10次它连接,但绝对干扰应用程序的可靠性。 我正在使用CoreBluetooth连接到BLE设备。 再次尝试连接时,通常会重新连接,而其他与此设备通信的应用程序每次都能正常工作,所以我相信这不是外围设备的问题。 我只想知道有没有人有类似的问题,或者有什么特别的原因可能会发生? 编辑:这是我的表的willSelectRow的代码。 这是我得到外设连接的地方。 func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? { centralManager.stopScan() connectingPeripheral.append(discoveredDeviceArrayInfo[indexPath.row]) connectPeripheralNow(connectingPeripheral[0]) return indexPath } 这是我得到它连接,在这一点上,我select设置设备的CBPeripheral细节连接到的行。 connectPeripheralNow看起来像这样: func connectPeripheralNow(peripheral: CBPeripheral!){ self.centralManager.connectPeripheral(peripheral, options: nil) } didConnectPeripheral和didDiscoverServices看起来像这样 func centralManager(central: CBCentralManager,didConnectPeripheral peripheral: CBPeripheral) { peripheral.delegate = self peripheral.discoverServices([CBUUID(string: "FFE5")]) print("SUCCESS: Connected to " + peripheral.name!) } func peripheral(peripheral: CBPeripheral, […]

连接到配对的蓝牙设备iOS8.1

新手在这里所有的事情CoreBlooth。 我已经成功地编写了一个小应用程序来连接到Wahoo Blue HR心率监视器,并检索我的心率bpm。我使用了下面的教程,但重写了代码迅速。 链接到教程 我现在正试图写一个简单的应用程序来检索我的蓝牙LE BP阅读器的血压读数。 有问题的模型是iHealth BP5。 当我使用下面的代码扫描这个设备时,我什么也没有得到。 func centralManagerDidUpdateState(central: CBCentralManager!) { if central.state == CBCentralManagerState.PoweredOff { println("CoreBluetooth BLE hardware is powered off") } else if central.state == CBCentralManagerState.PoweredOn { println("CoreBluetooth BLE hardware is powered on and ready") let IHEALTHBP5_BP_DEVICE_INFO_SERVICE_UUID = CBUUID(string:"1810") let services = [IHEALTHBP5_BP_DEVICE_INFO_SERVICE_UUID] centralManager!.scanForPeripheralsWithServices(services, options: nil) } } 我已经明显地将服务UUID改为BP监视器,并使用运行LightBlue的iPad并启动血压服务进行检查。 它可以很好地模拟一个BP服务,而不是BP5设备本身? […]

刷新许多蓝牙外设的RSSI值

我试图从几个蓝牙外设iOS(6与BLE)mesure RSSI指标。 我可以通过scanForPeripheral获取RSSI: NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], CBCentralManagerScanOptionAllowDuplicatesKey, nil]; [_manager scanForPeripheralsWithServices:nil options:options]; 再加上: – (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI { 这工作,但我没有控制的数据包接收率,结果似乎不确定。 我读过: https : //stackoverflow.com/a/12486927/270209但我的速度是不是接近100毫秒(更多1〜2秒) 如果我连接到设备,readRSSI的结果似乎更可靠。 我正在寻找一种方法来“刺激”外围设备,以在扫描模式下进行更多频繁的更新,或者一次连接多个外设。 谢谢 编辑:我也试图快速启动/停止扫描,似乎在开始扫描检测到更多的设备和更新更频繁

AirLocate仅查找特定的UUID吗?

我一直在testing一些iBeacons – 我将信标的UUID设置为默认值以外的值,AirLocate没有find它。 AirLocate只寻找特定的信标UUID或者我做错了什么? 谢谢!