Are Location aware notification on iOS possible in Phonegap, Corona or Monotouch? - geolocation

Like everyone else I'm venturing into mobile app-development and I'm looking at different frameworks / languages. The ones that look most appealing to me are Phonegap, Corona SDK and Monotouch. Objective C seems to be a little too low level. I haven't done memory management for a long time and I'm not yearning to relive that experience. But if that's where I need to go to meet the client's need, I'll go there.
The client in this case needs location aware notifications in an iOS app.
A user story goes like this: The user is out walking the town. She's got her iPhone in her pocket and is listening to music via iTunes. As she walks into her local mall my app (running in the background) detects that she is in the proximity of a branch of her bank. My app also knows that the user has some errand to do at the bank. So my app interrupts the currently playing iTunes track, plays a notification sound and puts a notification text on the screen, telling the user that there's a bank office nearby and that she might want to do that bank errand now.
Could this be done with either Phonegap, Corona SDK or Monotouch?

MonoTouch supports all types of iOS location services (standard, significant location change and region monitoring) so yes, you can do it with MonoTouch.

Whilst Apple has started bringing in geo-location notifications with the Reminders app I'm fairly certain that it won't be exposed in the higher level frameworks as of yet.

Some good info here in the Apple developer docs
There are several ways to track the user’s location in the background,
most of which do not actually require your app to run continuously in
the background:
The significant-change location service (Recommended)
Foreground-only location services
Background location services
...
All are possible with MonoTouch. Pretty sure they are with PhoneGap also. Don't know about Corona.

Related

iOS - How to find users of app nearby, even those users who are not even running the App

What is the best way to find users nearby?
I know it is easy to detect users when both people are running an app.
But how can I detect users of an app who have terminated it? Basically, one person would start the application and they should be able to detect other people who have downloaded the application nearby, even if the other people do not necessarily have that application open. Also, I want accuracy to about 50 meters, so something like significant changes would not work
Is there any way I can always run in the background so that other apps around could locate different users. This process could start again in the background once an app was terminated, like Core Location does.
I have heard of BLE or Core Bluetooth and was wondering if I could implement that somehow.
Maybe Mutlipeer connectivity too. Perhaps something with iBeacons
Constantly tracking users' gps location would be energy inefficient.
I have tried reading other answers to this topic but they seem outdated.

Is it Possible to get last known location of device from other apps in iOS

Im building a location based application, where in i use CLLocation to get users device location.
But my question, Is it possible to get users current/last know location from other apps in device which are already using Location services. So i can save the battery of iPhone?
Just a thought.
Not sure security issue?
Or is it possible?
Thanks in advance
No. Apps are sandboxed. You can not access info from any other app.
One word
NO
You can't access any info of other apps.
If you want to access any info, you have to jailbreak your iPhone, which Apple never allow.
From Apple,
Communication Between Apps Follows Specific Pathways
For security, iOS apps run in a sandbox and have limited interactions with other apps. When you want to communicate with other apps on the system, there are specific ways to do so.
For more details, take a look at this link

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

Check if iDevice with a specific app is nearby

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.

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.

Resources