Reading temperature using iBeacon

Requirement: To read temperature from a beacon every 10 minutes where internet connectivity may not be available all the time.

Issues:

  1. Everytime I request for temperature of the Beacon it requires internet connection to authorize it. Is there any way to circumvent this ?.
  2. Is there any way to wake up the iOS device every 10 minutes and read the temperature from the beacon.

Any help would be much appreciated. Thanks in advance.

  1. Sadly, not at this time. Reading temperature requires you to be connected to the beacon … which gives you full access to the configuration options. So to protect your beacons from malicious intents, we enforce the cloud-based authentication, even if all you want is to simply read the temperature.

    We’ve learned our lesson here though, as it’s a request we keep hearing from time to time. Our next-generation beacons will have multiple authentication levels, so it’ll be possible to say, e.g., “you need cloud-based authentication if you want to change your beacon’s settings, but if you only want to read from sensors, you can perform an offline authentication for a read-only access.”

    Also, we’ll have a special telemetry packet that you can enable, and then the temperature readings will be available right there in the packet, no need to connect.

    For a more immediate solution, you can switch your current beacons from iBeacon to Eddystone. If you do that, your beacons will start broadcasting an Eddystone telemetry frame every 12 seconds, temperature included.

  2. Unfortunately not. Background processing options are very limited on iOS, at least if you want your app to be accepted into the App Store. Technically, there’s a “Bluetooth background mode” which allows you to discover Bluetooth advertising packets in the background, but from my experience, it works pretty erratically with advertising—I think it was meant more for devices like heart rate monitor, to allow streaming data to an app, e.g., while you’re running. We don’t support this kind of streaming in the background with our beacons and SDKs yet.

Thanks for your response.

I tried Eddystone and It is working fine in the foreground. But when I try running the app in background iOS,

In iBeacon Mode, I am able to range the beacons but not able to read the temperature. (didDisconnect is getting called)
In Eddystone Mode, As soon as I enter backgroud the ranging returns null. (Empty array is returned)

It would be great if there is any way to solve this.