capacitor-plugin-siri-shorts v6.0.0
Capacitor Plugin for Siri Shortcuts
💥 Breaking Changes
Version 6 of this Plugin only works with Capacitor 6.
- For Capacitor 5 install npm i capacitor-plugin-siri-shorts@5.0.0.
- For Capacitor 3 or 4 install npm i capacitor-plugin-siri-shorts@3.0.0.
- For Capacitor 2 install npm i capacitor-plugin-siri-shorts@1.0.3.
🔧 Setup
The Plugin requires at least iOS 12 and Xcode 10.
npm i capacitor-plugin-siri-shortsiOS Project
Add a new Item to NSUserActivityTypes inside your Info.plist with your Bundle Identifier:
$(PRODUCT_BUNDLE_IDENTIFIER).shortcutExtend the application:continueuserActivity,restorationHandler function inside your AppDelegate.swift with the following line:
NotificationCenter.default.post(Notification(name: Notification.Name(rawValue: "appLaunchBySiriShortcuts"), object: userActivity, userInfo: userActivity.userInfo))Put this line before the return statement!
The function should look similar to that:
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
    NotificationCenter.default.post(Notification(name: Notification.Name(rawValue: "appLaunchBySiriShortcuts"), object: userActivity, userInfo: userActivity.userInfo))
    return CAPBridge.handleContinueActivity(userActivity, restorationHandler)
}✨ Example Usage
A full Ionic + Angular example is available here
Basic example of the donate function:
import { SiriShortcuts } from 'capacitor-plugin-siri-shorts';
...
someAction() {
  SiriShortcuts.donate({
    persistentIdentifier: "someIdentifier",
    title: "A descriptive title"
  })
}It's recommended to add a listener into the initializeApp() function inside app.component.ts.
initializeApp() {
  this.platform.ready().then(() => {
    
    ...
    
    SiriShortcuts.addListener('appLaunchBySiriShortcuts', (res) => {
      // do something with the response of the shortcut here
      console.log(res)
    });
  });
}🏗️ API Reference
- donate(...)
- present(...)
- delete(...)
- deleteAll()
- addListener('appLaunchBySiriShortcuts', ...)
- removeAllListeners()
- Interfaces
donate(...)
donate(options: Options) => Promise<any>Donates the provided action to Siri/Shortcuts
| Param | Type | Description | 
|---|---|---|
| options | Options | Options to specify for the donation | 
Returns: Promise<any>
Since: 1.0.0
present(...)
present(options: Options) => Promise<any>Presents a modal to the user to add the shortcut to siri and access it via voice
| Param | Type | Description | 
|---|---|---|
| options | Options | Options to specify for the donation | 
Returns: Promise<any>
Since: 2.2.0
delete(...)
delete(options: DeleteOptions) => Promise<void>Deletes the previous donations with the provided persistent identifiers
| Param | Type | 
|---|---|
| options | DeleteOptions | 
Since: 2.1.0
deleteAll()
deleteAll() => Promise<void>Delets all the previously donated activities
Since: 2.1.0
addListener('appLaunchBySiriShortcuts', ...)
addListener(eventName: 'appLaunchBySiriShortcuts', listenerFunc: (shortcut: Shortcut) => void) => Promise<PluginListenerHandle>Listens to events associated with Siri Shortcuts and notifies the listenerFunc if a Shortcuts has been executed.
| Param | Type | Description | 
|---|---|---|
| eventName | 'appLaunchBySiriShortcuts' | Name of the event | 
| listenerFunc | (shortcut: Shortcut) => void | Function to execute when listener gets notified | 
Returns: Promise<PluginListenerHandle>
Since: 2.0.1
removeAllListeners()
removeAllListeners() => Promise<void>Remove all listeners for this plugin.
Since: 2.0.1
Interfaces
Options
Options to specify for the donation
| Prop | Type | Description | 
|---|---|---|
| persistentIdentifier | string | Specify an identifier to uniquely identify the shortcut, in order to be able to remove it | 
| title | string | Specify a title for the shortcut, which is visible to the user as the name of the shortcut | 
| userInfo | UserInfo | Provide a key-value object that contains information about the shortcut, this will be returned in the getActivatedShortcut method. It is not possible to use the persistentIdentifier key, it is used internally | 
| suggestedInvocationPhrase | string | Specify the phrase to give the user some inspiration on what the shortcut to call | 
| isEligibleForSearch | boolean | This value defaults to true, set this value to make it searchable in Siri | 
| isEligibleForPrediction | boolean | This value defaults to true, set this value to set whether the shortcut eligible for prediction | 
UserInfo
DeleteOptions
Options to specify for a deletion
| Prop | Type | Description | 
|---|---|---|
| identifiers | string[] | Array of persistent identifiers which should be deleted | 
PluginListenerHandle
| Prop | Type | 
|---|---|
| remove | () => Promise<void> | 
Shortcut
Object which will be returned by the listener which contains the persistent identifier and the userinfo of a shortcut
| Prop | Type | 
|---|---|
| persistentIdentifier | string |