4

I looked into the answer for this question and in most of the answers, I found that it is not possible to detect the iBeacon without knowing the UUID of the device.

But some of the apps on App Store is doing the same. Here are the links for those apps, which are detecting unknown iBeacons.

  1. https://itunes.apple.com/in/app/locate-beacon/id738709014?mt=8
  2. https://itunes.apple.com/us/app/my-beacon-best-beacon-manager/id850255614?mt=8

Let me know if it is possible to detect the unknown iBeacon.

Thanks in advance.

Rajan Kambaliya
  • 157
  • 1
  • 12

1 Answers1

7

I am the author of the Locate Beacon you mention in the question and its replacement app Beacon Scope. I can assure you that it must know the ProximityUUIDs up front in order to detect beacons. The app is pre-configured with a dozen or so UUIDs (Estimote's default UUID is one of these) so you can detect those beacons without first manually entering the UUID. We do this to make it as easy as possible on the user. (Obviously that worked as you did not even notice we were doing it. Thanks for the compliment!)

You can see these pre-configured UUIDs by going to tge app Settings, which also allows you to enter more.

In the past there have been private APIs that allow you to detect any beacon on iOS. But there are three problems with these:

  • Apple forbids publishing apps in the AppStore that use private APIs
  • These private APIs are subject to change with any OS update, rendering them unworkable
  • The private APIs I know about to do this were all removed as of iOS 9
davidgyoung
  • 63,876
  • 14
  • 121
  • 204
  • Thanks a lot @davidgyoung for your answer. It is a lot of a use for me. Thanks again. – Rajan Kambaliya Feb 10 '17 at 06:20
  • What do You mean with private API. If I load a list of UUIDs from my webserver is it considered a private API ? – Claudio Ferraro Feb 25 '18 at 21:25
  • No, that is not a private API. A private API is an internal iOS method call that is undocumented but you call anyway because somebody reverse engineered the code and found that it worked anyway. – davidgyoung Feb 26 '18 at 01:19
  • So it seems like there is a fundamental difference in capabilities between the two OS's. According to this answer, in iOS, there is no (safe) way to detect iBeacons without passing a specific UUID. However, in Android, using Android Beacon Library, app devs essentially pass a "pattern" which will match packets, and therefore beacons, for an entire protocol (e.g. Eddystone), making it possible to react to the detection of any beacon (essentially what is being asked for in this SO question). Is this understanding correct? – Landon May 09 '19 at 17:43