SiriKit 개념 이해하기

이 문서에서는 Xamarin.iOS 앱에서 SiriKit을 사용하는 데 필요한 주요 개념을 설명합니다.

iOS 10을 새롭게 접하는 SiriKit을 사용하면 Xamarin.iOS 앱에서 Siri 및 iOS 디바이스의 지도 앱을 사용하여 사용자가 액세스할 수 있는 서비스를 제공할 수 있습니다. 이 기능은 새 의도 및 의도 UI 프레임워크를 사용하여 하나 이상의 앱 확장에서 제공됩니다.

SiriKit을 사용하면 iOS 앱에서 앱 확장 및 새 의도 및 의도UI 프레임워크를 사용하여 Siri 및 iOS 디바이스의 지도 앱을 사용하여 사용자가 액세스할 수 있는 서비스를 제공할 수 있습니다.

Siri는 관련 작업에 대한 알려진 작업 그룹인 Do기본 개념과 함께 작동합니다. 앱이 Siri와 상호 작용하는 각 상호 작용은 다음과 같이 알려진 서비스 Do기본 중 하나에 속해야 합니다.

  • 오디오 또는 영상 통화.
  • 타고 예약.
  • 운동 관리.
  • 메시징
  • 사진 검색.
  • 결제를 보내거나 받는 경우

사용자가 앱 확장의 서비스 중 하나와 관련된 Siri를 요청하면 SiriKit는 지원 데이터와 함께 사용자의 요청을 설명하는 Intent 개체를 확장에 보냅니다. 그런 다음 앱 확장은 지정된 의도에 대한 적절한 응답 개체를 생성하여 확장이 요청을 처리하는 방법을 자세히 설명합니다.

의도 및 의도 UI 확장

Siri와 지도 앱은 두 가지 유형의 앱 확장을 통해 앱의 서비스와 상호 작용합니다.

  • 의도 확장 - Siri 및 지도 앱의 콘텐츠를 제공하고 지원되는 의도를 수행하는 데 필요한 작업을 수행합니다.
  • 의도 UI 확장 - Siri 또는 지도 내에서 앱의 콘텐츠에 대해 표시되는 사용자 지정 UI를 제공합니다.

앱은 SiriKit을 지원하기 위해 의도 확장을 제공해야 하며 Siri 및 지도 사용자에게 제공할 수 있는 정보를 제공하고 의도를 처리하는 역할을 담당합니다.

Siri는 일반적으로 모든 사용자 상호 작용을 처리하고 지원되는 각 do기본에 정보를 표시하기 위한 기본 제공 표준 UI가 있으므로 의도 UI 확장을 만드는 것은 선택 사항입니다. 의도 UI 확장을 제공하여 앱은 의도 UI 프레임워크를 사용하여 앱의 브랜딩 및 추가 정보를 갖춘 풍부한 사용자 지정 사용자 인터페이스를 제공할 수 있습니다.

Siri 및 지도 앱 역할

사용자의 음성 요청은 Siri가 처리하고 의미 체계적으로 분석하는 언어로, 해당 요청을 의도 확장에서 처리할 수 있는 실행 가능한 의도로 바꿉니다.

지도 앱의 의도 확장을 사용하여 사용자의 작업에 대한 응답으로 지도 인터페이스에 정보를 표시합니다. 인근 레스토랑 요청 또는 앱의 레스토랑 리뷰 가져오기 등.

Siri와 지도 모두 사용자의 모든 상호 작용을 관리하고 표준 시스템 인터페이스를 사용하여 결과를 표시합니다. 앱 확장 역할은 주로 표시되는 데이터를 제공하는 것입니다. 필요에 따라 앱은 의도 UI 확장을 제공하고 기본 시스템 인터페이스를 향상시키기 위해 사용자 지정 UI를 제공할 수 있습니다.

SiriKit을 통해 Siri와 상호 작용

이 섹션에서는 SiriKit을 통해 사용자가 Siri를 사용하여 앱과 상호 작용할 수 있는 방법에 대한 개요를 제공합니다. 이 예제에서는 Fake MonkeyChat 앱을 사용합니다.

The MonkeyChat icon

MonkeyChat은 각각 화면 이름(예: Bobo)과 연결된 사용자 친구의 연락처 책을 보관하고 사용자가 화면 이름으로 각 친구에게 문자 채팅을 보낼 수 있도록 합니다.

사용자가 앱과 상호 작용을 시작할 수 있는 방법은 여러 가지가 있습니다. 다른 사용자가 다양한 형식으로 동일한 요청을 할 수 있기 때문에

예를 들어 사용자가 친구 Bobo에게 메시지를 보내려는 경우 Siri와 다음과 같은 대화를 나눌 수 있습니다.

사용자: Siri, MonkeyChat 메시지를 보냅니다.
시리: 누구에게?
사용자: Bobo.
Siri: 보보에게 뭐라고 말하고 싶나요?
사용자: 더 많은 바나나를 보내주세요.

다른 사용자가 다른 대화로 동일한 요청을 할 수 있습니다.

사용자: MonkeyChat에서 Bobo에게 메시지를 보냅니다.
Siri: 보보에게 뭐라고 말하고 싶나요?
사용자: 바나나를 더 보내주세요.

그리고 다른 사용자가 더 짧은 요청을 할 수 있습니다.

