0

Git code으로 확장하여이 기능에 브로드 캐스트 기능을 추가하면 현재 nativescript에서 BLE advertising + scanning을 구현하려고합니다. Android에서는 이미 광고를 성공적으로 구성했으며 iOS와 Android 모두에서이를 스캔하고 구문 분석 할 수 있습니다.BLE iOS Nativescript : 데이터 브로드 캐스트 실패

그러나 실제 iOS 시도는 실제 데이터를 서비스에 넣지 못하고 있습니다. 특성이 포함되어 있지 않으면 잘못된 값으로 변환되는 오류 *가 발생하고 결과적으로 방송이있는 반면 서비스를 포함하지 마십시오. 튜토리얼을 따라 * (자바 스크립트 스타일로 코드를 번역 한 후) * 찾았습니다. setCharacteristics을 CBMutableService에 사용해야합니다. 그러나 특성을 추가하면 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' is undefined)"

을 얻을 것이다. 그러나, 추가 특성은 나에게 서비스하지만 scanresult에없는 서비스와 같은

CBMutableService: 0x17ef4bd0 Primary = YES, UUID = 2EACE71A-1F75-426E-833F-E77CB58F7201, Included Services = (null), Characteristics = (null)

을 줄 것이다.

* 직장에서 iOS에 로그인 할 수 있기 때문에 iOS에서 프로그램하고 현재 Windows를 사용하고 있습니다. 이 때문에 현재 사용할 수있는 링크가 없습니다.

+0

업데이트 : 대신 service.characteristics = <...>을 사용하여 특성을 직접 설정할 수 있음을 발견했습니다. 나는 UUID 배열을 사용하지 않고 UUID 자체를 조정해야했습니다. 여전히 성공적으로 브로드 캐스팅하지 못했습니다. 왜냐하면 값을 넣지 못하기 때문입니다. 그러나 특성 자체가 서비스에 올바르게 추가되고 있습니다. –

답변

0

특성 필드는 그러나 특성 자체가 하나의 serviceUUID으로, 올바른 할 필요가 직접 액세스 :

service.characteristics = [characteristic]; 
코드 (여전히 불완전)의

업데이트 버전 :

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 service = CBMutableService.alloc().initWithTypePrimary(serviceUUID, true); 
var characteristic = CBMutableCharacteristic.alloc().initWithTypePropertiesValuePermissions(characteristicUUID, CBCharacteristicPropertyRead | CBCharacteristicPropertyNotify, null, CBAttributePermissionsReadable); 
service.characteristics = [characteristic]; 

이를 특성에는 아직 값이 없기 때문에 코드는 여전히 불완전하지만 서비스 자체는 특성에 대해 불평하지 않습니다.

관련 문제