how to make iOS7 App for publish passbook, use ibeacon ( like MLB ) - bluetooth

I would like to make iOS7 Application like MLB
I was reading Article is http://www.engadget.com/2013/09/27/mlb-to-use-ios-7s-ibeacon/
this article said to :
MLB application installed ,
Beacon(Bluetooth LE device) sendging Proximity UUID for MLB application,
MLB application make Passbook ticket or update ticket (and Lock screen update passbook)
This feature, Can only have one special applications for Apple authentication?
some articles said to :
Location based marketing and Passbook tickets
This particular application makes iBeacons an extension of the geofencing Apple enabled in last year’s Passbook, which lets an installed pass, ticket or loyalty card popup on the lock screen when you cross the geofence threshold of a defined GPS location. Using BLE, a merchant or other provider can define more targeted “micro-locations” to trigger an alert, in some cases requiring that you be in the presence of an iBeacon in order to validate a Passbook entry .
i don't understand 'particular application'...
iOS7 application can make publish passbook use iBeacon without user event?
(i don't know well english ;; sorry;;)

Bluetooth Beacons support is a new addition to iOS 7.
Rather than using GPS, it works by determining the phone's location relevant to a Bluetooth beacon. These beacons constantly broadcast a UUID that identifies them. Beacons offer more accuracy indoors as GPS doesn't work that well in covered spaces.
The standard CoreLocation framework defines a new class called CLBeaconRegion:
A CLBeaconRegion object defines a type of region that is based on the device’s proximity to a Bluetooth beacon, as opposed to a geographic location. A beacon region looks for devices whose identifying information matches the information you provide. When that device comes in range, the region triggers the delivery of an appropriate notification.
An apps can request to be informed when they are near these beacons. This is how the MLB app works. It is programmed to recognize these beacons and to provide the user with offers and information based on location.
In addition to support within apps, Passkit also provides the support these beacons. It works in roughly the same way. The pkpass file contains a list of UUIDs that identify various beacons and when the phone is near a beacon, the pass is shown on the lock screen.
You can read more about Passkit's support by looking at the package format guide
https://developer.apple.com/library/ios/documentation/UserExperience/Reference/PassKit_Bundle/Chapters/LowerLevel.html#//apple_ref/doc/uid/TP40012026-CH3-SW4
Hopefully that answers your question.

Related

Is there a standard way of sending GPS navigation over BLE?

I'm developing a 'smart watch' which is connected via BLE to an app on a phone.
My idea is to show the direction on the watch so the user doesn't have to remove the phone from their pocket while using their favorite application (Waze, Google Maps, ...)
Is there any standard to send navigation information (turn left/right, ...) to a smart device over BLE?
It seems there are apps that do this, but they are fully custom: https://www.youtube.com/watch?v=naAhe7DTKYM. I'm checking on the side of Android Auto, but it seems to me it's only by USB cable.
Off the top of my head there are two services that you can use for this purpose:-
Location and Navigation Service (Used mostly for outdoor):-
"The Location and NavigationService(LN Service)exposes location and
navigation-related data from a Location and Navigation sensor
(Server)intended for outdoor activity applications."
Indoor Positioning Service (Used mostly for indoor):-
"The Indoor Positioning Service exposes location information to
support mobile devices to position themselves in an environment where
GNSS signals are not available, for example in indoor premises. The
location information is mainly exposed via advertising and the
GATT-based service is primarily intended for configuration."
If both are not 100% suitable for your application, then you can create your custom profile that contains one or both of these services in addition to a custom service (turn left/right etc). This way, any watch can connect to the phone and get the adopted services info, and for any additional info watch can add support for the custom service.
When I was looking for such "standard way" for turn-by-turn navigation (official Bluetooth specification for navigation, similar to official Battery or Heart rate services), I didn't find anything suitable, but I still have a feeling like maybe I've missed something.
Those services Youssif Saeed suggested are for different type of navigation, not turn-by-turn unfortunatery.
Some apps (Sygic for example) may integrate their own BLE service.
I guess the application you linked reads notifications (posted by navigation apps like Waze, Google Maps), extract instructions from them, and then send to an external device via BLE.

Is it possible to dynamically set UUID on iBeacon app?

I have a beacon device that broadcasts different UUID values based on a custom rotation scheme.
Usually, the developer has to set static UUID to be recognized by the app like that (example for iOS):
CLBeaconRegion *region = [[CLBeaconRegion alloc] initWithProximityUUID:uuid major:major minor:minor identifier:identifier];
I was wondering if there is a way to dynamically generate (or receive from a server) the UUIDs to be recognized.
Having said that I am still having difficulties understanding the internal mechanisms of how beacons are understood by iOS and Android. From my understanding, the BLE module of the phone forwards all well-formated iBeacons to the OS which maintains a list of recognized UUIDs. After a simple look-up and if a match is found the OS will bring the corresponding app to the foreground.
However, when does the app's recognized UUID(s) get registered with the OS? How often do they get re-registered? I would be grateful if anyone would point me to any relevant online material or at least the mention the mechanisms involved in this process.
On both Android and iOS registering for beacon ProximityUUIDs to detect amounts to nothing more than applying a filter on Bluetooth packets that match the byte pattern of the beacon and ProximityUUID. The important difference is that on iOS the operating system framework that does the filtering, CoreLocation, puts severe limits on the filters you can have. The iOS limits include:
You can have only 20 UUIDs monitored at any given time for a single app.
A device-wide limit of the first 30 UUIDs monitored gets hardware assisted fast detection. Later UUIDs to register get slower (several minute delays in the background) detections.
You cannot monitor or range for any UUID (global wildcard)
You can, however, change the 20 UUIDs you app is monitoring at any time -- even once every few seconds. The trick is that your app must be in the foreground to do this, or have a permitted way to run in the background to do this UUID rotation.
To register a UUID for monitoring on iOS, you simply declare a region with that UUID ( typically without specifying major and minor values) then call:
[locationManager startMonitoringForRegion:region];
To keep from going over your 20 region limit you also have to call:
[locationManager stopMonitoringForRegion:oldRegion];
On your old regions you do not want to monitor anymore. Otherwise if you go over the 20 limit you will not get detections on newly registered regions.
Of course, you may use a web service to provide the UUIDs for your new regions to monitor.
On Android it is much simpler -- you can monitor for all UUIDs by specifying a global wildcard using the Android Beacon Library and similar SDKs.
Full disclosure: I am the lead developer on the Android Beacon Library, the first beacon implementation on that platform.

How do you get the actual name of a bluetooth low energy device?

I need to get the friendly device name from a ble sensor. I want to find the device and tell the user they are connected to "My Home Sensor" for example. I can find the device, but I don't know how to find that data.
In regular bluetooth, I believe I can use BLUETOOTH_DEVICE_INFO or winsock.
Is there a bluetooth low energy equivalent to bluetooth's BLUETOOTH_DEVICE_INFO?
If possible, could you please provide an example for how to get the information (i.e. device name)?
I'm using Windows 8.1, c++ and visual studio 2013. I've been referencing windows dev docs, but I haven't found anything useful yet.
Thanks!
Assuming that you are able to get connected with the GATT Server, when you parse the GAP profile of the device, you will find an attribute for Device Name under Generic Access Profile (GAP).
This is a list of all the standard GATT Services and their UUIDs. UUID for GAP is 0x1800.
You can look for the list of all the standard Characteristics and their UUIDs. For the Device Name Characteristic, it is 0x2A00.
This explains that the Device Name characteristic is a part of the GAP.

What is the correct service definition for a Bluetooth LE (Smart) Coffee maker?

I want to build an IOT (Internet of things) device using the Bluetooth Smart protocol / GATT. I'm a bit confused how I'd make this conform with the BLE specs. All the profiles listed seem to focus on health-stuff and I'm having trouble making the conceptual leap to other applications.
Assume this device is a coffee maker, and I want to :
Get an alert when the water / coffee needs a refill
Set a timer for when to make coffee
Recognize my coffee preference vs my wife's
Send arbitrary text to be displayed on the LED
Question
What are the appropriate Charactertistics, Services, and Profiles I should use?
Do I need to register these profiles, or UIDs anywhere (e.g. Bluetooth.org)
Where do I enable security? (I don't want anyone to know I put lots of sugar in my coffee?
Where do I send my custom text? In a custom structure?
You have to search for the customized profile (including all services and characteristics) of your specific coffee maker. There isn't a predesigned profile.
No, you don't need to register the profile with it's UUID's. It is already used from your coffee maker ;)
This should be the last point of your work and depend on your manager device.
You have to send your data to the right characteristics which depend on the customized profile of your coffee maker.

Reading Stick'n'Find BLE beacons

I am using a generic BLE plugin for PhoneGap when developing a BLE enabled application. It gives me beacons identification and RSSI, but reading more advanced attributes like battery status or TX power require specific communication with a beacon, which is manufacture dependant as far as I know. Does anybody of you know, how to read for example the battery status from Stick'n'Find BLE beacons. So far I have been able to discover, that it's necessary to connect to the beacon and after it a characteristic has to be read. But here, I am lost.
Marek
You must use a manufacturer SDK to do this. One user reported:
I reached out to the manufacture and they have an SDK (and sample app), you have to sign up for a free account to get access: https://bluvision.com/developer/beeks-beacons-sdk/ http://bluvision.com/developer/wp-content/uploads/sites/2/2014/09/Android-SDK.zip
See here: https://stackoverflow.com/a/26424648/1461050

Resources