사용자: MonkeyChat Bobo는 더 많은 바나나를 보내주세요.
Siri: 좋아, 메시지를 보내주세요 원숭이 채팅에 보보에 더 많은 바나나를 보내주세요.

또는 다른 언어로 동일한 요청을 수행합니다.

사용자: MonkeyChat Bobo의 il vous plaît envoyer plus de bananes.
Siri: Oui, envoi message s'il vous plaît envoyer plus de bananes à Bobo sur Monkeychat.

그러나 다른 사용자는 대화에서 매우 자세한 정보를 표시할 수 있습니다.

사용자: Siri, 당신은 나에게 호의를 수행하고 메시지와 함께 텍스트를 보내 더 많은 바나나를 보내주세요 MonkeyChat 응용 프로그램을 시작하시기 바랍니다 수 있습니다.
시리: 누구에게?
사용자: 내 가장 친한 친구 보보.

또한 Siri가 요청에 응답할 수 있는 여러 가지 방법이 있으며, 일부는 요청이 수행된 방식에 따라 달라집니다.

  • 홈 버튼을 누르면 - Siri는 제한된 구두 피드백으로 더 많은 시각적 응답을 제공합니다.
  • "Hey Siri" 에 의해 - Siri는 더 구두로 적은 시각적 응답을 제공 할 것입니다.

Siri는 또한 사용자의 접근성 요구를 충족하도록 조정되었으며 이러한 요구 사항에 따라 상호 작용하고 응답합니다.

요청이 수행되는 방식이나 Siri가 요청에 응답하는 방법에 관계없이 Siri는 사용자와의 대화를 처리하고 앱(확장을 통해)은 기능을 제공합니다.

사용자가 Siri를 구두로 요청할 때 Siri가 따르는 단계는 다음과 같습니다.

The steps that Siri will follow

  1. 첫째, Siri는 사용자의 음성 오디오를 가져와 텍스트로 변환합니다.
  2. 다음으로 텍스트는 사용자 요청의 구조화된 표현인 의도변환됩니다.
  3. 의도에 따라 Siri는 사용자의 요청을 수행하기 위한 조치를합니다.
  4. 마지막으로 Siri는 수행된 작업에 따라 사용자에게 응답(시각적 및 구두)을 제공합니다.

앱이 Siri와의 사용자 대화에 참여할 수 있는 세 가지 기본 방법이 있습니다.

The three main ways that the app can take part in the users conversation with Siri

  1. 어휘 - 앱이 Siri에게 상호 작용하기 위해 알아야 할 단어를 알려주는 방법입니다.
  2. 앱 논리 - 지정된 의도에 따라 앱이 수행할 작업 및 응답입니다.
  3. 사용자 인터페이스 - 앱에서 응답을 제공할 수 있는 선택적 사용자 지정 사용자 인터페이스입니다.

예시

위의 정보를 고려하여 다음 대화가 MonkeyChat 앱과 상호 작용하는 방법을 검토합니다.

사용자: Siri, MonkeyChat에서 보보에게 메시지를 보냅니다.
Siri: 보보에게 뭐라고 말하고 싶나요?
사용자: 바나나를 더 보내주세요.

앱이 대화에서 수행하는 첫 번째 역할은 Siri가 사용자의 음성을 이해하는 데 도움이 되는 것입니다.

Helping Siri understand the users speech

Siri는 데이터베이스에 "Bobo"라는 이름을 가지고 있지 않지만 앱은 어휘를 통해 Siri와 이 정보를 공유했습니다. 또한 이 앱은 Siri가 Siri를 연락처지정했기 때문에 Bobo가 수신자임을 인식하는 데 도움이 됩니다.

Siri는 받는 사람보다 메시지를 보내는 데 더 많은 것이 필요하다는 것을 알고 있으므로 앱 확장으로 신속하게 검사 메시지에 콘텐츠가 필요한지 확인합니다. MonkeyChat이 그렇기 때문에 Siri는 "보보에게 뭐라고 말하고 싶습니까?" 라는 질문 으로 사용자에게 응답합니다.

위의 예제에서 사용자는 "바나나를 더 보내주세요"라고 대답했습니다. 그러면 Siri가 구조화된 의도로 번들됩니다.

Siri will bundle the user's response into a structured Intent

구조화된 의도에는 다음 정보가 포함됩니다.

  • Do기본: Messages
  • 의도: sendMessage
  • 받는 사람: Bobo
  • 콘텐츠: 더 많은 바나나를 보내주세요.

모든 Do기본 작업 내에서 수행할 수 있는 알고 있는 작업 집합으로, Do기본 및 작업을 기반으로 하며, 0~많은 매개 변수가 앱에 전송된 의도에 포함될 수 있습니다.

그런 다음 처리를 위해 의도를 앱 확장으로 보냅니다. 의도를 처리한 결과 앱은 의도와 함께 번들로 제공되는 IntentResponse를 생성하고 앱이 의도로 무엇을 했는지 설명하는 매개 변수를 포함합니다.

각 IntentResponse에는 앱이 요청을 완료할 수 있는지 여부를 Siri에게 알려주는 응답 코드도 포함됩니다. 일부 Do기본에는 보낼 수 있는 매우 구체적인 오류 응답 코드도 있습니다.

마지막으로 IntentResponse에는 핸드오프를 NSUserActivity 지원하는 데 사용되는 것과 같은 항목이 포함됩니다. 응답 NSUserActivity 에서 Siri 환경을 벗어나서 앱을 입력하여 완료해야 하는 경우 앱을 시작하는 데 사용됩니다.

