에 대한
감사합니다. 주변 장치에서 연결을 끊으면 서비스 및 특성 개체는 더 이상 사용할 수 없습니다. 실제로, CBPeripheral조차도 당신의 아래에서 탈출 할 수 있습니다 - CoreBluetooth는 몇 분마다 장치 UDID가 변경되는 내부 동작을합니다 (CBPeripheral이 다른 iOS 장치 인 경우).
그러나 iOS 6 용 개발을 실행하는 경우 속도를 높일 수있는 방법이 있습니다. WWDC 2012에서 watch 고급 블루투스 토크를 사용하면 캐싱 서비스 및 특성에 대한 슬라이드가 보입니다. 본질적으로 OS는 모두 을 캐시 할 수 있지만 페어링 된 장치 만 캐시 할 수 있습니다. 페어링하려면 인증 오류가 충분하지 않은 쓰기 요청에 응답해야합니다. , 아이폰 OS 주변에 페어링 대화 상자가 팝업 된 후에는 쌍됩니다 가리 킵니다
- (void)peripheralManager:(CBPeripheralManager *)peripheralManager didReceiveWriteRequests:(NSArray *)requests {
...
[peripheralManager respondToRequest:request withResult:CBATTErrorInsufficientAuthentication];
...
}
: 예를 들어, 아이폰 OS 주변을 위해 당신은 다음처럼 작성할 수 있습니다. 그 외에는 코드를 변경할 필요가 없습니다. 정상적으로 discoverServices 등을 호출하면보다 신속하게 (즉각적으로) 응답합니다.
10.8.3에서도이 동작을 테스트했지만 작동하지 않는 것으로 나타났습니다. 따라서 OS X에서 속도를 향상시키는 방법을 모르겠습니다 (주변 장치에 연결되어있는 것 외에는 다른 것).
애플리케이션에 캐시하는 방법을 묻습니다. –
그것은 서비스와 특성을 캐시하는 솔루션이지만, 이미 서비스 사본을 만들려고했습니다. 그러나 불행하게도 CBPeripheral, CBService 및 CBCharacteristic은 NSCopying을 채택하지 않았습니다. 그들을 저장할 수있는 또 다른 방법이 있습니까? –
Pripheral을 배열에 넣을 수 있습니다. 이 배열은 사용자가 NSUserDefaults 클래스를 사용하여 기본값으로 저장할 수 있습니다. –