Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Find a specific iBeacon after i entered the Region (Background mode)

This question is about when the Application is in background I got a Application which works with 2 iBeacons (same UUID, same Major, different minor ).

The first iBeacon (minor 1) is for example for the Door. When the App is in the Background i get a Notification that i enter the region. This works fine. And now, for example, i walk in the Store and at some Point is the second iBeacon (minor 2). If i'm in the immediate Zone of the second iBeacon, the Application should fire a notification. ("Hey you're at the cashpoint"). But i read that's not possible when the Applikation is in the Background. It only works when i hit the shoulder button or home button. http://developer.radiusnetworks.com/2013/11/13/ibeacon-monitoring-in-the-background-and-foreground.html

So the Question: Can anybody give me a hint how to implement this use case.

like image 979
Carsten Avatar asked Dec 05 '13 17:12

Carsten


People also ask

How do I identify an iBeacon?

To identify each iBeacon, an iBeacon is identified using three numbers: Proximity UUID (16-bytes), Major (2 bytes), and Minor (2 bytes) (see Figure 1). Figure 1: Three numbers are used to identify an iBeacon . The assignment of these three numbers is totally up to the implementers.

What is Apple iBeacon?

Apple introduced the iBeacon protocol at the Apple Worldwide Developers Conference in 2013. iBeacon opened doors to a host of opportunities for location-data and proximity marketing. This protocol enables seamless interactivity between iOS and Android devices, and an iBeacon hardware, such as BLE beacons.

What is the range of iBeacon?

The maximum range of an iBeacon transmission will depend on the location and placement, obstructions in the environment and where the device is being stored (e.g. in a leather handbag or with a thick case). Standard beacons have an approximate range of 70 meters. Long range beacons can reach up to 450 meters.


1 Answers

Several things:

When you create a beacon region, you can either match on just the UUID, the UUID and major value, or the UUID, major AND minor value.

If you specify just the UUID, your beacon enter/exit notices will not include major/minor value information.

Likewise, if you create a region with a UUID and major but not minor value, your beacon enter/exit messages will include the UUID of the beacon and the major, but not the minor, value.

The simplest thing to do is to create a separate region for reach unique beacon you're tracking. Then you'll get separate enter/exit notices for each beacon.

If you want multiple beacons to be part of the same region, but report different major or major/minor values, you have to turn on beacon ranging and wait for a ranging call. In the ranging call you'll get an array of beacon objects (not beacon region objects, CLBeacon objects) for all beacons that match the current region. The beacon objects will include the actual UUID, major, and minor for that beacon.

If you are in the background and have both beacon monitoring and ranging turned on, you'll get an didEnterRegion message (or maybe a changed state message) followed by several seconds of ranging information, and then your app will go back to sleep.

When your app is in the background, your only real option is to display a local notification and hope the user wakes your app again. If the user swipes that notice, the system prompts the user for unlock credentials if needed, and then takes the user back to your app.

like image 100
Duncan C Avatar answered Oct 11 '22 21:10

Duncan C