Siri는 사용자가 Siri 환경에서 중단한 앱을 시작하고 픽업하는 데 적합한 NSUserActivity 항목을 자동으로 빌드합니다. 그러나 필요한 경우 앱은 사용자 지정된 정보를 자체 NSUserActivity 적으로 제공할 수 있습니다.

앱이 의도를 처리하고 Siri에 응답을 반환한 후 사용자에게 결과를 표시합니다(구두 및 시각적으로 모두).

The results presented to the user both verbally and visually

Siri에는 앱에서 사용할 수 있는 각 할 일기본 대한 몇 가지 기본 제공 응답 사용자 인터페이스가 있습니다. 그러나 MonkeyChat은 선택적 의도 UI 확장을 제공했기 때문에 위의 예제에서 사용자에게 대화 결과를 표시하는 데 사용됩니다.

의도 수명 주기

의도를 처리할 때 앱 확장에서 수행해야 하는 세 가지 기본 작업이 있습니다.

The Intent Lifecycle

  1. 앱은 이벤트의 모든 매개 변수를 확인해야 합니다. 결과적으로 앱은 Resolve를 여러 번(각 매개 변수당 한 번) 호출하고, 앱과 사용자가 요청되는 내용에 동의할 때까지 동일한 매개 변수에서 여러 번 호출합니다.
  2. 앱은 요청된 의도를 처리할 수 있는지 확인하고 Siri에게 예상 결과를 알려야 합니다.
  3. 마지막으로 앱은 의도를 처리하고 요청된 결과를 달성하기 위한 단계를 수행해야 합니다.

해결 단계

해결 단계는 Siri가 사용자가 제공한 값을 이해하고 사용자가 실제로 의미하는 바가 앱에서 의도를 처리할 때 발생하는 일인지 확인하는 데 도움이 됩니다.

또한 이 단계에서는 앱이 사용자와 대화하는 동안 Siri의 동작에 영향을 줄 수 있는 기회를 제공합니다. 이를 위해 앱은 해결 응답을 제공합니다. Siri가 이해하는 다양한 유형의 데이터에 대해 미리 정의된 응답이 많이 있습니다.

에서 가장 일반적인 해결 응답은 성공입니다. 즉, 앱이 매개 변수(예: 사용자 화면 이름)의 특정 데이터 조각을 알고 있는 정보 조각과 일치시켰습니다.

앱이 지정된 요청이 알고 있는 올바른 정보와 일치하는지 확인해야 하는 경우가 있을 수 있습니다. 이러한 경우 "Bobo the Great에게 메시지 보내기"와 같이 사용자에게 Yes 또는 no 질문을 하는 ConfirmationRequired 응답을 보냅니다.

앱에서 사용자가 짧은 옵션 목록에서 선택해야 하는 다른 경우가 있을 수 있습니다. 이 경우 앱은 다음과 같이 사용자가 선택할 수 있는 2~10개의 옵션 목록과 함께 명확성 응답을 제공합니다.

Who do you want to message?

* Bobo the Great
* Bobo Jr.
* Little Bobo

Siri는 사용자가 구두로 또는 Siri UI와 상호 작용하여 선택하도록 처리하고 결과는 앱으로 다시 전송됩니다.

다른 경우에는 앱이 매개 변수를 해결하기에 충분한 정보가 없거나 명확성을 사용하여 해결할 일치 항목이 너무 많을 수 있습니다(예: 이름에 Bobo가 있는 80명의 사용자). 이 경우 앱은 NeedsMoreDetails 응답을 보내고 Siri는 사용자에게 보다 구체적인 메시지를 표시합니다.

사용자가 의도를 처리하는 데 필요한 값을 제공하지 않은 경우, Siri가 사용자에게 값을 묻는 메시지를 표시하도록 NeedsValue 응답을 보낼 수 있습니다.

앱이 사용자가 특정 매개 변수에 대해 제공한 값을 지원하지 않는 경우 UnsupportedWithReason 응답을 보내 값이 지원되지 않는 이유를 제공할 수 있습니다. 그런 다음 Siri는 사용자에게 완전히 새로운 값을 묻는 메시지를 표시하고 필요한 이유를 제공합니다.

마지막으로 NotRequired 응답을 사용하여 앱에 지정된 매개 변수에 대한 값이 필요하지 않다는 것을 Siri에 알릴 수 있습니다. 사용자가 어쨌든 하나를 제공 하는 경우, 그것은 단순히 Siri에 의해 무시 됩니다.

확인 단계

확인 단계는 다음 두 가지 용도로 사용됩니다.

  • Siri가 사용자에게 무슨 일이 일어날지 알 수 있도록 의도를 처리하는 예상 결과를 Siri에게 알릴 수 있습니다.
  • 요청된 결제를 위해 은행에 충분한 자금을 보유하는 등 앱이 사용자가 제공한 요청을 완료하는 데 필요한 모든 상태를 검사 기회를 제공합니다.

앱은 확인 단계에서 의도 응답을 제공하며, Siri가 사용자와 효과적으로 통신할 수 있도록 앱에서 사용할 수 있는 많은 정보로 채워져야 합니다.

Do기본 및 작업 유형에 따라 Siri는 결제를 보내거나 라이드를 예약하기 전에 사용자에게 확인 메시지를 표시할 수 있습니다.

