2016-06-20 10 views
3

Ich habe SiriKit in wwdc und lesen Sie das Dokument.SiriKit Unterstützung für allgemeine Dienste

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

Sirikit Unterstützung hinzufügen nur, wenn Ihre Anwendung eine der folgenden Arten von Diensten implementiert:

  • Audio oder Video
  • Messaging Zahlungen
  • Suche Fotos Aufruf
  • Workouts
  • Fahrt Buchung

Ich frage mich immer noch, ob ich für andere Dienste tun kann (da meine App für Enterprise App sein wird).

Mein Service wird sehr einfache Suche nur wie "Finde SQ212 in myapp".

Kann es getan werden? Ich befürchte, dass der Sirkit die Absicht für andere Dienste nicht unterstützen kann.

+0

Mögliche Duplikat [Nimmt Apple eine API für SIRI bieten?] (Http://stackoverflow.com/questions/7857353/does-apple-provide-an-api-for-siri) –

Antwort

3

Nein, das geht nicht. Deshalb heißt es "nur wenn Ihre App eine der folgenden Arten von Diensten implementiert".

Sie erhalten nicht die 'finden foo in bar' Syntax; Jeder Dienst hat seine eigene Syntax - wie "starte ein Workout in MyApp" oder "Buche eine Fahrt zu place mit MyApp". Beispiele finden Sie unter https://developer.apple.com/sirikit/.

Ich würde eine Abhilfe erwarten, dass der Sirikit-API in Ihrer Anwendung führt abgelehnt wenn sie für die App Store eingereicht, und ich würde erwarten, dass es extrem zerbrechlich sein, wenn es App Review erfolgreich ist oder nicht durch es in erster Linie.

0

Ich fand this Artikel über die Herstellung Sirikit Extensions, die nicht standardmäßig von Apple auf swifting.io zur Verfügung gestellt werden.

Hier ist der Link:

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

Mit INVocabulary

Aus der Dokumentation Apple:

Das INVocabulary Objekt können Sie Ihre App festen Vokabular mit Begriffen erweitern, die Dies gilt sowohl für Ihre App als auch für den aktuellen Nutzer Ihrer App. Die Registrierung von benutzerdefinierten Begriffen liefert Siri die Hinweise, die benötigt werden, um diese Begriffe entsprechend auf die entsprechenden Absichtsobjekte anzuwenden. Sie können nur bestimmte Arten von benutzerdefinierten Begriffen registrieren, z. B. den Namen eines Kontakts, den Namen eines Workouts eines Benutzers, ein benutzerdefiniertes Tag, das auf ein Foto angewendet wird, oder eine benutzerspezifische Zahlungsart.

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

INMessage

Hier verwenden sie INSearchForMessagesIntent eine Indexsuche Einrichtunterstützung für die Suche.

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: "Retrieving password in MyNotes app. To retrieve 
    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: String(INSearchForMessagesIntent.self)) 
    let response = INSearchForMessagesIntentResponse(code: .success, 
    userActivity: userActivity) 
    response.messages = [SupportMe.articles[0]] 
    completion(response) 
} 
} 
+0

Ad Ende des Artikels kommt der Autor zu folgendem Schluss: "Das von uns durchgeführte Experiment beweist, dass SiriKit in einer aktuellen Version ziemlich begrenzt und nicht so anpassungsfähig ist. Fürs Erste, wenn Sie SiriKit verwenden möchten, müssen Sie dem strengen Intents-Vokabular entsprechen. " – TXV

+0

Dies ist nicht von Apple erlaubt, aber wenn der Entwickler nicht daran interessiert ist, sollte dies funktionieren. – ctkrocks