Check if iDevice with a specific app is nearby - ios

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.

Related

iOS indoor positioning app and WiFi signals

I'd like to develop an indoor positioning system for iOS by using WiFi signals instead of iBeacon. I read here that the feature was recently introduced. It says:
You can sign up to learn more about how you can work with Apple to enable indoor positioning at your venue. Provide us with some basic information about your venue to get started.
and it leads to Apple Maps Connect, where you provide some information regarding the venue you'd want to enable for indoor positioning. I sent the request some weeks ago and I have no response yet, since they say they have a large amount of requests and they are prioritizing according to several conditions.
However, I'm not sure if this request through Apple Maps Connect is just to get more information from Apple of how to develop an indoor positioning app, or it is because yo need to be granted their explicit permission to do that, or why. Has somebody already completed this process?
On the other hand, the only information dealing with indoor positioning, apart from iBeacon related, is this sample code.
To make sure: the WiFi-enabled indoor positioning is only available starting from iOS 8? Just developing it will be enough, or is it needed to request any kind of specific permission to enable an indoor positioning based app for WiFi signals?
Thanks in advance

Gimbal beacon discovery

Is it possible to discover Gimbal beacons using the iOS SDK? I want to use simple ranging but I don't know the UUID of the transmitter.
YES, you can use Gimbals as iBeacons. You have to re-configure it using iBeacon configuration.
Login to Gimbal website, create an account if you don't have one.
https://proximity.gimbal.com/
Open Proximity tab. Click on Manage Configuration button at the top and create new configuration, select iBeacon as beacon type, assign UUID, major and minor. You can choose any UUID you'd like.
Now register your Gimbal beacon, and select your new configuration. You must open the beacon to get to the Factory ID that is required to register.
Download Gimbal manager app for iPhone, open it, select "Configure" option. Open Gimbal and remove battery, put the batter back in, and you should see your beacon in the Gimbal Manager app, click the Update button.
That's it, now you your Gimbal is in iBeacon mode.
If anyone interested, I found this useful post on http://beekn.net/2013/12/inside-gimbal-qualcomm-beacons-tackle-bluetooth-le-challenges/:
Actually, you can’t sniff the iBeacon UUID as Gimbal use their own implementation for their beacons. They use BLE to transmit encrypted IDs that change with each broadcast, so it needs to validate with the SDK / API to confirm which beacon ID this ties up to.
update: davidyoung is right. There is some info that I skipped in Gimbal's documentation:
If your application's use case requires you to use iBeacon technology, the Gimbal Series 20 beacon can be configured to broadcast iBeacon compatible BLE packets. To learn how to configure a beacon to be iBeacon compatible please read the Proximity Quickstart Guide. The Proximity framework makes it very easy to use both iBeacons and Gimbal beacons from the SDK and lets you manage them through the Gimbal Manager Portal.
Interesting - I recently received a reply from Radius Networks that said ScanBeacon cannot identify Gimbal beacons - at least that's how I read it..
"Scanbeacon should display any device that is transmitting an ibeacon advertisement.
We have had several reports that the little blue beacons that Qualcomm has been making available are not showing up with ScanBeacon.
Our own investigation into these units is that they are not advertising the iBeacon identifiers.
There may be some configuration or other steps that need to be taken that we are not aware of.
But the out-of-the-box state of the Qualcomm beacons appears to be no iBeacon advertisement."
To use iOS, you will need to know the UUID.
There are some other options that do not require knowledge of the UUID.
If you have an Android device w/ 4.3 or later and support for BT4.0, you can use the free Locate application at the following link. https://play.google.com/store/apps/details?id=com.radiusnetworks.locate
If you have a Mac w 10.9 or higher and support for BT4.0, you can use the ScanBeacon app ($9.99) available on the Mac App Store or at this link. http://www.radiusnetworks.com/scanbeacon-app.html
Good luck, and make sure you report back your findings to rest of the community!
David
Full Disclosure: My colleagues just firmly reminded me that I'm misbehaving by not noting that I work for Radius Networks, who provides the tools listed above, and am the developer of the second tool listed, ScanBeacon.

Is it possible to track devices of users on our device

