Read BLE data using sirikit - ios

Im trying to add Siri integration to my app.
Intended for reading measurements from BLE device. How can I prompt user to turn on Bluetooth and continue the discussion with Siri without ending the session.
Break in the sense going to settings may break the Siri session.
Also I need to know how much a session will be available and how much responses siri can ask back.

As the SiriKit documentation clearly shows, there's no Intent for interacting with BLE devices, so you cannot achieve your goals using Siri.
As for the question regarding how much context Siri can handle/remember: it can remember all answers that were used to populate the required parameters of a specific Intent. Once your Intent extension signals Siri that it is able to handle the intent with the required information by calling the handle function of the relevant Intent domain, Siri will forget the previous context.

Related

Siri full sentence order, like sending message via whatsApp

I have been searching for days about Siri integration with an IOS app.
I know about the Siri shortcuts/intents etc.
How do I have Siri take a full sentence such as "Text John I'm on my way" or "Text John via WhatsApp I'm on my way"
Is this something exclusive to Apple apps, is it limited to messaging only or are there other ways to integrate with Siri?
I'm not looking to integrate messaging app, but i'm looking to integrate the full sentence with parameters order/question.
Apple provides SiriKit which gives your application the ability to requests that originate from Siri.
You can look at the Human Interface Guidelines to learn more about designing an interface to interact with Siri.
Do some searcing on SiriKit examples. There are quite a few sources that show how do to an integration with your app.
If you are looking for information about speech recognition within your app, then you may want to look at the Apple Speech Framework
This framework gives you lower level voice recognition and parsing capabilities and may have the flexibility you need.
Hope this helps!
Messaging is not specific to Apple apps.
You can make your application to behave similar to Message app. You need to implement the app extension specific to message intent and add resolve param methods to the handler to handle user input.
Reference for Messaging with SiriKit
https://developer.apple.com/documentation/sirikit/messaging?changes=latest_minor
https://developer.apple.com/documentation/sirikit/insendmessageintent
Sample source - https://www.techotopia.com/index.php/An_iOS_10_Example_SiriKit_Messaging_Extension
https://medium.com/ios-os-x-development/extending-your-ios-app-with-sirikit-fd1a7ef12ba6

iOS SDK can you mute or cancel incoming calls

I found various threads here about how muting or canceling incoming calls (or messages) with the iOS SDK is not possible, due to the fact that Apple doesn't want an app to access system level settings. Well in fact not possible with the official tools, which means that if you somehow manage to do it, your app will not be accepted in the iTunes store.
Well I have been asked to assess the possibility of such an app that could do just that. Namely my client has seen these two apps
https://itunes.apple.com/us/app/lifesaver-distracted-driving/id874231222?mt=8
https://itunes.apple.com/us/app/at-t-drivemode/id907208943?mt=8
And they are sure that an app, basically exactly like these (based on the functionality) can be made.
So here I am, asking, how did these two apps succeed at the impossible and also how did they manage to get those apps uploaded to the iTunes store, if muting your phone is not an Apple approved option? I am not really asking for source code, although I am certainly not rejecting examples, but moreso I am asking for pointers of what class or book or documentation do I have to look up to figure out if this is possible? Apples CTCall and CT* classes did not seem to help me much.
K
Apple added the CallKit framework in iOS 10 to allow app developers to do this sort of thing, among others. For docs, see:
https://developer.apple.com/reference/callkit
It is now possible to detect and block unwanted phone calls from iOS 10 and above.
See the CallKit framework
The CallKit framework (CallKit.framework) lets VoIP apps integrate
with the iPhone UI and give users a great experience. Use this
framework to let users view and answer incoming VoIP calls on the lock
screen and manage contacts from VoIP calls in the Phone app’s
Favorites and Recents views.
CallKit also introduces app extensions that enable call blocking and
caller identification. You can create an app extension that can
associate a phone number with a name or tell the system when a number
should be blocked.

Sirikit supported services and its extended usage

