Beware of Beacon App Generators

We are seeing more and more organisations using our beacons with apps that have been created using (online) app generation services. If you are one of these organisations then you ought to be made aware of a recent change to Apple’s review guidelines:

Section 4.2.6 states:

Apps created from a commercialized template or app generation service will be rejected

There’s discussion on this on the Apple forums and on reddit.

Whatever your or others’ view of this, Apple have already started cleaning the hundreds of thousands of titles from App Store. Beware that if you use an app generator, your app might get rejected and even if it’s accepted it might some day be taken down.

Troubleshooting iBeacon Background Triggering

We wrote last November on how iBeacon triggering on iOS 10 was unreliable on some phones. As of now, with iOS 10.2.1, iBeacon background triggering still isn’t reliable on all iOS 10 phones. Strangely it works on all iOS 9 phones. However, here are some things we have found that have helped:

  • Many beacons set the advertising period higher than Apple recommends to conserve battery. Try setting it to 100ms to see if it solves your problem. If so, gradually increase the advertising period to determine the ‘best’ value. We also have an article on Choosing an Advertising Interval.
  • We have found some phones don’t detect iBeacons at all, not even in foreground when the app is running. While it’s drastic, a reset of phone settings usually gets these phones working. ‘Reset All Settings’ will reset the phone and app settings but will keep your documents and apps. Go to Settings… General and select ‘Reset’. Select ‘Reset All Settings’. The phone will reboot. You will need to set up things like WiFi again as well as, importantly, Settings … Privacy … Location. Uninstall the beacon app that was misbehaving and re-install. ‘Ok’ all the permission prompts again.
  • iOS can only do so much when in background. If a lot of apps are also looking for beacons (regions) or your app has lots of regions, there might not be enough hardware acceleration slots to detect your beacon. To test this, uninstall other apps that might have registered beacon regions and/or reduce the number of regions being detected in your app.

UPDATE for iOS 11: This problem seems to have been fixed with iOS 11.0.3

Beacon Compatibility

We previously wrote a lot about beacon compatibility where we concluded that phone compatibility is more of an issue than beacon compatibility and that you might choose an Apple MFi certified beacon if you wanted additional assurance. However, what does MFi mean?

Certified beacons meet Apple’s beacon specifications. There was a time that these specifications were secret and only available to MFi partners. However, these have since become available after you have ok’d an agreement. If you wish to view them, go to the iBeacon for Developers web page and click on Download Artwork and Specifications.

Google’s Proximity Beacon API

Most beacon platforms are fairly limited in that they are designed around retail marketing scenarios. If you are creating a non-retail marketing solution you might want to look into Google’s little publicised Proximity Beacon API. It allows you to register beacons and have arbitrary data, called attachments, associated with them. What’s more, it supports the registration of iBeacon as well as Eddystone beacons and you can use it free of charge.

The usual usecase is setup via Google’s console followed by update from apps detecting beacons. Android and iOS example are available.

It’s not always apps that are used to detect beacons. For example, you might have a single board computer such as the Raspberry Pi or Bluetooth-WiFi gateway detecting beacons and a web front end managing and monitoring the beacons. Google also provides example scripts that show how other entities can be used to register, list and filter beacons. Alternatively, other entities might even call these scripts.

The storing of arbitrary data allows the proximity Beacon API to be used for scenarios beyond retail marketing such as sensing with sensor beacons and real time locating (RTLS).

Beacon Detection Faulty on iOS 10

We have had several companies contact us very recently regarding problems with beacon detection on iOS 10. Problems include not detecting beacons when the app is not running and, when the app is running, beacons suddenly not being seen when they are in range. Another reported symptom is beacons not being detected for a very long time. These problems are all with apps that previously ‘just worked’ under iOS 9. The problems are erratic in that everything works ok on some people’s phones.

We have done some tests with our apps and have reproduced the background scenario of a beacon not being detected on a phone running iOS 10.0.1 that is detected, at the same time, by the same app on iOS 9. Strangely, once the power/screen is manually activated on the iOS 10 phone, the beacon gets detected. Updating to the latest 10.1.1 doesn’t fix the problem.

There are related posts on the ‘Beacon Ranging Problem in 10‘ and ‘Beacon Ranging in background on iOS10 is not working‘ on the Apple forums suggesting similar problems.

This is just a public service announcement that if beacon detection isn’t working for you at the moment the problem is not necessarily with your implementation or the product/app you are using. We believe the problem has been reported to Apple and you will need to wait for an iOS update with a fix.

UPDATE: See https://openradar.appspot.com/29509635

UPDATE March 2017: Troubleshooting iBeacon Background Triggering