iPhone 4S で動作する iOS 5.0 で安定して動作するアプリがあります。Bluetooth Low Energy を搭載した iPod (第 5 世代) で動作するように、iOS 6.0 への移行を行いました。iPhone 4S では、ペアリング/結合、接続、切断、および再接続を自由に行うことができました。iPod で同じことを行うと問題が発生します。アプリは正常に切断され、再接続され、このプロセスを 2 ~ 3 回繰り返すことができます。この後、Core Bluetooth Error : 14 が発生し始めます。ログは次のようになります。
012-12-04 11:30:24.293 Milan[524:907] DISCONNECTED WITH READER: SriRdr11
2012-12-04 11:30:24.295 Milan[524:907] Start Time 376331424.295754 =
2012-12-04 11:30:28.241 Milan[524:907] NSConcreteNotification 0x1dd607d0
2012-12-04 11:30:28.243 Milan[524:907] MAIN PERIPHERAL: 5F953B12-D99F-D770-4F3F-B741BA026858
2012-12-04 11:30:28.617 Milan[524:907] CONNECTED WITH PERIPHERAL: DEVICE1
2012-12-04 11:30:29.173 Milan[524:907] DISCONNECTED WITH PERIPHERAL: DEVICE1
2012-12-04 11:30:29.176 Milan[524:907] Error: The specified device has disconnected from us. -
(null)
アプリは BLE 周辺機器がそれから切断されたと考え、周辺機器はアプリがリーダーから切断されたと考えます。明らかに、ここで奇妙なことをしているのはアプリです。誰かがここで何が起こっているのか説明できますか?
再接続のために呼び出される didDiscoverPeripheral のコードを次に示します。
NSString* uuid = [peripheral uuidString]; NSString* readerName = [advertisementData
objectForKey:@"kCBAdvDataLocalName"];
int meterID= 0;
NSData *deviceIdData = [NSData dataWithBytes:&meterID length:sizeof(meterID)];
NSLog(@"DEVICE DISCOVERED: %@ (%@)", deviceName, uuid);
[[[DeviceBluetoothManager sharedInstance]allPeripherals] setObject:deviceIdData forKey:peripheral
uuidString]];
[[DeviceDefaultsManager sharedInstance] adddeviceIdToFavorites:deviceIdData
readerName:readerName withPeripheralId:[peripheral UUID]];
NSDictionary* deviceInfo = [NSDictionary dictionaryWithObject:peripheral forKey:kDeviceKey];
[[NSNotificationCenter defaultCenter] postNotificationName:kBluetoothDeviceDiscovered
object:self userInfo:deviceInfo];
別の質問は、ペアリングまたはボンディングのいずれかが