핸들 스테이지

핸들 스테이지는 앱이 요청된 작업을 수행하여 사용자의 요청을 수행하는 지점이기 때문에 의도 작업의 가장 중요한 부분입니다.

확인 단계에서와 마찬가지로 Siri가 사용자와 연결할 수 있도록 앱에서 결과에 대한 많은 정보를 제공해야 합니다. 경우에 따라 이 정보가 시각적으로 표시되거나 Siri가 사용자에게 다시 말하기만 하면 됩니다.

앱이 네트워크 통화 지연과 같이 지정된 요청을 처리하는 데 추가 시간이 필요할 수 있거나 라이브 사용자가 요청을 수행해야 하는 경우가 있을 수 있습니다(예: 주문 완료 및 배송 또는 사용자의 위치로 자동차 운전). Siri가 앱에서 응답을 다시 기다리는 경우 앱이 요청을 처리하고 있음을 알리는 대기 UI가 사용자에게 표시됩니다.

이상적으로, 응용 프로그램은 최대 2 ~ 3 초 이내에 Siri에 응답을 제공해야합니다. 앱에서 지정된 응답을 처리하는 데 시간이 더 오래 걸릴 것으로 알고 있는 경우 InProgress 응답 코드를 Siri로 보내야 합니다. 그런 다음 Siri는 앱이 백그라운드에서 요청을 처리하고 있음을 사용자에게 알리고 Siri 환경을 떠나더라도 계속 그렇게 할 것입니다.

앱에 SiriKit 추가

iOS 10의 SiriKit을 통해 Apple은 두 개의 새로운 확장 지점을 만들었습니다.

  • 의도 확장 - Siri에게 앱의 콘텐츠를 제공하고 지원되는 의도를 수행하는 데 필요한 작업을 수행합니다.
  • 의도 UI 확장 - Siri 내의 앱 콘텐츠에 대해 표시되는 사용자 지정 UI를 제공합니다.

Siri에 단어와 구를 제공하여 다음과 같은 형태로 인식을 지원하는 API도 있습니다.

  • 앱 어휘 - 앱의 모든 사용자에게 공통적인 단어 및 구입니다.
  • 사용자 어휘 - 지정된 앱 사용자에게 고유한 단어 및 구입니다.

의도 확장

의도 확장은 다음과 같이 앱과 Siri 간의 기본 상호 작용을 처리합니다.

The Intents Extension

의도 확장은 하나 이상의 의도를 지원할 수 있으며, 개발자는 앱에서 SiriKit을 구현하는 방법을 결정해야 합니다. 개발자는 처리해야 하는 각 의도에 대해 별도의 의도 확장을 추가할 수도 있습니다. 즉, Apple은 Siri가 앱에 대해 열려 있는 여러 프로세스가 없도록 개발자에게 의도 확장 수를 제한하도록 요청하며, 이를 처리하기 위해 더 많은 메모리와 시간이 필요합니다.

또한 개발자는 Siri가 활성 상태인 동안 의도 확장이 백그라운드에서 실행된다는 점에 유의해야 합니다. 이를 통해 Siri는 확장과 통신하면서 사용자와 적극적으로 대화를 진행하여 요청에 대한 정보를 처리할 수 있습니다.

개인 정보 및 보안 고려 사항

Apple은 Siri를 사용할 때 사용자 개인 정보가 안전한지 확인하기 위해 훌륭한 조치를 취했으며, 따라서 사용자가 iOS 디바이스에 로그인해야 하는 몇 가지 상호 작용이 있습니다. 예를 들어 차량 이용을 요청하거나 결제하는 경우입니다.

또한 앱이 디바이스에 로그인하는 사용자로 제한하려는 특정 동작이 있습니다. 이러한 상황에서 앱은 잠근 동안 제한 동작을 요청할 수 있습니다. 이 작업은 파일의 설정을 통해 수행됩니다 Info.plist .

로컬 인증 프레임워크는 의도 확장에 사용할 수 있으므로 앱은 디바이스가 이미 잠금 해제된 경우에도 사용자에게 추가 인증 정보를 요청할 수 있습니다.

마지막으로, Apple Pay는 의도 확장에 사용할 수 있으므로 앱은 Apple Pay를 사용하여 트랜잭션을 완료할 수 있으며 기본 제공 Apple Pay 시트는 Siri 인터페이스 위에 표시됩니다.

또한 Apple은 사용자가 타사 앱에 정보를 보낼 때 이를 알 수 있도록 하고자 하며, 사용자는 요청을 할 때 앱의 특정 이름(앱의 번들 표시 이름에 지정된 대로)을 말해야 합니다 .

애플은 사용자와 자연스럽고 유동적인 대화를 수행하도록 Siri를 설계했으며, 이로 인해 앱의 번들 이름은 사용자의 요청에 자연스럽게 부합하는 모든 음성에서 사용할 수 있습니다.

사용자가 수행하는 일반적인 작업 중 하나는 앱의 이름을 "자세한 정보"로 지정하는 것입니다. 즉, 앱 이름을 가져와서 요청에서 동사로 사용하는 것입니다. 예를 들어 " MonkeyChat Bobo는 훌륭한 바나나였습니다."

의도 UI 확장

