As of KitKat 4.4, the required proximity API is baked into the Nearby functionality of the Android OS. This means that Android devices no longer require an application to detect and interact with beacons.
iOS, however, still requires either an app or the chrome browser to do so with Google's beacons.
My question: With current technology, if a website is designed using Google's PWA standards, can it have the ability to detect and interact with beacons in the same fashion that an application would (regardless of the browser being used)?
Follow-up, if YES, would it be able to perform these tasks while open in the background?
The short answer is no, you generally cannot interact with beacons from web apps. This is true even on Android devices that use the Chrome browser. On Android, you can launch a web app on beacon detection using Nearby, but only if the user taps the Nearby notification.
Here's the longer explanation:
Android devices do support Google Nearby which allows you to send a notification to a user when your beacon is detected that can (a) launch a native app, (b) launch the Google Play store to install an app, or (c) launch a URL in the default browser.
When launching a URL, the URL can be to a web app and may include a URL parameter that tells it that the web app was launched by the beacon detection through Nearby. But once the launch of complete, the web app's interaction with beacons is over.
In order to have dynamic interaction with beacons, there must be web APIs that give the web app callbacks when beacons are detected. These currently do not exist. There is hope for this in the future using Web Bluetooth APIs (See: https://webbluetoothcg.github.io/web-bluetooth/), however they do not currently support scanning for arbitrary Bluetooth advertisements needed to detect beacons.
Related
An app being used for COVID-19 exposure notifications is asking for access to location services. The developers claim that location services must be enabled for BLE to work in this context. I'm not an iOS developer, but I am having trouble finding if this is accurate or not. This app does not use the Apple API for exposure notification, but it does use the same methodology. To work, the app must be able to scan for other BLE devices at all times, and there is some older discussion I found that indicates that MIGHT be the reason for requiring location services permission.
I'm working on a location related project. I found that iOS has iBeacon which can help the app to get the location data. I want to know if iOS Safari does have the access to it? Or any other similar bluetooth device which can be accessed?
Not yet. There is a proposal in W3C for a "web-bluetooth" specification which has been partly implemented in the chrome , opera and chrome-for-android browsers, although they need to be activated by the users in a somewhat convoluted manner. Like all these things, it'll take time for the committees to spin their wheels and for the browser makers to decide if they want to support it , and then implement it.
MDN docs: https://developer.mozilla.org/en-US/docs/Web/API/Web_Bluetooth_API
Apple don't have this built in to Safari (yet), however there is a Web Browser app called WebBLE that implements 'Web Bluetooth' mentioned by Shayne.
Currently the app only supports a subset of the standard, but it's more than enough for most tasks. It's also Open Source so you could add it to a WebView in your own app if needed.
Having said all that, currently I don't believe Web Bluetooth supports accessing Advertising data - so while you can connect to Bluetooth LE devices and interact with them, you may not be able to get the actual Advertisements (which is kind of the point of iBeacon).
I am trying to figure out a way to use iBeacons to trigger a physical Digital Screen. Has anyone done this or seen this?
What I would like to do is when a customer gets close to a digital screen an iBeacon would be triggered and would load to a digital tv screen an ad hosted on a website. I know you can do this to the phone screen, but can the trigger load content to digital signage? If so what would be needed? I already have an app that is triggering API calls. I assume we need some kind of computer hooked to the screen that receives the trigger and then displays content, but having a hard time wrapping my head around what is needed and have failed to see this anyplace.
Any help is appreciated.
There are a number of architectures that would support this. Below is a simple approach that I have prototyped before:
Make an electronic billboard display out of a computer or tablet that has:
Internet connectivity to refresh an ad from a remote web app.
A Web Browser that opens to the add display URL in the web app mentioned above.
Transmits as a beacon with a known identifier. You can make the tablet or computer send a beacon transmission with the onboard bluetooth interface, or you can simply plug in a USB bluetooth beacon to an open port.
Build a server-side app that does the following:
Has a number of configurable advertisements that display in a web browser.
Has a mapping of user identifiers to advertisements (basically the logic of what users are shown what ads)
Exposes a web service to register new mobile app installations that provide the user identifier, along with any user info (name, address, etc.) needed to target ads.
Exposes a web service to accept notifications of what nearby users have detected the beacon.
Automatically refreshes the advertisement to be targeted to whatever user is nearby, or some default otherwise.
Build a mobile app that:
Upon installation, calls the web service on the server-side app mentioned above to send the user info (name, address, etc.) needed to target advertisements.
Detects the beacon mentioned above using CoreLocation (iOS) or the Android Beacon Library (Android).
When the beacon is detected, calls the web service on server-side app with the user identifier to tell it that the user is nearby.
Like everyone else I'm venturing into mobile app-development and I'm looking at different frameworks / languages. The ones that look most appealing to me are Phonegap, Corona SDK and Monotouch. Objective C seems to be a little too low level. I haven't done memory management for a long time and I'm not yearning to relive that experience. But if that's where I need to go to meet the client's need, I'll go there.
The client in this case needs location aware notifications in an iOS app.
A user story goes like this: The user is out walking the town. She's got her iPhone in her pocket and is listening to music via iTunes. As she walks into her local mall my app (running in the background) detects that she is in the proximity of a branch of her bank. My app also knows that the user has some errand to do at the bank. So my app interrupts the currently playing iTunes track, plays a notification sound and puts a notification text on the screen, telling the user that there's a bank office nearby and that she might want to do that bank errand now.
Could this be done with either Phonegap, Corona SDK or Monotouch?
MonoTouch supports all types of iOS location services (standard, significant location change and region monitoring) so yes, you can do it with MonoTouch.
Whilst Apple has started bringing in geo-location notifications with the Reminders app I'm fairly certain that it won't be exposed in the higher level frameworks as of yet.
Some good info here in the Apple developer docs
There are several ways to track the user’s location in the background,
most of which do not actually require your app to run continuously in
the background:
The significant-change location service (Recommended)
Foreground-only location services
Background location services
...
All are possible with MonoTouch. Pretty sure they are with PhoneGap also. Don't know about Corona.
Can an app toggle bluetooth on/off without prompting the user? Can an app read the list of the ids of nearby discoverable devices? If so, which function returns such a list? This is in the context of blackberry devices.
Thanks!
No. It is not possable (through the API) for a third party application to turn on BlueTooth. The best that you can do is open a BlueTooth connection is a way that will prompt the user to turn it on if it isn't already.
In general, the BlackBerry OS won't let third party applications do things behind the user's back that could compromise data security.