iOS7では、常にアナウンスされるプライマリANCSサービスであるか、または難読化された設定で有効にする必要がありますか?カスタムCBPeripheralManager(Apple指定のサービスおよび特徴的なUUID)を使用して、それを正常に検出して登録することができますか?iOS 7 ANCS:プライマリANCSサービスUUIDの検出
アップルのドキュメント(CoreBluetooth Programming GuideとANCS Specificationの両方)は、これに関する驚くほどの情報に欠けています。彼らはカスタム実装を必要とするように思えるようですが、これは私たちの一部の推測です。
プライマリANCSサービスUUID:7905F431-B5CE-4E99-A40F-4B1E122D00D0
が指定されている場合、スキャンを実行するとヒットは発生しません。期待どおりにBLEスペクトル全体をスキャンすると、他のBLEデバイスのヒットが得られますが、単一のANCSデバイスはヒットしません。
EDIT 1:
カスタムCBPeripheralManagerを定義して、手動でNSErrorと、それに関連する特性でアップル指定のANCSサービスを失敗した追加:Error Domain=CBErrorDomain Code=8 "The specified UUID is not allowed for this operation."
したがって、サービスUUIDがあることが表示されますAppleが予約しています(そうしなければならない)、このようにして有効にすることはできません。
洞察力があれば幸いです。 AppleはこれについてAppleに連絡し、彼らから連絡があったときに更新します。
以下のコードは、NSErrorは、上述の再現:
// define the ANCS Characteristics
CBUUID *notificationSourceUUID = [CBUUID UUIDWithString:@"9FBF120D-6301-42D9-8C58-25E699A21DBD"];
CBMutableCharacteristic *notificationSource = [[CBMutableCharacteristic alloc] initWithType:notificationSourceUUID properties:CBCharacteristicPropertyNotifyEncryptionRequired value:nil permissions:CBAttributePermissionsReadEncryptionRequired];
CBUUID *controlPointUUID = [CBUUID UUIDWithString:@"69D1D8F3-45E1-49A8-9821-9BBDFDAAD9D9"];
CBMutableCharacteristic *controlPoint = [[CBMutableCharacteristic alloc] initWithType:controlPointUUID properties:CBCharacteristicPropertyWrite value:nil permissions:CBAttributePermissionsWriteEncryptionRequired];
CBUUID *dataSourceUUID = [CBUUID UUIDWithString:@"22EAC6E9-24D6-4BB5-BE44-B36ACE7C7BFB"];
CBMutableCharacteristic *dataSource = [[CBMutableCharacteristic alloc] initWithType:dataSourceUUID properties:CBCharacteristicPropertyNotifyEncryptionRequired value:nil permissions:CBAttributePermissionsReadEncryptionRequired];
// define the ANCS Service
CBUUID *ANCSUUID = [CBUUID UUIDWithString:@"7905F431-B5CE-4E99-A40F-4B1E122D00D0"];
CBMutableService *ANCS = [[CBMutableService alloc] initWithType:ANCSUUID primary:YES];
ANCS.characteristics = @[notificationSource, controlPoint, dataSource];
// define the Advertisement data
NSMutableDictionary *advertisementData = [NSMutableDictionary dictionary];
[advertisementData setValue:@"CUSTOM_ANCS" forKey:CBAdvertisementDataLocalNameKey];
[advertisementData setValue:@"7905F431-B5CE-4E99-A40F-4B1E122D00D0" forKey:CBAdvertisementDataServiceUUIDsKey];
// publish the ANCS service
[self.peripheralManager addService:ANCS];
Macアプリケーションで "指定されたUUIDはこの操作に使用できません"というエラーメッセージが表示されます。どのように接続できましたか? – thandasoru