의도 UI 확장은 앱의 UI 및 브랜딩을 Siri 환경으로 가져오고 사용자가 앱에 연결되어 있다고 느낄 수 있는 기회를 제공합니다. 이 확장을 통해 앱은 브랜드뿐만 아니라 시각적 개체 및 기타 정보를 대본으로 가져올 수 있습니다.

Example Intents UI Extension output

의도 UI 확장은 항상 a를 UIViewController 반환하고 앱은 초기 응답을 넘어서는 추가 정보를 표시하는 등 보기 컨트롤러 내부에 좋아하는 모든 항목을 추가할 수 있습니다. 의도 UI는 차량 공유 자동차가 해당 위치에 도달하는 데 걸리는 시간 등 장기 실행 이벤트의 상태 사용하여 사용자를 업데이트할 수도 있습니다.

의도 UI 확장은 항상 UI 맨 위에 있는 앱 아이콘 및 이름과 같은 다른 Siri 콘텐츠와 함께 표시되거나 의도에 따라 단추(예: 보내기 또는 취소)가 아래쪽에 표시될 수 있습니다.

앱에서 기본적으로 Siri가 사용자에게 표시하는 정보(예: 메시징 또는 앱이 기본 환경을 앱에 맞게 조정된 환경으로 바꿀 수 있는 맵)를 대체할 수 있는 몇 가지 경우가 있습니다.

Important

의도 UI 확장UIViewController과 같은 UIButtonsUITextFields 대화형 요소를 추가할 수 있지만 비대화형에서는 의도 UI로 엄격히 금지되며 사용자는 이러한 요소와 상호 작용할 수 없습니다.

Siri는 각 의도 유형에 대한 기본 UI 집합을 포함하기 때문에 앱에서 의도 UI 확장을 제공하는 것은 완전히 선택 사항입니다. 또한 의도 UI 인터페이스는 Apple이 사용자에게 유용하다고 판단한 특정 의도에 대해서만 사용할 수 있습니다.

SiriKit 어휘 추가

SiriKit 구현의 마지막 조각은 필요한 어휘를 제공하여 앱 내에 있습니다. 많은 앱에는 사용자에게 정보를 설명하는 고유한 방법과 사용자가 앱에 정보를 제공하는 고유한 방법이 있습니다.

이 때문에 Siri는 앱에 고유한 단어와 구를 이해하기 위해 앱의 지원이 필요합니다. 이러한 문구 중 일부는 모든 사용자가 알고 이해할 수 있도록 앱의 일부가 됩니다. 그러나 다른 사용자는 앱의 지정된 사용자에게 고유합니다.

앱별 어휘

앱별 어휘는 차량 유형 또는 운동 이름과 같이 앱의 모든 사용자에게 알려질 특정 단어와 구를 정의합니다. 애플리케이션의 일부이므로 파일에 기본 앱 번들의 일부로 정의 AppIntentVocabulary.plist 됩니다. 또한 이러한 단어와 구는 지역화되어야 합니다.

어휘 AppIntentVocabulary.plist 파일에는 다음과 같은 몇 가지 부분이 있습니다.

  • 앱 사용 예제 - 사용자가 앱을 만들 수 있는 요청에 대한 일반적인 사용 사례 집합을 제공합니다. 예: "MonkeyFit으로 운동 시작"
  • 매개 변수 - 앱과 관련된 비표준 매개 변수 형식 집합을 제공합니다. 예를 들어 MonkeyFit 앱의 운동 이름입니다. 다음으로 구성됩니다.
    • - 앱에서 앱에 대한 고유한 용어를 정의할 수 있습니다. 예를 들어 MonkeyFit 앱의 "바나나리픽" 운동 유형입니다.
    • 발음 - 지정된 구에 대한 간단한 발음 맞춤법으로 Siri에 발음 힌트를 제공합니다. 예를 들어 "ba nana ri fic"입니다.
    • 예제 - 앱에서 지정된 구를 사용하는 예제를 제공합니다. 예를 들어 "MonkeyFit에서 Bananarific 시작"입니다.

자세한 내용은 Apple의 앱 어휘 파일 형식 참조를 참조하세요.

사용자별 어휘

사용자별 어휘는 앱의 개별 사용자에게 고유한 단어 또는 구를 제공합니다. 이러한 용어는 런타임에 기본 앱(앱 확장이 아님)에서 사용자에게 가장 중요한 사용 우선 순위로 정렬된 순서가 지정된 용어 집합으로 제공되며 목록의 시작 부분에 가장 중요한 용어가 있습니다.

위에 표시된 MonkeyChat 앱의 예제를 살펴보세요. MonkeyChat은 사용자의 모든 연락처 목록을 유지하며, 사용자별 어휘를 통해 Siri로 전송됩니다. 또한 사용자가 메시지를 표시한 가장 최근의 연락처 10개 목록을 유지하며 각 사용자에 대한 즐겨찾기 연락처 집합이 있습니다. 이 예제에서 즐겨 찾는 연락처는 사용자별 어휘의 시작 부분에 있어야 하며, 그 다음에는 최근 연락처와 나머지 사용자 연락처가 있어야 합니다.

다음 유형의 정보는 사용자별 어휘에서 지원됩니다.

  • 연락처 이름입니다.
  • 운동 이름.
  • 사진 앨범 이름입니다.
  • 사진 키워드.

