0

現在、ブロードキャスト機能を追加して、Git codeに拡張して、nativescriptでBLEの広告+スキャンを実装しようとしています。 Androidでは既に広告を作成しており、iOSとAndroidの両方でこれをスキャンして解析することができます。BLE iOS Nativescript:データをブロードキャストできません

しかし、実際のデータをサービスに入れても、私の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' is undefined)"

を取得します。ただし、特性を追加しないと、サービスとして提供されますが、スキャン結果にサービスはありません。

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

*私はiOSの下でプログラムを作成していますが、現時点ではWindowsを使用しています。私は仕事場でiOSにしかログインできないためです。このため、私は現在利用可能なリンクを持っていません。

+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]; 

これを特性はまだ価値がないので、コードはまだ不完全ですが、サービス自体は特性について不平を言うことはありません。

関連する問題