How can we make Collector play nice with Runtime apps and share GNSS connections?

402
2
07-25-2019 04:53 PM
MichaelDavis3
Occasional Contributor III

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.

Email sent to Support Services
Added a note 12/31/1969 3:00:00 PM
Issue Description:

We develop mobile apps using the ArcGIS Runtime for iOS (v100 and legacy apps using 10.2.5).  Most of these apps include integration of high-precision GNSS devices (iSXBlue, Arrow) using the EOS SDK.  Since the addition of high-precision support to Collector we have had an increase in issues related to obtaining a serial connection to these devices in our apps.  
Conversations with EOS indicate we are both using the same connection protocol and as such will be in conflict with each other when trying to connect to these devices.  As of now if any of our apps are open simultaneously with Collector we will loose the ability to record GNSS metadata in our apps once the user initializes a connection to the same device in Collector.  The only workaround seems to be force-quitting Collector to free up the connection, which is not ideal for field projects that want to use both our in-house apps and Collector at the same time.
What I'm hoping for is a conversation with the developers who implemented the serial connection bits in Collector so we can see if there is a path forward to share the GNSS connection.  As it is now using Collector on projects that also use one of our custom apps is becoming a non-starter, forcing those projects to choose one or the other.  This is not a choice we want our project managers to have to make and not really something we anticipated having to deal with when we standardized on the ArcGIS Runtime for mobile mapping apps.
0 Kudos
2 Replies
EricIto
New Contributor III

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.

0 Kudos
MichaelDavis3
Occasional Contributor III

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? 😉

0 Kudos