External Bluetooth GPS data source

Hello everyone. I need a clarification with Core Location, please help.


How exactly is GPS data passed from external GPS source that is connected via Bluetooth? After some googling I found two separate points:

  1. Core Location (CLLocationManager) is responsible only for internal GPS receiver data. For external BT sources I need to use EAAccessory and read NMEA protocol.
  2. When I connect an external source, internal GPS is switched off instantly and CLLocationManager starts providing its data. So it must work OK.

Thing is, I don't have an external source to test it and I'm not that experienced in BT.

I have a report that people cannot use external GPS source with my app (I use Core Location only). Though I also have an info that all navigation apps support external GPS source. So they've already solved this?


Or maybe I should check Core Bluetooth out for this?
My question is kind of close to this one:
https://forums.developer.apple.com/thread/69717?q=gps

Maybe MFi really has a relation to that? And something can depend on GPS device being MFi or being not MFi?


Or this one:
https://forums.developer.apple.com/message/31679#31679

Seems much closer to my topic. So if I got it right, all MFi-supported external GPS data sources should work as is via Core Location?
If that's true, is all CLLocation data valid there (when using external source)? Or just altitude and position?

Post not yet marked as solved Up vote post of Pu1s3 Down vote post of Pu1s3
3.1k views
  • Having the same question. The device should be able to use GPS data from any device with proper software or Protocols.

Add a Comment

Replies

The only definitive answer I've found is here: https://developer.apple.com/forums/thread/12097. But source not cited, and maybe something's changed in the intervening 8 years.

I hope so, as I'd like to collect things like accuracy. Having external position paired with internal meta data seems like an odd and limiting choice.

So if I got it right, all MFi-supported external GPS data sources should work as is via Core Location? If that's true, is all CLLocation data valid there (when using external source)? Or just altitude and position?

Thank you for your original question, Pu1s3, and the replies by Doom and Jiropole.

Core Location makes use of any information provided by MFi location accessories and incorporates that information into what's reported in the corresponding API fields.