2016-06-20 3 views
3

Я смотрел SiriKit в wwdc и читал документ.Поддержка SiriKit для общих служб

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

Добавить поддержку Sirikit только если ваше приложение реализует один из следующих видов услуг:

  • Аудио и видео призывающую
  • сообщений Платежи
  • Поиск фотографий
  • Тренировки
  • езды бронирование

Я до сих пор интересно, могу ли я сделать для других услуг (так как мое приложение будет для корпоративных приложений).

Мое обслуживание будет очень простым в поиске, как «Find SQ212 in myapp».

Можно ли это сделать? Я боюсь, что сиркит не может поддерживать намерение других сервисов.

+0

Возможный дубликат [Предоставляет ли компания Apple в API для SIRI?] (Http://stackoverflow.com/questions/7857353/does-apple-provide-an-api-for-siri) –

ответ

3

Нет, вы не можете. Вот почему он говорит «только если ваше приложение реализует один из следующих видов услуг».

Вы не получите 'find foo в bar' синтаксис; каждая соответствующая служба имеет свой собственный синтаксис - например, «запустите тренировку в MyApp» или «Закажите поездку до place с помощью MyApp». См. Примеры https://developer.apple.com/sirikit/.

я ожидал бы обходной путь с помощью Sirikit API привести в вашем приложении отвергается, если представленные общий магазин приложений, и я бы ожидать, что это будет чрезвычайно хрупкими, если он прошел App обзора или не пройти это в первую очередь.

0

Я нашел this статью о создании Sirikit Extensions, которые не являются стандартными, предоставленными Apple в swifting.io.

Вот ссылка:

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

Использование INVocabulary

Из документации Apple:

INVocabulary объект позволяет увеличить фиксированный словарный запас вашего приложения с точки зрения, которые являются как уникальные для вашего приложения, так и для текущего пользователя вашего приложения. Регистрация пользовательских терминов дает Siri подсказки, необходимые для правильного применения этих терминов к соответствующим объектам намерения. Вы можете регистрировать только определенные типы пользовательских терминов, такие как имя контакта, имя пользовательской тренировки, пользовательский тег, применяемый к фотографии, или тип оплаты для конкретного пользователя.

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

INMessage

Здесь они используют INSearchForMessagesIntent настроить поиск по указателю для поиска поддержки.

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 конец статьи, автор приходит к выводу, что: «Эксперимент, который мы провели, доказывает, что SiriKit в текущей версии довольно ограничен и не настраивается. На данный момент, если вы хотите использовать SiriKit, вам нужно будет соответствовать строгому языку Intents. « – TXV

+0

Это запрещено Apple, но если разработчик не заинтересован в этом, это должно сработать. – ctkrocks

Смежные вопросы