【发布时间】:2016-11-07 17:10:10
【问题描述】:
我目前正在尝试通过扩展 Git code 在 nativescript 中实现 BLE 广告+扫描,并为此添加广播功能。在 Android 中我已经成功构建了一个广告,我可以在 iOS 和 Android 下扫描和解析它。
但是,我的 iOS 尝试目前未能将实际数据放入服务中:如果不包含任何特征,我会收到一个错误*,这显然会转换为无效值,因此,虽然有广播,但它不会包括服务。按照我找到的教程*(将其代码转换为 javascript 样式后),我应该在 CBMutableService 上使用 setCharacteristics。但是,添加特征会导致警告setCharacteristics 不是可用函数。
var kServiceUUID = NSString.stringWithString("2EACE71A-1F75-426E-833F-E77CB58F7201")
var kCharacteristicUUID = NSString.stringWithString("D40670C5-4ECC-4776-8661-B8A11C2833B3");
var serviceUUID = [CBUUID.UUIDWithString(kServiceUUID)];
var characteristicUUID = [CBUUID.UUIDWithString(kCharacteristicUUID)];
var message = arg.message || "No message configured.";
var service = CBMutableService.alloc().initWithTypePrimary(serviceUUID, true);
var service = CBMutableService.alloc().initWithTypePrimary(serviceUUID, true);
var characteristic = CBMutableCharacteristic.alloc().initWithTypePropertiesValuePermissions(characteristicUUID, CBCharacteristicPropertyRead | CBCharacteristicPropertyNotify, "test", CBAttributePermissionsReadable);
service.setCharacteristics([characteristic]);
Bluetooth._state.periManager.addService(service);
var dict = NSDictionary.alloc().initWithObjectsForKeys(["test2"],[kServiceUUID]);
Bluetooth._state.periManager.startAdvertising(dict);
我现在会得到
"CONSOLE LOG file:///app/main-view-model.js:199:32: TypeError: service.setCharacteristics is not a function. (In 'service.setCharacteristics([characteristic])', 'service .setCharacteristics' 未定义)"
作为错误。但是,不添加特征会给我
CBMutableService: 0x17ef4bd0 Primary = YES, UUID = 2EACE71A-1F75-426E-833F-E77CB58F7201, Included Services = (null), Characteristics = (null)
作为服务,但扫描结果中没有服务。
*我在 iOS 下编程,目前使用的是 Windows,因为我只能在工作时登录 iOS。因此,我目前没有可用的链接。
【问题讨论】:
-
更新:我发现我可以直接使用 service.characteristics = <...> 来设置特征。我确实必须调整特性以不使用 UUID 数组而是使用 UUID 本身。仍然没有成功广播,可能是因为我没有在其中输入值,但特性本身已正确添加到服务中。
标签: javascript ios bluetooth bluetooth-lowenergy core-bluetooth