iOS 7.1 update breaks External Accesory inputStream UART read ability - ios

We have MFI approved accessory device. Our protocol assumes continuous readings from accessory in UART mode. It was working perfect before iOS 7.1, but after testing on the iOS 7.1 it is not working properly.
In ATS test suite log we can see success eap records and some AccessoryDataTransfer acked by iPhone.
We can reproduce problem using EADemo. EADSessionController stops read data after some show/close cycles.
Only killing EADemo and relaunch allows us read some data.
Configuration:
iPhone 4 and newer (iOS 7.0), any iPod (iOS 6.x) - OK
iPhone 4s, iPhone 5 (iOS7.1) - Failed
What happens with EA framework in iOS 7.1?

Apple just released update 7.1.2 claiming they solved the issue.
"• Fixes a bug with data transfer for some 3rd party accessories, including bar code scanners"*

Related

iOS 11 random disconnection with external bluetooth device

I use CoreBluetooth framework to connect external bluetooth device, in all iOS don't have random disconnection, but on iOS 11 it disconnect.
Maybe some one has any idea what's wrong with ios 11 and corebluetooth, CBCentralManager?
My app worked disconnected every 5 minutes on iOS 11.0.x,(I'm sorry for the correct version), But in iOS 10 or eralier version is OK. So I try to change the peripheral deviece, change a Android phone to test, both of them are running OK.
Then I update the version to iOS 11.1.1, And the BUG looks like to be FIXed.
Your bluetooth device is disconnected when your iphone/ipad goes to sleep. This is due to iOS 11 is requiring all application to add background mode to their info.plist. Look at screenshot provided below, add it to your app's info.plist and that will resolve your iOS 11 randomly disconnect issue when device goes to sleep.

iOS10 didDiscoverPeripheral misses

I have two iPhones side by side running same version of my app. One iPhone is updated to iOS 10, the other is iOS 9.2. I have a Bluetooth LE device transmitting non-connectable broadcast advertisements. The iOS 10 iPhone fails to detect ~30% of the adverts (failure to invoke didDiscoverPeripheral).
For several versions of iOS, have had no problem. Has iOS 10 Core Bluetooth broken something?
Thx, Dave
The issue can be resolved by powering cycling the phone, or resetting network connections.

iOS CLLocation difference between device models

I'm using the Google Maps API for iOS to essentially highlight a width of coverage using the GMSPolygon.
Running the iOS simulator I get an odd behavior. Using both a iOS 9.3 build for all the testing, the map properly highlights coverage using the location simulated by the simulator on an iPhone 5S, 6, and newer.
You can see this in this screen capture that I did: 5S Highlighting
Now when using the iPhone 4S and 5 it does not draw the GMSPolygons! iPhone 5 Not Highlighting
A few things to note, I made sure that location permission were authorized on all testing and the same "city Run" simulation was used on all the testing. Again the highlighting works fine on 5S and newer devices running 9.3, but not on 4S & 5 using 9.3. Is there a fundamental API change in the CLLocationManager between the builds for these devices?
As discussed in Simulator User Guide, there are some hardware and API differences in Simulator which may affect your app when testing in Simulator.
In addition to that, please note of these hardware features that are not simulated as of iOS 8.2:
Motion support (accelerometer and gyroscope) are unsupported.
Audio and video input (camera and microphone) are unsupported.
Proximity sensor
Barometer
Ambient light sensor
Aside from those, there are also API differences wherein Simulator APIs don’t have all the features that are available on a device such as these:
Receiving and sending Apple push notifications
Privacy alerts for access to Photos, Contacts, Calendar, and Reminders
The UIBackgroundModes key
Handoff support
Please try going through the Simulator User Guide for more information.

Bluetooth Low Energy app failed to write characteristics on iOS 7

I have a Bluetooth Low Energy (BLE) app that communicates with a BLE device through open connection. I am using CoreBluetooth library. After I upgraded my iPhone to iOS 7 and XCode to XCode 5. I recompiled my Bluetooth Low Energy app and found it no longer working. The connection is successful. The services and characteristics are discovered with no problems. Even the reading of the characteristics seems fine. But writing to a characteristic which should trigger some action on the BLE device has not any effect.
If I use XCode to download the same app to another iPhone with iOS 6, everything works fine. So I can determine the problem may be something with iOS 7 instead of XCode 5’s recompiling. It’s also possible XCode 5 prepares a different app for iOS 6 device even from a same project because I can see the app’s appearances are different on two devices.
So what’s changed from iOS 6 to iOS 7 that makes writing to characteristics failed?
I ran into the same problem, the issue is with the the firmware not your iOS Code. iOS6 was more relaxed with the characteristics types, but iOS7 is more stringent.
The WriteWithoutResponse flag for the Characteristic has to set explicitly to work with iOS7
I had used RedBear's Biscuit for Arduino at my startup to test our product, which worked wonderfully with iOS6 but when the app migrated to iOS7, the writes would fail quietly.
More detailed discussion is here (see update from Mattj949) # https://redbearlab.zendesk.com/entries/25031402-BLE-Mini-and-iOS-7
There are some Apple Threads on this issue, http://lists.apple.com/archives/bluetooth-dev/2013/Aug/msg00046.html and http://lists.apple.com/archives/bluetooth-dev/2013/Aug/msg00050.html

Make app not support iOS 7

If for managerial reasons I'm am developing an app that has not been designed with iOS7 in mind(the notion of supporting iOS7 wasn't apparent until I upgraded to XCode5 and tested the app in the simulator running iOS7), can I restrict my app to devices not running iOS7?
I know it's possible to change the app to support iOS 7 but we're already in the testing phase and it's not my decision how the app is made.
You can compile your application using Xcode 4, which will mark the binary to run in a compatibility mode on an iOS 7 device.
I'm assuming you want the app to still work on an iOS 7 device, just not with an iOS 7 user interface.
No, you can not restrict your app to devices not running iOS7.
You could check if the device is running with iOS 7 and through some kinde of exception or show an error message. Of course you won't get it through apples revision.
But it might work if you only deliver it to local devices.

Resources