10

We can make iOS devices act as a iBeacon transmitter and We can locate nearby iBeacons if we know their Proximity UUID.

With Google's Proximity Beacon API, It's possible to configure and register real Beacon hardware, and we can locate them with Nearby Messaging API.

But is it possible to make iOS devices to broadcast as Eddystone Beacons ? And it needs to be discoverable by apps that scan Eddystone beacons.

Thanks in advance.

ayon
  • 2,180
  • 2
  • 17
  • 32

1 Answers1

20

Unfortunately, this is not possible. While iOS devices can advertise Bluetooth LE service advertisements(which are the advertisement type used by Eddystone) using CoreBluetooth APIs, you cannot attach the necessary data. This is because the CBAdvertisementDataServiceDataKey that associates service data to an advertisement is read-only on iOS. You can't set the data.

So while you want to make the iOS device advertise something like this to transmit Eddystone-UID:

0201060303aafe1516aafe00e72f234454f4911ba9ffa6000000000001

You end up advertising something like this:

0201060303aafe0316aafe

This leaves off the Eddystone-UID type code (00), the calibrated power (e7), the namespace identifier (2f234454f4911ba9ffa6) and the instance identifier (000000000001). As a result, it won't be recognized as an Eddystone-UID frame.

davidgyoung
  • 63,876
  • 14
  • 121
  • 204
  • 1
    Thanks for the explanation. I did my study on this, just to be fully sure. Your detailed explanation helped a lot. – ayon Feb 04 '16 at 17:16
  • Can confirm that this is still the case (2021 -- 5 years later)? Maybe outside the scope of this question, but why wouldn't apple add this functionality? -- It seems like Eddystone is an overall improvement on iBeacon... – Stephen C Nov 22 '21 at 17:49
  • 1
    This is still true as of iOS 15.1 in 2021, yes. I cannot speak to why Apple has this restriction. – davidgyoung Nov 22 '21 at 21:00