Trong iOS7, là Dịch vụ ANCS chính được quảng cáo liên tục hoặc cần được bật trong cài đặt bị bẻ khóa/triển khai bằng CBPeripheralManager tùy chỉnh (sử dụng Dịch vụ do Apple chỉ định và UUID đặc trưng) cho Người tiêu dùng thông báo tiềm năng để khám phá thành công và đăng ký?iOS 7 ANCS: Khám phá Dịch vụ ANCS chính UUID
Tài liệu Apple (cả số CoreBluetooth Programming Guide và ANCS Specification) đáng ngạc nhiên là bất kỳ thông tin nào về điều này. Họ dường như gợi ý về việc yêu cầu triển khai tùy chỉnh, nhưng đây chỉ là phỏng đoán về phía chúng tôi.
Được cung cấp dịch vụ ANCS chính UUID: 7905F431-B5CE-4E99-A40F-4B1E122D00D0
, thực hiện quét không có lần truy cập nào. Quét toàn bộ phổ BLE, như mong đợi, tạo ra các lần truy cập cho các thiết bị BLE khác, nhưng không phải là một thiết bị ANCS đơn lẻ.
EDIT 1:
Xác định một CBPeripheralManager tùy chỉnh và tự thêm Dịch vụ ANCS Apple chỉ định với đặc điểm liên quan của nó thất bại, với NSError: Error Domain=CBErrorDomain Code=8 "The specified UUID is not allowed for this operation."
Do đó, dường như các UUID Dịch vụ là được Apple bảo lưu (vì nó phải là), và chúng tôi không thể kích hoạt nó theo cách này.
Bất kỳ thông tin chi tiết nào được đánh giá cao; chúng tôi đã liên hệ với Apple về vấn đề này và sẽ cập nhật khi chúng tôi nhận được phản hồi từ họ.
Đoạn code dưới đây tái tạo các NSError đề cập ở trên:
// 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];
Tôi vẫn nhận được thông báo lỗi "UUID được chỉ định không được phép cho hoạt động này" trong ứng dụng Mac. Bạn có thể kết nối như thế nào? – thandasoru