앱이 iOS 주소록에 의존하는 경우 이 정보는 이미 Siri에서 사용할 수 있으므로 앱은 아무 작업도 수행할 필요가 없습니다. 앱에 고유한 연락처 데이터베이스가 있는 경우에만 앱에서 연락처 이름을 제공해야 합니다.

어휘를 디자인할 때는 사용자가 알고 관심 있는 필요한 값만 제공합니다. 전화 번호 또는 전자 메일 주소와 같은 정보를 제공하지 않습니다.

또한 사용자별 어휘가 변경되면 앱에서 Siri를 즉시 업데이트해야 합니다. 사용자는 Siri가 iOS 디바이스에 추가된 즉시 정보를 요청하는 데 익숙합니다. 예를 들어 사용자가 앱에 새 연락처를 추가하는 경우 사용자가 저장하는 즉시 해당 정보를 Siri로 보냅니다.

더 중요 한 것은, 그들은 정보의 조각을 삭제 하는 경우 사용자가 화가 될 수 있기 때문에 애플 리 케이 션 Siri 어휘에서 정보를 즉시 삭제 해야 하지만 Siri 여전히 그것을 인식 했다 시간 또는 며칠 후.

Important

사용자가 앱을 다시 설정하거나 로그아웃하는 경우 앱은 Siri에서 모든 사용자별 어휘를 제거해야 합니다.

SiriKit 사용 권한

SiriKit의 마지막 조각은 사용 권한을 중심으로 합니다. iOS의 다른 기능(예: 사진, 카메라 또는 연락처)을 사용하는 것과 마찬가지로 사용자는 앱이 Siri와 통신할 수 있는 명시적 권한을 부여해야 합니다.

앱은 Siri에 제공할 정보를 정의하는 문자열을 제공하고 사용자가 이 액세스 권한을 부여해야 하는 이유에 대한 이유를 제공할 수 있습니다.

Apple은 사용자가 iOS 10으로 업그레이드한 후 처음으로 앱을 열 때 Siri를 사용하도록 사용자에게 권한을 요청해야 한다고 제안합니다. 따라서 사용자는 Siri 통합에 대해 알고 있으며 첫 번째 요청을 하기 전에 사용량을 미리 승인할 수 있습니다.

SiriKit 및 지도

SiriKit은 iOS의 필수적인 부분이며 iOS 10에 추가된 더 큰 의도 프레임워크를 사용합니다. 의도 프레임워크는 시스템의 다른 부분과 공통 작업 및 공유 작업 및 의도를 공유하도록 설계되었습니다.

의도 프레임워크는 Siri 통합을 넘어 앱이 특정 연락처에 대한 기본 전화 통신 또는 메시징 앱이 될 수 있는 연락처 통합과 같은 다른 기능을 제공합니다. 또한 의도는 CallKit와 긴밀한 통합을 제공하여 사용자에게 최상의 VOIP 환경을 제공합니다.

iOS 10의 지도 앱에는 사용자가 지도 UI 내에서 직접 라이드를 예약할 수 있는 승차 공유와 같은 기능이 추가되었습니다. SiriKit은 지도 공통 확장 지점을 제공하므로 Siri와 지도 간에 승차 공유(및 기타) 의도를 공유할 수 있습니다.

즉, 앱이 SiriKit 확장을 채택한 경우 무료로 지도 통합됩니다.

훌륭한 Siri 환경 디자인

Siri에 앱을 통합할 때 유용한 사용자 환경을 디자인하는 것은 훌륭한 앱 사용자 인터페이스를 디자인하는 것과 다릅니다. 사용자가 화면에서 직접 앱과 상호 작용하는 일반적인 상황과 달리 Siri를 사용하는 경우 시각적 인터페이스가 전혀 표시되지 않는 경우가 많습니다. 예를 들어 사용자가 "Hey Siri"대화를 시작한 경우입니다.

Siri가 개발자에게 도움이 되는 방법

Siri와 앱의 상호 작용을 디자인할 때 앱은 대화형 인터페이스빌드합니다. 즉, 컨텍스트는 Siri가 앱을 대신하여 사용자와 갖는 대화에서 파생됩니다.

시각적 참조가 없는 경우 사용자는 머리에 표시되는 정보를 추적해야 합니다. 이 때문에 Siri는 사용자가 수행하려는 작업을 수행하는 데 필요한 최소 정보를 제공합니다.

대화 인터페이스는 대화 중에 사용자와 Siri의 질문과 응답에 의해 형성됩니다. 따라서 Siri가 이 인터페이스를 디자인할 때 어떻게 질문하고 응답하는지 생각해 봐야 합니다.

메시지를 만드는 사용자의 다음 예제를 따르면 Siri는 "보낼 준비가 됐습니까?"라는 질문으로 응답할 수 있습니다. 사용자는 "보내기", "취소" 또는 이 질문과 전혀 관련이 없는 것과 같은 다양한 방법으로 응답할 수 있습니다. 대화가 어떻게 진행되는지에 관계없이 Siri는 앱에 대해 이를 처리하고 사용할 수 있게 되면 관련 정보만 보냅니다.

사용자가 Siri와 대화를 시작할 수 있는 여러 가지 방법이 있습니다.

  • 디바이스를 선택하여 홈 단추를 누릅니다. 이 상황에서 Siri는 더 많은 시각적 인터페이스와 덜 구두 응답을 제공합니다.
  • "안 이봐 시리"라고 말하고 핸즈프리 대화를 시작합니다. 이 상황에서 Siri는 시각적 개체가 적고 언어가 더 많습니다.
  • 특별한 요구 사항이 있는 사용자에 맞게 UI를 조정하는 Bluetooth 지원 보청기 등의 접근성 기능을 사용합니다.
  • 사용자가 주의 산만을 최소한으로 유지하여 운전에 집중해야 하는 자동차 플레이를 사용합니다.