I am working on an App, in which i need to track the device using my App. I have gone through the "Find my friends" App that Apple has offered themselves. But, it asks user's permission if he wants to allow tracking his location.
I studied, an app named "Uber", they clearly track the cabs maneuver around the city. They also show the user, how far is that cab from the user, the possibility that might be here is "Uber" dudes could be using external GPS device and may be interfacing them with the user's device. Since, If I am not wrong.. Apple does not allow tracking devices.
But yet, I am in need to implement that kind of functionality in my App. I was wondering if it is possible ? I am aware of location tracking, my concern here is live GPS tracking.
Please point me in right direction here, Any help with be truly appreciated
I have a full working sample that shows how to track android, iphone, windows phone and java me phones. It also has the server software to put the location data in a database and allows you to view the location in real time and also store the routes to view later. Its MIT licensed:
https://github.com/nickfox/GpsTracker/tree/master/phoneClients/android

Using location based push notifications on iOS

I am looking on developing a tourist application for a city, where when the user is near to a "place of interest" he could get a push (local) on his device.
For example, I would add 100 POIs on my app, and a 100 messages for every POI to show when the user is in range, e.g. "You are close to the Cathedral of.."
Is this scenario possible? Is it possible to check the users position e.g. every 10 minutes even when the application is killed, and when in range fire a local push? How much battery would it drain? If the user closes the GPS would it try to use 3G/wifi signal to get the position?
If yes could you guide me the right way on what I should read on the subject maybe some tutorials and articles?
that's indeed possible. You could use the aforementioned technique outlined in this post. You can extend this with using CLLocationManager:: startMonitoringSignificantLocationChanges to restart the process of listening to locations after the app has been killed. Depending on your accuracy needs there are many other optimizations that can be done regarding battery life, like checking more frequently when a user speeds up etc.
I have developed a library that handles these details for you (for both Android and iOS). The download includes an example application that demonstrates how to use it. Feel free to check it out.
Yes,that is possible.you need to have some "places" (co-ordinates or addresses) stored on theapp locally. Proximity to a stored "place" can be checked by Reverse geocoder.
Check this Wonderful SO Question , very similar to yours
This might be too late for your question, but for anyone else that needs it. GeoFencing is a good option.
Here is a video explaining what geofencing is http://academy.pulsatehq.com/7-things-about-geofencing
And if you are using Ionic platform, here is the link to the plugin
https://github.com/cowbell/cordova-plugin-geofence
GeoFencing will solve exactly your problem. Just create a bunch of geofence located at these tourist sites and when user enters within certain radius of these locations, user will get a notification.
Good luck
When the app is killed, what exactly would be receiving the location updates?
When in the background though, you can set up location updates based on both proximity and time.
Check How do I get a background location update every n minutes in my iOS application?
As for GPS vs. 3g/wifi, the user has the ability to either allow location services for an app, or not. iOS will then handle whether GPS or cell signal will be used to determine position. Read about the significant-change location service here. Using the significant-change service will use more cell location than GPS lock to determine position, and vice-versa for the standard location service. Also look at location accuracy to learn more about conserving battery.

How to check if another iPhone using the same program is in your vicinity?

I've been googling this problem, but haven't gotten the wording right.
Basically I'm looking for an API, or some seeds of guidance in how I would go about writing a program where you get push notified if someone is in the same area as you based on GPS coordinates. In short: a realtime 4square not based on checking-in but based on GPS.
Part of me feels like this is something Apple may frown upon, but if the user is notified and making the decision to run the app, perhaps not.
Thanks in advance.
You're looking for the Bluetooth Bonjour type notifications found in GameKit. This has nothing to do with GPS and is instead based of short range radio (Bluetooth) which advertises itself using a zero conf protocol. The APIs basically give you the ability to broadcast your service (eg. "MyGame") over bluetooth and listen for others potentially broadcasting the same service.
If you're talking about geographic vicinity, you'll need to set up a central server where each device can register its location, and which will provide locations of nearby devices. A service like FourSquare does exactly this kind of thing.
Another way to look at 'vicinity' is network vicinity. You could have each device advertise itself via Bonjour and look for other devices doing the same.

Resources