Bringing this over from a support ticket I filed through our MyESRI account in April/May. They finally came back today and told me that this wasn't really something they could help with and that I might try posting to GeoNet.
Not sure what that means exactly, but to summarize... Our Runtime apps use the EOS SDK to connect to high-precision GNSS devices. So does Collector. When trying to use both Collector and our apps at the same time they seem to get into a fight over who can use the GNSS data stream. Generally speaking Collector seems to win this fight and our devices are not able to read the data stream until we kill Collector on the iOS device.
Collector seems to be doing something when you turn on location that "reacquires" this data stream. I'm hoping someone can share what you are doing and we can figure out how to cooperatively use the GNSS data stream.
Which version of Collector are you using: Classic or "new" Collector?
If you are not using GPS averaging or streaming when Collector is moved to the background, we close down the session and _stop_ reading from the external receiver. We also shut down the EASession instance associated with this receiver.
If you have Collector open in the foreground we will recreate the session and start reading from it.
We've had issues with both - but are primarily focused on "new" collector.
This is helpful - it sounds like since you are spinning up your own EASession you aren't using the manufacturer SDK but instead are connecting to the accessory and parsing the serial data yourself? I think we would probably have to do something similar to be able to initialize a connection from our app. All we can do with the SDK is listen for connection and disconnection events and act when we are handed some data. It's unfortunate that ESRI's implementation essentially breaks the manufacturer's SDK.
I don't suppose ESRI would be interested in publishing or otherwise providing access to your multi-device connection techniques in the Runtime SDK? 😉