Our team has found an issue when connecting to an EAAccessory with newer iOS devices (iPhone 6S, 7/ 7Plus) over Bluetooth on iOS 10.<p>When our MFI accessory first connects to an iOS device over Bluetooth, and we subsequently launch our application, we implement the standard set of steps for establishing communication with the accessory:
register for local notifications with EAAccessoryManager
add observers to the NSNotificationCenter for EAAccessoryDidConnectNotification and EAAccessoryDidDisconnectNotification.
obtain a reference to the currently connected accessory via [EAAccessoryManager sharedAccessoryManager].connectedAccessories
create an EASession with the connected accessory and open the input/output streams for communication.<p>The app then sends a series of messages to retrieve info on the device. We see the data transfer on ATS logs, with both iOS and MFI device exchanging data.<p>The issue we are seeing is that upon first app launch after a newly paired connection, the EASession does not seem to detect that the MFI has sent a response. We verified through ATS logs that the iOS device sends data to the MFI device and that the MFI device returns a response, but there is nothing in the input data stream of the EASession. If we force quit the app and relaunch, it behaves normally.<p>We do not see this behavior on newer devices running iOS 9. We also do not see it on older devices (iPhone 6) running 10.1.1 or 10.3.1.<p>Steps to Reproduce:
1. Open the settings app, navigate to Bluetooth and select a device from OTHER DEVICES
2. Successfully connect
3. Launch App
4. (App sends a request to the device)
5. (device sends a response)<p>Expected Results:
We expect the EASession's input stream to read data returned by the device.<p>Actual Results:
The EASession's input stream does not receive bytes available to be read.<p>Version:
iOS 10.3.1, 10.1.1<p>Notes:
Configuration:
iPhone 6S or iPhone 7<p>Would love some help :)