개발자가 Siri를 돕는 방법

Siri와 앱을 통합할 때 개발자는 이 통합을 자주 테스트하고 가능한 한 여러 가지 방법으로 동일한 정보 또는 작업을 요청하여 다양한 요청을 수행하는지 확인해야 합니다.

두 사람이 비슷하다고 생각하지 않으므로 개발자가 Siri 통합을 미세 조정하기 위해 가능한 한 많은 다른 베타 테스터를 얻는 것이 중요합니다. 사용자는 정보를 요청하거나 개발자가 요청한 적이 없는 방식으로 요청을 할 수 있으며, 이 미세 조정은 가장 광범위한 사용자 그룹이 Siri에서 앱을 사용하는 데 유용한 환경을 제공하는 데 도움이 될 수 있습니다.

다양한 상황 및 환경에서 테스트합니다. 가능한 모든 방법으로 Siri와의 대화를 시작하여 이러한 대화가 유동적이고 자연스럽게 유지되도록 합니다. 혼잡한 체육관에서처럼 사용자가 앱을 사용할 가능성이 더 많은 위치에서 테스트합니다.

앱이 Siri가 사용자에게 요청 및 결과를 제대로 나타내는 데 필요한 모든 정보를 제공하는지 확인합니다. 이는 핸즈프리 상황에서 Siri를 사용할 때 특히 그렇습니다.

Siri 디자인 지침

Siri가 앱을 대신하여 사용자와 대화를 나누고 있다는 것을 항상 기억하십시오. 개발자는 이 대화가 가능한 한 유동적이고 자연스럽게 유지된다는 것을 확신할 수 있기를 원합니다.

중요한 대화와 마찬가지로 개발자는 다음을 확인해야 합니다.

  • 앱이 대화에 대해 준비됩니다.
  • 앱이 사용자가 수행하려는 작업을 정확하게 수신 대기합니다.
  • 앱이 적절한 시간에 적절한 질문을 합니다.
  • 앱이 사용자가 검색하는 정보로 요청에 응답합니다.

대화 준비

가장 먼저 기억해야 할 점은 앱의 사용자가 개발자와 똑같지 않을 것이라는 점입니다. 앱을 사용할 때 다른 배경에서 왔거나, 다른 언어를 사용하거나, 특별한 요구 사항이 있을 수 있습니다.

또한 개발자가 앱을 설계하고 빌드했기 때문에 일반적인 사용자가 갖지 못할 앱과 내부 작업 및 기능에 대한 깊고 친밀한 지식을 가지고 있습니다. 따라서 개발자는 일반 사용자와 다르게 Siri 요청을 요청할 수 있습니다.

이 때문에 가능한 한 많은 다른 사람들이 Siri를 통해 앱과 상호 작용하는 것이 중요합니다. 사용자는 개발자가 생각하지 않았거나 개발자가 고려하지 않은 방식으로 Siri를 통해 앱 요청을 할 수 있습니다.

앱이 좋은 수신기인지 확인

개발자는 앱이 좋은 수신기이고 사용자의 기대를 충족하는 대화의 세부 사항을 가져오고 있는지 확인해야 합니다. 그러나 앱이 요청된 작업을 수행하는 데 필요한 모든 정보를 제공하지 않았을 수도 있습니다.

앱에서 이 상황을 처리할 수 있는 몇 가지 방법이 있습니다.

  • 누락 값 에 대한 적절한 기본값 선택 - 예를 들어 승차 공유 앱은 선택하려는 위치를 지정하지 않은 경우 사용자의 현재 위치로 기본 설정될 수 있습니다.
  • 교육된 추측 만들기 - 앱이 사용자에 대해 수집한 특정 정보를 사용하여 앱은 사용자의 연락처 정보에서 누락된 휴대폰 번호를 입력하는 등 누락된 정보를 추측하고 교육할 수 있습니다. 그러나 가장 비싼 옵션 선택 등과 같은 나쁜 놀라움을 피하기 위해주의를 기울여야합니다.
  • 자세한 정보 확인 - 앱에서 Siri가 사용자에게 누락된 값을 묻는 메시지를 표시하도록 할 수 있습니다. 그러나 여기서 핵심은 대화를 단순하고 요점으로 유지하는 것입니다. 요청을 달성하기 위해 몇 가지 질문에 대답해야 하는 경우 사용자는 신속하게 좌절하게 됩니다.
  • 잘못된 정보 처리 정상적으로 - 사용자가 앱이 예상하지 못했거나 지정된 컨텍스트에서 처리할 수 없는 값을 제공할 수 있습니다. 앱이 명확하고 쉽게 수정할 수 있는 방식으로 이 상황을 사용자와 관련시키는지 확인합니다.

앱에 문제가 있는 단일 값이 표시되면 이를 처리하는 기본 방법은 Siri가 사용자에게 확인을 요청하는 것입니다. 예를 들어 "Bobo the Great를 의미했나요?"는 간단한 예 또는 아니요 대답으로 회신할 수 있습니다.

