This past week, we finally heard back from Apple and have a bit of back and forth about the app. We had to make some adjustments to the metadata and are now waiting for them to re-check it. I’m hoping it will be available this week, but, I could be wrong.
BeaconThings is back “In Review” again. Let’s hope is doesn’t take so long this time.
BeaconThings is now available on the App Store!
YAY! So excited to try this out. Thanks for making great stuff,
Just a quick note about the new Eddystone standard from Google for I beacons. This has some features not available in the original I beacon standard.
Most manufacturers are now making two versions of their I beacons: one for the original standard and one for Eddystone. In general, the Eddystone versions will only work with android apps, not iOS apps. Meanwhile the original version is handled more efficiently in iOS but also works with android. So now when you are shopping for I beacons you need to check and see whether it’s an Ibeacon version or an Eddystone version or configurable for either.
Estimote, specifically, has made all of their devices so that they can be configured for either classic Ibeacon or Eddystone. This is because they have more configurable firmware.
So if some of the people in your household have iOS devices and other people have android devices, and you want to use Ibeacons, you will need to make some decisions about which ibeacons you will use and how.
Eddystone has official support on IOS
From Estimote:
While iBeacon is officially supported by iOS devices only, Eddystone has official support for both iOS and Android.
The problem with Eddystone support (so far) is also mentioned on that page from Estimote:
Eddystone support in the Estimote iOS and Android SDKs is based on a single method at this time: Eddystone discovery, which is similar to iBeacon’s ranging. It provides proximity estimates and works only when the app is active.
iOS beacons can be monitored in the background, which is a huge plus in my opinion.
You cut off the “in general” from the front of my statement.
Per spec, yes, Google intends eddystone to work with iOS apps, but there are very few iOS apps using it at the present time.
Radius networks is typical:
The beacons for Eddystone are configurable at this time only using the RadBeacon app for Android.
A huge plus if you are an IOS user. IOS could easily monitor for eddystone in the background as well. However, the opposite is not the case for iBeacons. Android will never be able to support iBeacons in a native way.
From my understanding, the problem is for lawyers, not for engineers. Is that your understanding as well?
Dunno. I am not a lawyer but one of them is an open standard with its source out on github, the other is closed down and fully functional with a tiny fraction of “certified” iDevices. As an engineer the former is definitely more appealing than the latter.
it seems that Android actually can support Beacon scanning as a service - There’s a thread here: https://community.estimote.com/hc/en-us/articles/201491176-How-monitoring-in-the-background-works-on-Android-
That thread and comments ultimately leads to this repository: https://github.com/knowledgetranslation/BeaconPlaygroundAndroid/
Where the owner can run the scan as a service on his phone. How to take the source and make a working APK, I dunno, I’m no app developer
Background scanning for I beacons in android can be sort of made to work, but it requires additional software and a user who is willing to follow certain protocols.
That may work fine for home automation in your own home, it’s a real barrier for stores trying to offer beacon -based features to their customers.
To make it work in android, you need two separate things to happen: you need to have downloaded and have running a scanning service app, and you need to have the regular begin app still active in the launcher, although it looks closed.
The biggest issue with this from a practical everyday standpoint is that it’s really easy to break it and not realize that it’s no longer scanning. Which sort of defeats the purpose of I beacons.
From the estimote link above:
Hi Nikolas,
Yes, monitoring in the background works on Android. But, unlike on iOS, it will not work if the app has been shut down completely (removed from the app switcher).
You can find more details in our Java Docs: http://estimote.github.io/Android-SDK/JavaDocs/
Also, “runs in the background” had a different meaning in android once 3.1 came out. In order to shut down some malware exploits, beginning with 3.1 no android app can run in the background until it has been manually opened once in the foreground. Everything starts in a stop condition.
Starting with Android 3.1 all applications, upon installation, are placed in a “stopped” state.(This is the same state that the application ends up in after the user force-stops the app from the Settings application.)
This broke a lot of previous apps which had done background scanning in android. This one has an easy workaround, the user just has to be willing to open the app once every time they start their phone, but you have to remember to do that.
I don’t know how much of any of this is affected by the Eddystone release. But background scanning just works a lot different in android than it does in iOS.
Yes, I read that quote. items runnnig as a service are different than apps running… also if you continue to read on in the comments, the thought that the scanning only works when the app is running is false. The github link I posted earlier has the repository with the source for the scanning service app installer. … and this quote from that page, too:
Not sure where “notify demo” is or
what it refers to. I think you may be getting my app mixed up with the
Estimote app? I’ll recap the point of my app, just to be clear about its
intention.
What my repo represents is a proof of concept. It shows that you can
make an app that can register background scanning of beacons a) with the
app fully closed, and b) upon reboot, without needing to open the app
first.
I’ve just updated the repo to start scanning upon app launch.
This is what the app does:
- When you launch it, it will start looking for Beacons. It will
keep looking for beacons when in the background, and when closed from
the application switcher.
- When you toggle the Bluetooth state of your phone, it will toggle whether or not the service is running.
- When you reboot your phone, if Bluetooth is set to activate by
default, when it’s state is toggled it will toggle the service as above.
The app itself does nothing, it’s just a white screen. It’s just to show that the service can be setup in the background.
I’ve tried this with the repo directly and it worked as expected -
I’ve even tried using the back button to see if I could break it to no
avail. Can you be clearer about this app’s role in what you’re
describing? Can you confirm whether or not this app is behaving as I’ve
described on your end?
I’m testing this with a Samsung Galaxy S4. I haven’t tested this with any other device.
The key sentence in that github text is “when you launch it, it will start looking for beacons.”
It has to be launched, and it has to stay active to the launcher.
That’s not what “running in the background” means in iOS.
But if you find something that works for you, that’s what matters.
This is a purely semantic difference. The automatic app for android works in the same way. It’s always running, waiting for the signal from the BT ODBII adapter in my car. There are beacon apps that run in the background on android and you don’t have to launch the app every time. The service starts when you reboot your phone.
… the part you are skipping is the assertion that the app (once compiled) has to be launched ONCE… to install the service.
Will it work for everybody? Dunno. Could it work for some? Possibly. Seems like just the kind of thing that somebody here might want to tinker with… this is quite a diverse community. I only wish I had the programming skills to compile and test that code
Yeah, I’m all in favor of things that work. The more of them the better!
The SmartApp and device types for BeaconThings will be open, so it would be great if someone wants to make a compatible Android app.
I found a beacon app on the Play Store - https://play.google.com/store/apps/details?id=no.nordicsemi.android.nrfbeacon that should perform actions based on a beacon, but I suspect that the code linked earlier in our discussion may still be needed to set up the beacon scanning service on the device.