Ios Native Geofencing doubts - ios

I have a couple of doubts about the Ios native geofencing features.
The documentation describes that there's a maximun number of regions to add y the number is 20. Is possible to change dinamically the regions according (for example) to the city where the device is? (To increase the number of regions that can be monitoring)
Is possible to get the regions to monitoring from a config file at mobile app start? (In order of configurate the regions file and later the device get the regions from there)
Other doubt that I have is about something that I read: "The regions is shared by all apps, and older fences will get purged to make room for newer fences". This means that if I have a region 1 and a region 2 and a device1 and device2, if the device1 monitoring for the region1, the device2 could not monitor region1?
Can a device monitors for more than one region?
Thanks a lot who can help me with this doubts!!!

An application can monitor no more than twenty regions or geofences. You can update the regions if user has moved far enough.
Yes.
No, regions are not shared in any way across apps.
Yes.

Related

Geofencing Limits in iOS

I have a problem with the Geofencing Limits in iOS.
I'm building an app for smoke shops. Locations add up to about 200.
I want to have users 'automatically' check-in when they are a couple feet away from a shop.
The limit that's imposed by Apple is 20.
Apple Documentation
Regions are shared resources that rely on specific hardware capabilities. To ensure that all apps can participate in region monitoring, Core Location prevents any single app from monitoring more than 20 regions simultaneously. To work around this limitation, monitor only regions that are close to the user’s current location. As the user moves, update the list based on the user’s new location.
As seen in the documentation, Apple recommends developers to update the list of 20 regions as the user is updating his/her location.
Three questions come to mind.
Documentation says "Core Location prevents any single app from monitoring more than 20 regions simultaneously.". Does this mean that, as a developer, I'm restricted to 20 locations I can set regions in my app? Because I have 200 locations (200 clients that want to have this feature around their store).
Apple provides a work around to the limitation. Does this mean that the 20 region limit is only for the app users? Does this mean that I can set 200 locations, but users will only see 20 locations closest to them that they can check into?
What happens when I have 10 users using my app and they have an amount of regions over 20 locations collectively?
1 - That means that your app can track 20 geofences. If you want to track 200 geofences your can track always the 20 most closest regions. You need create an strategy to update your geofences list. For example you can update your 20 closes geofences when enter/leaving your geofences. Or can you update them in background when executing a background fetch.
2 - Geofences is not the same that map regions. You can show as much regions as you want in a map (using for example mapkit).
3 - The geofence limitation is given by device. Each user can track up to 20 geofences.

How many region based UILocalNotifications are allowed for single app

Apple Doc says :
Apps are limited in the total number of regions they may monitor at
any given time, and local notifications configured with a region value
count against that total.
But total number are not specified, how to know the limit of the total number of regions app can monitor.
The number is limited to 20 per app, according to Apple's Location and Maps Programming Guide :
Be judicious when specifying the set of regions to monitor. Regions
are a shared system resource, and the total number of regions
available systemwide is limited. For this reason, Core Location limits
to 20 the number of regions that may be simultaneously monitored by a
single app. To work around this limit, consider registering only those
regions in the user’s immediate vicinity.

how to scan available beacons in my region iOS

I am new to beacon coding.
Our client want a app which will scan all the available beacon devices (manufactured by client itself)
I want to write a generic code which will scan for all available devices near by, and will show me alert on particular command,
like it will blow GREEN light when call is there, Yellow light when Message received etc.
I have the commands provided, but need a methods for beacon to call those commands, in iOS.
first target is to scan all available devices.
On sample I found some tutorials which are providing direct UUID
but I need to generate a code which will scan all.
any links and other info is welcome.
Thanks in advance..
Apple restricts the ability to scan for iBeacons on iOS so that you must know the beacons' ProximityUUIDs up front. There is no way to simply scan for all iBeacons regardless of ProximityUUID using public APIs. While there are private API hacks that may allow this, these will not allow the app to be approved for distribution in the AppStore.
If you can get a finite list of known ProximityUUIDs for your client, this will still work OK. You can call CoreLocation's startRangingBeaconsInRegion: command multiple times, once for each ProxinityUUID. While there is no hard limit on the number of times you can call this (unlike monitoring APIs which have a limit of 20 regions), practically you can probably only call this in the low hundreds of times.
Bottom line: while you cannot scan for all beacons regardless of ProxinityUUID, you can get close to the same effect if you know all the UUIDs up front.

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.

Geofence API for iOS 5

I want to build an application that can set up a set amount of geo-fenced square regions across town, I know I could achieve this by enabling location in the background, and check those coordinates to determine if they are in my area of interest.
But that would mean receiving many notifications from the system and would hit the battery performance.
Instead I wondered if there was a new API or possibly an upcoming one that would let you set a geo fence and only be notified by the system if you're inside of that or close by, rather then monitor your location constantly.
Is that possible ?
I found the following question, but I can't find much else:
http://www.quora.com/Is-the-geo-fence-functionality-built-into-iOS5s-Reminders-application-available-as-a-public-facing-API
It would seem to me that there is something more to geo fencing then tracking the GPS and comparing to an array of points of interest. If I set the reminders app to remind me that I have to walk my roommates dog tonight when I get in, then I can see the location icon at the top of the screen.
If I open the multitasking bar and remove reminders, the location icon persists, indicating the phone is tracking me, but it's an independent task to the reminders app.
If I set up an application with background location tracking, and remove from multitask bar, the location icon disappears with the application. This makes me believe that there is or will be an API for geo fencing coming for iOS 5.x, this would allow apps to post an array of coordinates to the system and receive local notifications based on the proximity to those points.
Does something similar exist or not yet ?
Thanks
UPDATE FOR FUTURE USERS
There seems to be a limit of 10 regions per app that can be monitored at any time (my personal testing), as this is a shared resource.
Apple Documentation extract:
You should always be judicious when specifying the
set of regions to monitor. Regions are a shared system resource and
the total number of regions available systemwide is limited.
You should look at the startMonitoringForRegion:desiredAccuracy: method on CLLocationManager.

Resources