단일 값에 대해 몇 가지 가능한 선택이 정확할 수 있는 상황이 있는 경우 명확성이 기본 처리 방법입니다. 이 상황에서 Siri는 사용자에게 선택할 수 있는 최대 10개의 옵션을 묻는 메시지를 표시할 수 있습니다. 예시:

Who do you want to send the message to?

* Bobo the Great!
* Bobo Jr.
* Little Bobo

여전히 문제가 있는 경우 Siri가 지정된 값에 대해 완전히 새롭고 구체적인 대답을 제공하라는 메시지를 표시합니다.

최종 확인 요청

앱이 실제로 사용자의 요청을 수행하기 위해 작업을 수행하기 전에 Siri는 앱 확장으로 검사 모든 것이 제대로 유지되도록 합니다. 예를 들어, 사용자가 자신의 계정에 요청된 결제를 할 수 있는 충분한 금액이 있나요?

또한 앱은 Siri에 가능한 모든 정보를 제공하여 사용자에게 표시하고 수행될 작업이 기대에 부합하는지 확인해야 합니다.

사용자가 요청을 확인하고 앱이 작업을 수행한 후에는 앱이 모든 결과를 Siri에 다시 제공하여 사용자와 연결할 수 있는지 다시 확인해야 합니다.

요청에 응답

Siri에는 알고 있는 각 Do기본 및 작업에 대한 몇 가지 기본 제공 사용자 인터페이스가 있습니다. 그러나 적절한 경우 앱은 사용자 지정 의도 UI 확장을 제공하여 앱의 브랜딩 및 UI 또는 요청에 있는 것보다 더 많은 정보를 제공하여 사용자 환경을 보강할 수 있습니다.

즉, Siri에 대한 사용자 지정 인터페이스를 디자인할 때 구속을 사용해야 합니다. 일반적으로 사용자는 특정 작업을 가능한 한 빨리 수행하려고 하며 불필요한 정보로 오버로드되지 않습니다.

또한 사용자 지정 UI가 사용자가 가지고 있거나 디바이스를 사용하고 있을 수 있는 다양한 iOS 디바이스 및 방향에서 올바르게 보이고 응답하도록 주의해야 합니다.

적절한 경우 SiriKit API를 사용하여 기본 Siri UI에 이미 있는 중복 정보를 숨깁니다. 그러나 앱이 여전히 Siri에 정보를 제공하므로 핸즈프리 상황에서 구두로 표시할 수 있는지 확인합니다.

Siri가 사용자의 요청을 충족하기 위해 앱을 시작하는 상황이 있을 수 있습니다(예: 사용자가 요청한 사진 표시). 이러한 상황에서는 사용자를 놀라게 하지 마세요. 중간 단계 또는 추가 상호 작용이 필요 없이 예상 정보를 표시합니다. 정보를 표시하거나 사용자가 기대하지 않는 작업을 수행하지 마세요.

디자인 연마

Apple이 대화형 인터페이스의 디자인을 연마하도록 제안하는 몇 가지 단계가 있습니다. 첫째, Siri에 명확하고 간결한 어휘 및 사용 사례 예제를 제공하는 것입니다.

사용자가 앱을 검색하는 방법 중 하나는 Siri와 대화를 시작하고 "무엇을 할 수 있습니까?" 하고 묻는 것입니다. Siri는 개발자의 앱과 파일을 통해 plist 제공한 예제 영웅 사용 사례를 포함하여 할 수 있는 여러 가지 작업을 보여 줍니다.

좋은 예제 사용 사례를 작성하는 방법:

  • 예제에 앱 이름이 포함되어 있는지 확인합니다.
  • 예제를 짧고 지점으로 유지합니다.
  • 앱에서 지원하는 각 의도에 대한 여러 예제를 제공합니다.
  • 앱의 가장 일반적인 사용 사례에 따라 의도와 해당 내 예제의 우선 순위를 지정합니다.
  • 앱이 지역화된 예제를 제공하는지 확인합니다.
  • 지정된 각 예제가 앱 내에서 예상대로 작동하는지 확인합니다.
  • 예제에서 Siri의 주소를 지정하지 않도록 하려면 "Siri를 사용하세요..."와 같은 텍스트를 포함하지 마세요.
  • "제발" 또는 "감사합니다"와 같은 불필요한 즐거움을 피하십시오.

적절한 시간을 내어 앱이 Siri가 사용자를 대신하여 사용자와 갖는 대화를 형성할 수 있는 방법을 탐색하고 실험해 보세요. 앱과의 상호 작용 및 기대가 시간이 지남에 따라 변경될 수 있으므로 프로세스 전체에서 일반적인 사용자와 대화해야 합니다.

항상 다른 상황에서 응용 프로그램을 테스트하고 Siri와 대화를 호출하는 다른 방법의 모든 기억. 사용자가 사무실과 책상에서 멀리 떨어진 앱을 사용할 수 있는 실제 위치에서 테스트합니다.

Siri(앱을 대신하여)와의 대화가 유동적이고 자연스럽고 "옳은 느낌"이 되도록 노력합니다.

요약

이 문서에서는 SiriKit를 사용하는 데 필요한 주요 개념을 다루었으며, Xamarin.iOS 앱과 상호 작용하여 Siri 및 iOS 디바이스의 지도 앱을 사용하여 사용자가 액세스할 수 있는 서비스를 제공할 수 있음을 보여 줍니다.