0

I am working on an ibeacon app and I am worrying about that others might sniff the proximity UUID of my app. So i did some research and found this article: http://developer.radiusnetworks.com/2013/10/21/corebluetooth-doesnt-let-you-see-ibeacons.html

It basically stated like others that apple DOES NOT ALLOW you to do this. but then i found some mac app like this one: https://github.com/liamnichols/iBeaconScanner

I did some test and it really can show me the UUIDs. Does there has any ways to prevent even those mac or android app from getting my proximity UUID?

lemondeer
  • 11
  • 4

1 Answers1

0

The "CoreBluetooth Doesn't Let You See Beacons" blog post you mention was specifically about iOS. On that platform, the operating system's public APIs do not allow you to detect iBeacons unless you know the identifier up front.

The iBeaconScanner program you reference is for OSX, which does not have the same restrictions. On OSX as well as on Android, Linux, Windows and other platforms, you can scan for beacons and read the identifiers without knowing them up front.

I once used the Android Locate app to read the beacon identifiers at the Apple Store, and then made a beacon with the same identifiers and was able to pop an Apple Store welcome message on an iPhone.

You cannot prevent other people from doing this. You need to design any system that uses iBeacon technology to take this possibility into account.

Community
  • 1
  • 1
davidgyoung
  • 63,876
  • 14
  • 121
  • 204
  • Thank you for the detailed explanation. So it's to say that for iBeacon you can not do that, how about using the BLE? For example you can define the own service/characteristic and encrypt/decrypt? I mean technically can you do the job to prevent from anyone get your proximity uuid? – lemondeer Oct 20 '15 at 22:29
  • Yes, it is possible to transmit your own custom BLE advertisement with an encrypted payload that contains an identifier that only you know how to decrypt. Gimbal beacons use a system like this. – davidgyoung Oct 20 '15 at 22:37
  • Thanks David, your answer is really helpful! And if i decide to use that way, will that being more battery consuming than the iBeacon? Does that support background mode advertising/receiving ? – lemondeer Oct 20 '15 at 22:41
  • iOS devices are optimized for iBeacon detection in the background, and nothing can beat the 1-2 second trigger times. When using an alternate system, you necessarily sacrifice speed of detection. Limitations of iOS, however, keep battery drain of any BLE-based system to acceptable levels. – davidgyoung Oct 20 '15 at 22:52
  • So what you are saying is the battery consuming will not be a issue due to the iOS limitations for ANY BLE-based system, however if you are not using Apple iBeacon but writing your own you basically lost the advantage of Apple iBeacon's 1-2 second trigger times is that correct? And, is that correct that iOS device are optimized ONLY for iBeacon detection in background but not other custom BLE system? – lemondeer Oct 20 '15 at 23:03
  • Correct. It is possible to get the advantage of iBeacon detection speed by broadcasting both an iBeacon transmission and a custom transmission. But the iBeacon transmission will obviously be readable by anyone. – davidgyoung Oct 20 '15 at 23:04
  • Really appreciate the answer David! – lemondeer Oct 20 '15 at 23:42