Я пишу приложение для iOS, которое требует, чтобы приложение рекламировало iOS iBeacon, а также рекламировало периферийную службу одновременно. Необходимо, чтобы услуга рекламировалась скорее, а просто обнаруживалась на периферии, потому что для использования используется центральный (на языке BLE), подключаемый к периферийному устройству после того, как он проснулся iOS (но все еще в фоновом режиме) из-за близости к iBeacon. Приложения, работающие в фоновом режиме в центрах, могут обнаруживать периферию только доступным сервисом, а не открывать все периферийные устройства []; Мой код работает, чтобы рекламировать сервис или iBeacon, но я не понял, как сделать это одновременно. Возможно ли, что iBeacon использует 21 байт из 38 байт доступного пространства, и просто недостаточно места для рекламы маяка, а также службы?
Это работает (маяк):
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 ];
Добавление двух вместе, попытка рекламы обеих служб в одно и то же время не работает. Он рекламирует только Beacon, а не услугу:
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 ];
Спасибо, что посмотрели!