9

도에 I-phone5 IOS 6.0.1 null의 경우, 그것은 잘 작동합니다. 애플 스토어에 응용 프로그램을 업로드 할 때 , 그들은 나에게 응용 프로그램 충돌, 박쥐 프로그래밍을 반환,하지만 난CBperipheral의 UUID 내가 스캔 IOS 6.0.1 아래 있지만 아이폰 4S에 '블루투스 르'장치에 연결하는 응용 프로그램이,

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI; 
가 null UUID와 함께 나에게 주변을 돌아

아이폰 5에서 응용 프로그램을 시도 할 때 난 단지 충돌을 이해 .

내가 주변, 이름, UUID를, 수신 전계 강도와 advertData를 인쇄, 모든 좋은 그러나 UUID가 null, 내가 응용 프로그램에서 UUID를 사용합니다. 이 내 응용 프로그램이 충돌하게, null UUID 제어 할 수 있으며이 응용 프로그램을 제어 할 수 없다는 것을 의미합니다.

누군가는 무슨 일이 일어나고 가능한 해결책을 알고 있습니까?

+0

다음은 가능한 솔루션입니다. – Manelonix

+0

서비스를 읽은 후 uuid에게 묻고 해결책을 찾았습니다. 연결이 stablished되었을 때만 알 수 있고 장치의 uuid와 상담하십시오. 곧보실 수 있습니다. – Manelonix

+0

iPad에서 실행할 때이 호출을 사용하는 코드가 있는데 비빌 periferial.UUI가 있습니다. iPhone 6.0.1에서 null –

답변

2

우리가해야할 일은 다음과 같습니다. NSLog를 사용하여 주변 장치 개체를 쓸 수는 없지만 연결을 실행하기 전에 주변 장치 uuid 속성을 사용할 수 없습니다. 그것은 항상 null입니다. 이전에 읽지 않은 서비스가 종료되었을 때 uuid를 요청한 다음 충돌없이 i-phone5에서 응용 프로그램을 실행할 수 없습니다. 우리가 전에 연결 UUID 이물 요청해야,

나는 그것이 IOS 버그라고 TI (텍사스 인스트루먼트)에 대해 그것을 읽고,하지만 난 것은 그것은 상상력 보안 업데이트입니다.

1

는 먼저 접속 한 후, UUID는 장치에 의해 캐쉬/기억된다. 나중에 같은 주변 장치가 발견되면 연결 전에 UUID를 사용할 수 있습니다. "retrievePeripherals"를 호출하여 기억 된 주변 장치를 모두 요청할 수 있습니다.

0

인해 코드의 비동기 특성으로 내가 생각하는 아이폰 5 자체가 더 분명하게 아이폰 OS 6 버그/기능 향상 될 것으로 보인다. 나는 너무 4S에서 작동 코드가 아닌 5

에 대부분의 사람들에 의해 게시 해결 방법은 당신이 그것을 찾을 당신이 찾을 수있는 모든 장치에 연결할 수 있는지 확인하는 것입니다. 설명은 UUID가 연결될 때까지 할당되지 않는다는 것입니다.

당신은 당신이 당신이 또한 할 수있는 것은 주목할 만하다 그러나 TI 사이트

-(void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI { 

    NSLog(@"Found a BLE Device : %@",peripheral); 

    /* iOS 6.0 bug workaround : connect to device before displaying UUID ! 
     The reason for this is that the CFUUID .UUID property of CBPeripheral 
     here is null the first time an unkown (never connected before in any app) 
     peripheral is connected. So therefore we connect to all peripherals we find. 
    */ 

    peripheral.delegate = self; 
    [central connectPeripheral:peripheral options:nil]; 

    [self.nDevices addObject:peripheral]; 

} 

에서 다운로드 할 수있는 TI의 센서 태그 코드에서이의 예를 볼 수 있습니다

다음

- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI 
{ 
    NSLog(@"didDiscoverPeripheral"); 

    if (![foundPeripherals containsObject:peripheral]) { 
     NSLog(@"foundPeripherals addObject %@", peripheral.name); 
     [foundPeripherals addObject:peripheral]; 
    } else { 
     NSInteger index = [foundPeripherals indexOfObject:peripheral]; 
     NSLog(@"foundPeripherals replaceObject %@", peripheral.name); 
     [foundPeripherals replaceObjectAtIndex:index withObject:peripheral]; 
    } 

} 

didDiscoverPeripheral은 각 장치에 대해 두 번 이상 호출됩니다 (iPhone 5에서 두 번 호출 됨). 두 번째로 주변 장치 세부 정보가 완료되었습니다.

관련 문제