SiriKit soutien pour les services généraux

J'ai regardé SiriKit dans wwdc et lu le document.

https://developer.apple.com/library/prerelease/content/documentation/Intents/Conceptual/SiriIntegrationGuide/

Ajoutez le support SiriKit uniquement si votre application implémente l'un des types de services suivants:

  • Appel audio ou video
  • Paiements de messagerie
  • Recherche de photos
  • Entraînements
  • Réserver une réservation

Je me request toujours si je peux faire pour d'autres services (puisque mon application sera pour l'application d'entreprise).

Mon service sera très simple de search seulement comme "Trouver SQ212 dans myapp".

Peut-il être fait? J'ai peur que sirkit ne puisse pas supporter l'intention pour d'autres servies.

Non, tu ne peux pas. C'est pourquoi il est dit " seulement si votre application implémente l'un des types de services suivants".

Vous n'obtiendrez pas la syntaxe 'find foo in bar '; chaque service respectif a sa propre syntaxe – comme "commencer une séance d'entraînement dans MyApp" ou "Réserver un trajet pour place avec MyApp". Voir https://developer.apple.com/sirikit/ pour des exemples.

Je m'attendrais à ce qu'une solution de contournement utilisant l'API SiriKit entraîne le rejet de votre application si elle est envoyée à l'App Store général, et je m'attendrais à ce qu'elle soit extrêmement fragile si elle a passé App Review ou n'est pas passée en revue.

J'ai trouvé cet article sur la fabrication des Sirikit Extensions qui ne sont pas celles proposées par Apple sur swifting.io.

Voici le lien:

https://swifting.io/blog/2016/07/18/20-sirikit-can-you-outsmart-provided-intents/

Utiliser INVocabulaire

De la documentation Apple:

L'object INVocabulaire vous permet d'augmenter le vocabulaire fixe de votre application avec des termes uniques à votre application et à l'user actuel de votre application. L'logging de termes personnalisés fournit à Siri les indications dont il a besoin pour appliquer ces termes de manière appropriée aux objects d'intention correspondants. Vous pouvez save uniquement certains types de termes personnalisés, tels que le nom d'un contact, le nom de l'entraînement d'un user, un tag personnalisé appliqué à une photo ou un type de paiement spécifique à l'user.

 public enum INVocabularySsortingngType : Int { case contactName case contactGroupName case photoTag case photoAlbumName case workoutActivityName case carProfileName } 

INMessage

Ici, ils utilisent INSearchForMessagesIntent pour configurer une search d'index pour find un support.

 struct SupportMe{ static let systems = [ INPerson(personHandle: INPersonHandle(value: "MyNotes", type: INPersonHandleType.unknown), nameComponents: nil, displayName: "MyNotes", image: nil, contactIdentifier: "MyNotes", customIdentifier: "MyNotes")] static let articles = [ INMessage(identifier: "MyNotesPassword", content: "Resortingeving password in MyNotes app. To resortingeve password use 'forgot password' button that is located below sign in button. Then type email address that your account has been assigned to and press reset password", dateSent: Date(), sender: SupportMe.systems[0], recipients: [SupportMe.systems[0]])] } extension IntentHandler: INSearchForMessagesIntentHandling{ func handle(searchForMessages intent: INSearchForMessagesIntent, completion: (INSearchForMessagesIntentResponse) -> Void){ let userActivity = NSUserActivity(activityType: Ssortingng(INSearchForMessagesIntent.self)) let response = INSearchForMessagesIntentResponse(code: .success, userActivity: userActivity) response.messages = [SupportMe.articles[0]] completion(response) } }