I've had reports from multiple users saying that their external GPS units (Bad Elf, mostly) aren't working with my GPS-enabled app. I'm not doing any manually detection for GPS units; the app assumes the device has a unit and just displays an error if no location is found. My question is:
Is there any additional setup that needs to be done to allow a CLLocationManager and MKMapView to interact with an external GPS on a device with no internal GPS unit?
I don't think you can do anything about this. This is an issue for Apple and the GPS vendor. You are using an API to access the internal GPS.
As Till pointed out in his comment, it seems that this is a problem with iOS 6. You can read more about it here as well as in the link that he provided.
Related
I've been researching a possible iOS-based app, developed in Unity, that would require a high-degree of positional accuracy (centimeters).
I expect I would need to connect, from the app, to an external GPS device using Bluetooth (or similar) and obtain NMEA sentences (or similar) containing location data.
My research has brought me to RTK, which is extremely accurate. From what I've seen already, it seems that normally GPS receivers which offer this operate themselves at normal GPS precision (2-2.5m). The correction to a high-accuracy location happens in software on a connected computer or tablet with a connection to an NTRIP server.
Assuming what I've said is correct, does anyone know of a GPS device that performs this RTK correction on the GPS device itself? Ideally I could just connect with Bluetooth or similar and get NMEA (or equivalent) data with high-accuracy location.
It may also be that I'm thinking about this incorrectly. On iOS, assuming there is an 3rd party app performing the RTK calculations, is there a standard way to obtain that high-accuracy location? Alternatively, are there GPS vendors that supply SDKs that would allow me to get to where I need to go?
Thanks very much,
Kieran
There is a recent module from U-Blox named ZED-F9P which has internal processing and is faster then RTKLib. Check this blog for performance
You can buy a board like ArduSimple's simpleRTK2B with an XBee module for WiFi/Blutooth or something similar from Sparkfun. You could also wait for the development board from U-Blox which is not yet available.
I guess this is a huge flaw in iOS .. like currently it's happening for PokemonGo currently the normal users are able to spoof device location to a desired one in non-jailbroken devices .. any idea or workaround to detect location simulation by Xcode ?
Using GPX location spoofing returns -1 for heading and speed - If your are looking for ways to detect spoofing, if the CLLocationManager is providing Lat,Lngs that are moving, but you're not receiving speed or heading, then the likelihood is the location is being spoofed.
How about using other sets of data to detect GPS spoofing?
Google includes it since 2007.
As an app developer, you could use the phone's internal inertia or orientation tracker data to check your GPS location's plausibility. The built-in compass may also prove useful. Using the phone's internal sensors only won't detect all cases, for example, if they are also spoofed consistently to the GPS signal, but it increases the effort one needs to invest to fool an app successfully. External sources, such as wifi-hotspot locations, would be even better but I think this is pretty much effort on the app developer's side, given that such data needs to be obtained and verified regularly by the application.
An extension on Kento's answer:
If, using accelerometer information, the phone appears to not be moving, request the user shake the device. You can keep a record of how it was shaken, and check if the previous shake was TOO similar. You would have to trial and error what the threshold would be, but I imagine it would be difficult to simulate several different shaking maneuvers.
Is it possible to check within an app, if there are other idevices nearby which have the app running?
For example device A starts the app. Device B also starts the app. When they are nearby, a notification will popup.
I know its possible to check the range between two GPS coordinates. But the only solution that I've found on the internet was, that I have to make a webservice/server which handles the coordinates which were sent by the idevices.
But I'd like to make it run "offline", without saving/sending the data at a webserver.
You can achieve exactly this using the new iBeacons functionality in iOS 7. I'm not sure I can link to the exact documentation due to the NDA currently (although the feature was mentioned publicly at WWDC), but if you search for 'beacons' on the Apple Developer site you should find what you need.
There are also some examples towards the end of this year's WWDC session 307 - "What's new in Core Location?". This is arguably more useful than the documentation.
Essentially, you define a beacon region and tell your devices to start advertising their presence. At the same time, you can listen out for beacons in the local area - CoreLocation will then report you the identifier and approximate distance of each device.
While I found a question asked for android (http://stackoverflow.com/questions/3189188/gps-location-without-service) I couldn't find one for iOS so I thought I'd ask it. Especially since it seems to be possible in Android (see link).
I'm wondering if there's anyway to get location without a service provider. For example, I have access to an older iPhone 3GS but clearly don't want to pay any fees just to test my location services code.
I'm thinking that since location should be determinable via WIFI then maybe the only difference would be the increased precision of GPS. Maybe that'll be enough.
I actually got the answer by posting at Apple's devforums.
Basically, Location Services are independent of GPS - the APIs are identical regardless of device.
Which makes sense. Essentially, the only difference with actual GPS-based location is precision.
What fees are you worried about ? If it's mobile data charges then just switch off mobile data - the gps will still work fine!
How would I go about figuring the position of someone inside (or outside) of a given area (such as a building) using assisted GPS with IOS app?
Is it possible to have it accurate enough withing a few feet?
Is this the right way to go about it?
Is it possible to utilize more than one wifi connection in the calculation?
Your app can use the Core Location framework to determine the device location. Core Location will use whatever hardware is at its disposal to determine the device location to the degree that you request. For example, some devices have WiFi but no GPS; others have WiFi, GPS, and cellular radios. Future devices may have other location technologies built in.
The point is that as an application programmer, you don't worry about that. Instead, you say: "give me a location that's accurate to 100 meters" or "let me know when the device has moved from the current spot by more than 10 meters" or "give me the location with the best accuracy you can manage."
Again, take a look at Apple's Core Location documentation to get a better idea of how it all works.
If you're looking to track a device with, say, 1-meter resolution inside a building, you're not likely to get that from Core Location. There's been research on triangulating position using known locations of WiFi transceivers, but nothing that's implemented in any commercial smart phone that I know of. I don't believe that iOS gives you easy access to the data you'd need to do this, so it's probably not a possibility. You could, however, go the other way: program several WiFi receivers around the building to listen for any nearby devices, use that information to triangulate the devices' positions, and then make that information available via some web service.