What APIs does Ringly use for iOS? - ios

I recently came upon ringly.com, a product that lets you visually see notifications from your iPhone to a ring that you wear. As far as I know, Apple does not expose any APIs that would alert your app when a text message arrives on your phone or the phone receives a call.
So how does Ringly work? Does it require a jailbroken phone? If those APIs are available, please point me to them.

From Apple's Notification Center Service (ANCS) Specification:
The purpose of the Apple Notification Center Service (ANCS) is to give Bluetooth accessories (that connect to iOS devices through a Bluetooth low-energy link) a simple and convenient way to access many kinds of notifications that are generated on iOS devices.
This is publicly available and doesn't require a jailbroken phone.

Related

Does iOS BLE scanning require location services to be enabled?

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.

If my iOS app pairs with a device using Core Bluetooth, will other apps have access to the device?

From Android documentation:
Caution: When a user pairs their device with another device using BLE, the data that's communicated between the two devices is accessible to all apps on the user's device.
For this reason, if your app captures sensitive data, you should implement app-layer security to protect the privacy of that data.
Is this also true for iOS? I haven't found anything on it and I assumed because iOS doesn't show the true MAC addresses of devices this wouldn't be an issue, but just wanted to check. Thanks
Yes, iOS also works in a similar way. And if you want private communication, you also need to maintain app layer security. Thus android wear, galaxy watch, and other similar devices use encrypted communication in the app layer.
If you already know the details. BLE communication works via Gatt Characteristics.
Consider there are two health applications running on an iOS device and the user also using an activity tracker device. In that case if the user wants to connect both of the health apps with that tracker, he certainly can do it. Both apps will be able to communicate with the activity tracker and get sensor data using the CBCentral module. Look at the diagram for Details.
On the other hand, In general, vice versa will not possible. Because if both iOS apps use Peripheral Role they will register two different instances of BLE-Service even if using the same UUID. Thus it will force two apps to communicate with completely different characteristics instances. However, it is also possible to work with two peripheral apps with the same UUID but this is not what the BLE developers ever wanted.
you need to provide app level security based on Service UUID, so that devices having the app with only same service UUID can connect.

iOS: detect incoming SMS

How does Fitbit app detect and show incoming SMS messages (including the text) on my watch for iOS? The only info I found it involves jailbreaking, but Fitbit (and all other watches companion apps) do the same without the need of jail break?
Thanks
Sort answer, it does not.
Your fit bit is a bluetooth device with the message extensions, this allows iOS to send notifications to you watch.
It does not go thru the app.

Custom BLE Advertisement on iOS

I'm hoping to create a BLE advertisement on iOS where I can control the advertisement on a byte level.
One use case would be to mimic an iBeacon advertisement. What is the iBeacon Bluetooth Profile (I want to advertise while my app is in the background which is why I'm not using CoreLocation)
I do not see a way to do this with the Core Bluetooth API. Is this correct? Are there alternatives using private API's or jailbreaking?
As the others already pointed out, there is no API on iOS that allows you to do this.
You can advertise as an iBeacon, but only when your app is in the foreground. When in background, the advertisement is removed and therefore cannot be discovered anymore (except for other iOS devices which explicitly scan for that service UUID). Also see the documentation here: Core Bluetooth Background Processing
If you would share your use case and what you want to achieve, maybe there are other ways to realise it.
My experience with iOS is that if it is something is not exposed in the API, there is no way around, except jailbreaking. For Bluetooth low energy the API is at GAP/GATT level, and very little at the lower levels (if anything) is exposed. Advertising is a LL (link layer) feature.
To illustrate how restricted the access is: When scanning for BLE devices you will not have access to the advertiser's MAC address iOS. In Android you have it.
I do not see a way to do this with the Core Bluetooth API. Is this
correct?
Since you have to set Manufacture Specific Data in order to achieve this, if nothing has changed you will experience exactly the same issue that I did. Explained here:
The advertisement key 'Manufacturer Data' is not allowed in CoreBluetooth
It is not possible.

what is the way to get all apps notification alerts to my app from notification centre in ios 7 & 8

I'm working on project which has tricky part. I want to get all notifications from Facebook, Whatsapp and some of the other app to my app notification centre from that i want to send data to the external peripheral device which will notify the user.
You can't. Also this is a duplicate of this thread, so I'll quote from there.
There is no way to get all of these notifications in your own app. You
can use the CoreTelephony to access some of the data related to
incoming calls and you could integrate Facebook and Twitter APIs to
get that data, but you really would have to do it all yourself.
There's no silver bullet here unfortunately!
Even if you used private API, its highly unlikely you'll find a way either, not to mention that your app will be rejected on the app store for using private API.

Resources