How can i make iBeacons private - ios

I created an App which is using some iBeacons functionalities. The goal is to add some beacons in some clients stores so the App shows notifications specific for this stores.Now i am using an UUID that is the same for all my beacons and I am managing to identify the store using minor and major values.
How can I make the beacons not accessible by other Apps ? Is there a way to add passwords to beacons or something like this ?

Ok after looking in Estimotes websites i found out that there is a way to lock your beacons.
http://blog.estimote.com/post/103051450215/delivering-on-the-promise-of-beacons-a-modular
To wrap it up: There is a thing called secureUUID. This uuid is changing every couple of minutes. To be able to track this uuid you have to use Estimote cloud service so you can synchronise your app region tracking with beacon.

No this is not possible,iBeacons use very small package size on Bluetooth just sending the UUID and major/minor identifiers.
This has a draw back that you might fake a iBeacon if you know their UUID.

Related

App callback for any iBeacon proximity UUID

I have played around with Airlocate and two iPhones. Also between a Linux /hcitool beacon transmitter and Airlocate ranging. I see that the set of proximity UUIDs to be tracked are hardcoded in the Airlocate source code.
Is it possible for an iOS app to get a more generic call back , when it is in the vicinity of any iBeacon (any proximity UUID) and let that app decide how to go about behaving the way it wants.
I understand that this should definitely be possible from the OS perspective, as I see a 9 byte iBeacon prefix in the start of the PDU, which is independent of the proximity UUID.
Another query - I view hardcoding the proximity UUID in the APP as some sort of pairing . How is general bluetooth pairing different from this.
My aim in asking these questions is to understand the feasibility of using beacons to beam (broadcast) data, so that all recipients in the vicinity can receive it. If I choose to go with a specific 16 byte proximity UUID, then I am left with only 5 bytes (Major/minor/power) to beam data. Otherwise I get 21 bytes
By "more generic call back", it seems like you are trying to listen to iBeacons that are not deployed by you. The answer to this is NO, you can't do that.
According to this post:http://beekn.net/2013/10/ibeacons-can-my-ios-app-find-beacons-that-arent-mine/ , in order to listen to an iBeacon, you must know its proximityUUID first.
Unfortunately Apple decides to limited your ability to do that. CoreBluetooth framework can detect iBeacon nearby but since it only returns the device UUID, not the proximityUUID, you cannot add callback to them.
And Android can read the proximityUUID of any iBeacon without any problem.

Estimote Repeat Notifications

I am developing an iOS 8 app with multiple Estimote iBeacons. According to (https://community.estimote.com/hc/communities/public/questions/200966066-How-detect-multiple-beacons-iOS?locale=en-us), I implemented one BeaconManager, and registered it with two BeaconRegions. However, only the second beacon region works.
Instead, I used two BeaconManagers and register one BeaconRegion for each of them. Now it works. However, a new problem occurs: in some cases when I enter or exit the region, I receive multiple notifications for one beacon, instead of only one. This link (http://beekn.net/2013/11/ibeacon-tutorial-dealing-with-errors/) says it's a bug from Apple, but I am not sure about the case.
Anyone can help?
Thanks,
Ryan
Beacon regions are shared system resources, which means that all the BeaconManagers and LocationManagers are notified about state changes of all the regions registered in the app.
Example: if you monitor beacon region A with manager A, and beacon region B with manager B, manager A will still get notifications about region B. Same for manager B and region A.
Because of that, it rarely makes sense to have more than one instance of a BeaconManager in your app.
Monitoring multiple regions should work just fine with a single BeaconManager, there must be something specific to your code that leads to one of the regions not working. If you could add a code snippet to your question, that'd probably help tracking the issue down.
As per my opinion, these should be only one beacon manager to manage all beacon.
And if you have beacon from same vendor (In your case it is Estimote iBeacons) then I don't think that you need to create more than one region here.
Because all beacons of same vendors have same proximity UUID. What is different is its Major value and Minor value.
So you can differentiate all beacons with its Major and Minor values also there is a ranging which can make a further granularity for seperation.

How can we read broadcasted message from unsecured iBeacon?

Is it possible to read iBeacon broadcasting message, that is unsecured without knowing the identifier to connect or monitor them? Basically in iOS you need to specify the UDID of that iBeacon in order to monitor it rather then we need the list of all the beacons that are near by and fetch its broadcasting message like location etc..
On iOS you cannot see iBeacons for which you have not provided the ProximityUUID up front. This is a limitation of the iOS APIs and the operating system.
You can specify up to 20 ProximityUUIDs simultaneously for monitoring (and more for ranging). You can even rotate more UUIDs into your list over time. This would allow you to use a list of known UUIDs from a source like wikibeacon.org to find many beacons nearby. But it will not let you see any beacon with an unpublished and unknown UUID.
For this, you can use a beacon scanner app on Android, OSX or Linux which have no such restrictions.

Detect Roximity iBeacon without Roximity SDK?

We are looking at ordering some iBeacons from Roximity but I am not clear if we have to use the Roximity SDK with these beacons or if I can use the core location functionality?
The reason I am asking is that I do not want to get tied to their SDK and then have to always buy beacons from them.
I was able to get the UUID of the Roxmity beacon, but I do not know what the beacons "identifier" is, so in the case of this code:
[[CLBeaconRegion alloc] initWithProximityUUID:_uuid identifier:#"COM.TEST.APP"];
I do not know what to put in place of COM.TEST.APP
I received some Roximity beacons yesterday, and used them successfully without the Roximity SDK. The UUID that our beacons had was:
8DEEFBB9-F738-4297-8040-96668BB44281
We found the UUID by scanning with a Mac app we wrote that finds any beacons in the local area. Simply create a CLBeaconRegion with that UUID and start ranging, and they should show up. Make sure you've removed the plastic isolator tab from the battery.
As #davidgyoung mentions below, the identifier parameter won't affect whether you can detect the beacons or not.
The identifier you mention in this line of code does not affect the ability to detect an iBeacon, Roximity or otherwise:
[[CLBeaconRegion alloc] initWithProximityUUID:_uuid identifier:#"COM.TEST.APP"];
The "COM.TEST.APP" identifier is just a reference string for you as an application programmer. By using this same string when constructing a second region, you are telling iOS that these are the exact same region. This is useful for canceling monitoring or ranging. It is also useful for replacing one region with another using the CoreLocation APIS.
As long as you keep it consistent for these purposes, that string can be whatever you want.
As for the bigger question if you can use their beacons independently of their SDK, try detecting their beacon with my free Locate for iBeacon app in the AppStore. You have to add the Roximity UUID to the configuration list, but once you do so, if the app is able to locate it, that means it is compatible with standard CoreLocation iBeacon APIs.

iBeacon devices scan and retrieve minor, major, uuid params

Does anyone know if it's possible on iOS to scan the network and then discover all iBeacons devices? After the scan is completed I would like to get for each device the real uuid, minor and major values and check throughout a web service if that particular configuration is saved in my database.
I know that generally on iOS you have to know the proximityUUID and listen to a region using the Beacons API.
Thanks.
It only possible to scan a network for predefined beacon. A beacon region looks for devices whose identifying information matches the information you provide. When that device comes in range, the region triggers the delivery of an appropriate notification. see CLBeaconRegion class here

Resources