16

アプリケーションが iOS iBeacon と周辺サービスの両方を同時にアドバタイズすることを必要とする iOS 用のアプリケーションを作成しています。ユースケースでは、iBeacon に近接しているため、iOS によって起動された後 (ただしバックグラウンドで) 中央 (BLE の用語で) 周辺機器に接続する必要があるため、周辺機器で単に検出できるようにするのではなく、サービスを宣伝する必要があります。中央のバックグラウンドで実行されているアプリは、すべての周辺機器を検出するのではなく、利用可能なサービスによってのみ周辺機器を検出できます [] 。私のコードは、サービスまたは iBeacon のいずれかをアドバタイズするように機能しますが、両方を同時に行う方法がわかりません。iBeacon が 38 バイトの使用可能なスペースのうち 21 バイトを使用している可能性がありますが、それはまったくありません。

これは機能します(ビーコン):

self.beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:uuid 
    major:1 
    minor:1 
    identifier:@"bentboolean"];
NSMutableDictionary *dict = [[self.beaconRegion peripheralDataWithMeasuredPower:nil] mutableCopy];    
[self.peripheralManager startAdvertising:dict ];

これは機能します(サービス):

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:@[serviceUUID] forKey:CBAdvertisementDataServiceUUIDsKey];
[self.peripheralManager startAdvertising:dict ];

2 つを一緒に追加して、両方のサービスを同時にアドバタイズしようとしてもうまくいきません。サービスではなく、ビーコンのみをアドバタイズします。

self.beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:uuid 
    major:1 
    minor:1 
    identifier:@"bentboolean"];
NSMutableDictionary *dict = [[self.beaconRegion peripheralDataWithMeasuredPower:nil] mutableCopy];  
[dict setValue:@[serviceUUID] forKey:CBAdvertisementDataServiceUUIDsKey];  
[self.peripheralManager startAdvertising:dict ];

ご覧いただきありがとうございます。

4

2 に答える 2