Siri Kit For Home Automation App? - ios

after reading the apple doc on SiriKit, there are only 6 services where Siri SDK can be used. But i would like to know if there is any crack or way where i can use this in my home automation app, where the api request is sent to my server on my voice command.
Edited 2018
Is it possible now with the release of iOS 12, WWDC 2018 and the new updates in Siri, Siri Shortcuts.
Thanks in advance

As you have already pointed it out that there are currently only six categories which are supported by SiriKit. If you want to achieve something like Siri, you can give try to SpeechFramework introduced in iOS 10. That is not actually like SiriKit, but you can achieve your goal with some efforts and playing with the framework. Here is the very good tutorial for using SpeechFramework.
For the point of any crack or something, I would highly not recommend it as there may be chances of app disapproval from apple.
EDIT:
Please check the EDIT section in question.

You can kind-of do it with Siri Shortcuts, but it takes effort from the user.
There is no way for the you to create a special voice command. Only users can go into Settings > Siri Shortcuts and define a voice command to execute a shortcut you created from the Application.
Also, note that the voice command cannot have any parameters that are passed to the application. The voice command would have to execute a specific action that was defined by the application via the Shortcut. So, "Turn on light X," is a different shortcut than "Turn on light Y." The user would have to create two different voice commands.
As far as the shortcut goes, you can execute pretty much any code, so making an API call shouldn't be an issue.

Related

Create Google voice command without IFTTT

I'm trying to create my own application that uses the Google Assistant device and is able to control my home devices like turn on/off light, lock door, feed cat etc.
I read a lot about Google smart home and this is kind of what I'm looking for but it is problematic to add additional commands and than needs to use Google Home application to configure it again.
IFTTT has a workflow I'm interested to but has limitations in a number of applets and it is another service that is needed to use to execute commands which I would like to avoid..
I want to do something similar to IFTTT but programmatically on my own.
Connect to Google account using specific credentials
Add commands like "Turn on light", "Feed cat".
Then I would like to say to Google: "Hey Google, Feed cat". After saying this command I would like to get a REST API request in my application which I can process and do what I want (like webhook in IFTTT)
Expected application flow
Is it possible to do that without using IFTTT?
I yes how because I can not find any tutorial or Google documentation related to this approach.
Assuming the question is about how to implement the suggested examples using Google Smart Home platform.
The fulfillment flow is actually very similar to what's described in the question:
And commands close to the question examples could be implemented using:
"Fill the cat water bowl": the PETFEEDER device type with the Dispense device trait.
"Turn on the light": the LIGHT device type with the OnOff device trait.

Siri Shortcuts: How do I create a UI for the intent parameters of an iOS shortcut?

I'm trying to create an INIntent to be set up with the new iOS Shortcuts app in iOS 12. I have read the documentation and watched the apple video about it.
I have managed to set everything up and the shortcuts work well, however I can’t seem to figure out how to make customizable options that the user can edit when setting up the shortcut. An example of this would be how the Calendar app’s shortcuts are set up:
Notice the options for Get, Add Filter, Sort by, etc..
I know I can add parameters to the intents in the Intents.intentdefeniton file, but those parameters needs to be set from the app itself before the interaction is donated to the iOS system via SiriKit.
Regardless of what I do the Intent just shows up empty without options.
Any help is appreciated!
I am sorry to bring you bad news, but there is no way to do that. The apps that appear there (like Trello, Overcast, Pocket, etc...) were already supported by Workflow.app before Shortcuts.app was released.
You can try to work around it by calling URL Schemes directly but it might not be the solution you are after.
I think you need to create an Intents UI Extension for this.
https://developer.apple.com/documentation/sirikit/creating_an_intents_ui_extension

What are the default Apple URL schemes for the default apple apps?

I am trying to track down these URLs because I would like to integrate them with the Shortcuts (previously workflow) app. My end game is to make queries that will perform certain functions that I can call from a google home device. In simpler terms, I want to make google home more "Apple friendly."
I have not found anything that is too current out there on the URL schemes. I saw that sending a SMS message was triggered with sms://<PhoneNumber> , but I am not sure how up to date that information is.
I plan on adding features to search Apple Music (by triggering a workflow). I am also planning on adding text message features.
I am also looking into making an app for google home, but I still am in the learning stage with that. Any advice on making google home more Apple friendly would be greatly appreciated.
This is a constantly changing list given the number of features being added or third-party apps. Here's a list that does a good job of staying up-to-date: https://ios.gadgethacks.com/news/always-updated-list-ios-app-url-scheme-names-0184033/

How to make my iOS APP share files directily to another APP like Workflow "Open in" action

Here is the Workflow Action. It seems that Workflow can send a file to another APP directily. Any ideas?
The normal way to send a file to another APP is using Share Extension, but Workflow APP could send it directily without showing the Action Sheet and selecting an APP.
If you set an action like this and run your workflow, it just open the selected APP and that APP got the file.
So I just want to know is there any way to make it happen? Or it just a secret API of iOS and Workflow just use it because of the purchase?
Your exact question needs to be stated more clearly (e.g. exactly WHAT you are trying to accomplish instead of just "integrate"). To get you started, some quick info:
At my last check, Workflow integrates with apps in a few main ways:
1) Via the iOS sharing/share-sheet interface.
2) Built-in support for the app within Workflow itself.
3) (of course, Workflow can also leverage Callback URI's of other apps to integrate with them like any other app can.)
If you want to have direct, built-in support from Workflow, the Workflow team itself must add the support into the Workflow app. This is easier for them (and others) if your app exposes a proper API with functions that allow direct integration.
Going into this further is too broad of a topic for a quick answer. I hope this helps some.

iOS - Can an app running in the background send touch / gesture events to another app in the foreground?

I have been asked to develop an app that will record and later "play back" touches and gestures onto another app running in the foreground.
From my experience and knowledge, this is not possible unless both apps are setup to send/receive data between them through notifications or other methods. Also, it would be a huge risk for apps and their data to be exposed to anybody.
I am 99% sure this is not possible, but was just curious if anyone else has come across something similar (or documentation that specifically states this is forbidden).
Nope not possible, no way no how, dont even try.
Expanded answer, if this runs on a jailbroken phone.......
Yes.... but good luck,
check Saurik's Veency code for this sort of functionality, it would have to be refactored signifcantly but basically it allows for virtualization of taps.
https://github.com/iceNuts/TouchTest
http://gitweb.saurik.com/veency.git
if you want to access another application in your iPhone ,you can set the url scheme parameter and so on.You can add callback in your url,then you can return back your application.
It's actually possible with facebook's idb:
https://github.com/facebook/idb/
As it stated:
Remote Automation. idb has a “companion” that runs on macOS and a python client and cli that runs anywhere. This enables scenarios such as a “Device Lab” within a Data Center or fanning out commands to large numbers of iOS Simulators.
As facebook stop support on WebDriverAgent, it's the best option we have right now

Resources