2015-01-31 6 views
0

Mac 용과 iOS 용의 두 가지 프로그램이 있습니다. Mac에서 iOS 장치에 연결할 때 원하는 서비스와 원하는 특성을 찾습니다. 특성을 찾은 후에는 peripheral.setNotifyValue(true, forCharacteristic: characteristic)을 사용하지만 iOS 측에서는 peripheralManager:central:didSubscribeToCharacteristic: 메서드가 호출되지 않습니다. characteristic.isNotifying인지 확인하면 거짓입니다. 알림 값을 true로 설정하면 이해할 수있는 것으로부터 알리고 있어야하며 값을 변경할 때마다 값이 업데이트됩니다. 왜 업데이트되지 않는거야? 미리 감사드립니다. 여기 CoreBluetooth 주변기기 .setNotifyValue (true, characteristic)가 알림을 보내지 않음

문제의 특성을 설정하는 코드입니다 -

self.characteristic = CBMutableCharacteristic(type: UUID_CHARACTERISTIC, properties: CBCharacteristicProperties.Read|CBCharacteristicProperties.Notifiy, value: self.dataToSend, permissions: CBAttributePermissions.Readable); 

을 - 당신이 원하는 경우

self.characteristic = CBMutableCharacteristic(type: UUID_CHARACTERISTIC, properties: CBCharacteristicProperties.Read, value: self.dataToSend, permissions: CBAttributePermissions.Readable) 
theService = CBMutableService(type: UUID_SERVICE, primary: true) 
theService.characteristics = [characteristic] 
self.peripheralManager.addService(theService) 
+0

당신이 알림을 허용하도록 특성에 속성을 설정 한 - service.characteristics에서 문자 {의 OS (X) 측의 – Paulw11

+0

에 서비스를 설정하는 코드를 보여 var에 aCharacteristic : CBCharacteristic로 CBCharacteristic = 문자; println ("\ t \ tFound 특성 \ (aCharacteristic)") 주변 장치 .setNotifyValue (true, 특성 : aCharacteristic) } – dmerr

답변

0

당신이 속성에 설정해야합니다 다음 notify 작업을 지원하도록 특성 알림을 지원하지 않는 특성에 대한 알림을 설정하려고하면 핵심 Bluetooth에서 무시됩니다.

또한 특성이 생성 될 때 값을 설정하면 나중에이 특성 값을 변경할 수 없으므로 통지는 다소 의미가 없습니다. 값을 변경하려면 특성을 생성 할 때 valuenil을 지정해야합니다.

토론 당신이 특성에 대한 값을 지정하는 경우,

값이 캐시는 해당 속성과 권한 CBCharacteristicPropertyRead 및 CBAttributePermissionsReadable, 로 설정합니다 - CBMutableCharacteristic 문서에서

각기. 따라서 특성의 값을 으로 쓸 수 있어야하거나 특성이 속한 게시 된 서비스의 수명이 만료 될 때 값이 변경 될 것으로 예상되는 경우 값을 nil로 지정해야합니다. 이렇게하면 값이 동적으로 처리되고 주변 장치 관리자가 주변 장치 관리자가 중앙에서 읽기 또는 쓰기 요청을받을 때마다 주변 장치 관리자가 요청합니다. 주변 관리자가 중앙에서 읽기 또는 쓰기 요청 을 수신하면 peripheralManager : didReceiveReadRequest : 또는 대리자 객체의 peripheralManager : didReceiveWriteRequests : 메소드를 각각 호출합니다.

관련 문제