I have a roadside assistance service application. It has some of the functionalities similar to ride booking app(Eg. Uber). How far can i leverage iOS 10 Sirikit? May be, apple can reject it. But i need to know the technical feasibility.
My application's functionality - I am struck in the middle of road with a flat tire. I need a tow assistance for my car. I give my current location and i ask my app to tow to my preferred dealer location. I pay for the service and wait for the provider to respond. I receive continuous updates from my service provider regarding the driver.
1st Step tried: I am trying to open my app with the statement "Siri, get a roadside assistance for my flat tire". I need to open my app and capture FLAT TIRE as a parameter. But I couldn't.
I tried using AppIntentVocabulary.plist. It was not working. I am missing something and there are no complete tutorials over the internet. Any help is much appreciated.
Sample Project:
Github Link for my simple Siri Integration:
https://github.com/vivinjeganathan/SiriExample
This documentation contains preliminary information about an API or technology in development. This information is subject to change, and software implemented according to this documentation should be tested with final operating system software.
SiriKit is a way for you to make your content available through Siri. It also lets you add support for your services to the Maps app. To support SiriKit, you use the Intents framework and Intents UI framework to implement one or more extensions that you then include inside your iOS app. When the user requests specific types of services through Siri or Maps, the system uses your extensions to provide those services.
Add SiriKit support only if your app implements one of the following types of services:
Audio or video calling
Messaging
Payments
Searching photos
Workouts
Ride booking
Check this Link: http://airflypan.com/foundation-course/233
http://airflypan.com/foundation-course/233
You really can't do this in any sensible way for the user. Although you app's usecase will map to ride-hailing intent the vocabulary will not. Siri gives you almost no options to influence the vocabulary she is using to communicate to your User. If you could only teach you users that requesting a tow is actually requesting a ride... :)
Apple have analyzed the domains they are supporting and the vocabulary that is used in these domains and "taught" them to Siri in every language/culture that Siri is supporting. This makes total sense from Apple's point of view because you'd be hard pressed to be able to do this yourself.

iPhone app with call features

I'm trying to get into a new project, by creating an iOS application. But before I start I would like to understand some points:
is it possible to let an application make a phone call? So what I mean is, assumed we have a phone number and would like to call it. Would it be possible to use an (my) application to call this number?
is it possible to let an application speak during a phone call? So after the application started the call, would it be possible that some predefined statements are said in the call?
is it possible that this application hears, registers and analyses what the other person on the phone line is saying? (Leaving apart the privacy issue, assuming that the other person is willing to do that).
Could you please help me? If my question aren't clear, please tell me, I will try to explain it in another way.
Many Thanks
F.P.
iOS is very restricted in terms of the system behaviors third party applications can influence.
To answer your question bluntly, a third party application could prompt the user to initiate a phone / FaceTime call. Once the call is initiated however, your app would enter a background state and relinquish control to the system. The app would not be able to contribute or read any data related to the system phone / FaceTime call.
iOS 10 introduces a VoIP extension, CallKit, which allows third party apps to use the built in calling UI with a custom protocol. You could implement your own protocol (and host servers for handling the exchange of information) and build an extension to make it feel like a system call. You'd be responsible for all aspects of the custom call protocol and thus reading voices, contributing audio, etc. would all be possible (and up to your implementation).
Outside of iOS 10, you would have to built your own VoIP system and interface entirely from scratch.
For more info on CallKit:
WWDC Enhancing VoIP Apps with CallKit
CallKit Enabled Sample App

Does Apple provide an API for SIRI?

Is it possible that Apple does or will provide an API for Siri? It would be great if I can be sipping my coffee and say,
User: Hey Siri, could you please open Angry
Birds; Level 4 and throw a first bird for me. Make sure you at least hit one green pig or it's coming out of your paycheck.
Siri: Yes sure, I will do that for you.
Is this possible? And would you think Apple will provide this to us?
THIS IS NO LONGER ACCURATE:
There is no API and there is no indication of it changing anytime soon. There are private headers that you can look at by decompiling the SDK. This is a great synopsis:
Quora
You can be clever like RTM though, this is as close as it gets:
http://www.rememberthemilk.com/services/siri/
In iOS 10, Apple has announced an API for Siri called SiriKit. However, you can only do it as an app extension and only if your app implements one of the following types of services:
Audio or video calling
Messaging
Payments
Searching photos
Workouts
Ride booking
Climate and radio
SiriKit is a way for you to make your content available through Siri.
It also lets you add support for your services to the Maps app. To
support SiriKit, you use the Intents framework and Intents UI
framework to implement one or more extensions that you then include
inside your iOS app. When the user requests specific types of services
through Siri or Maps, the system uses your extensions to provide those
services.
This means SiriKit cannot be used for the scenario mentioned in the question and in ways that many of us would like.
Source: Apple Docs for SiriKit
When the iPhone was first released, there was absolutely no public talk from Apple about custom app development. The delayed release of the SDK gave them plenty of time to get public feedback on the iPhone user experience and make the SDK ready for public use.
It seems likely that they're taking a similar approach with Siri.
Not yet. If you want it, file a feature request at bugreport.apple.com, and briefly describe what you want it for. The more people ask for it, the more likely it is to happen.

Resources