Swift/WWDC

[WWDC 18] Introduction to siri Shortcuts

내일은개발천재🎵 2022. 10. 13. 23:38

Shorcuts이란?

  • 바로가기 노출
    • 앱 뿐만 아니라, 앱 내부 작업을 표시한다.
    • Watch에서도 제공한다.
    • 사용자 지정 UI를 볼 수 있다.
    • 특정 시간에 해당 제안을 노출할 수 있다.
  • 사용자 지정 문구 제안
    • 사용자가 특정 단어를 이야기하면, 모든 iOS에서 해당 작업을 진행할 수 있음
    • ex) “Coffee time”이라는 단어를 이야기하면, 특정 작업을 수행함
  • 단축어 앱
    • 자신만의 바로가기를 만드는 것
    • Siri가 만들어주는 것이 아니라, 사용자가 직접!

앱에 Shortcuts을 적용하는 방법

Shortcuts 설계 시 준수사항

💡 Shortcuts으로 사용하기 적절한 기능인지 판단하는 부분
  • 앱의 주요 기능을 수행할 수 있어야한다.
    • 사용자가 앱으로 하고싶었던 행동들을 더 빠르게 수행할 수 있도록
    • 앱을 여는 것과 동일한 작업을 수행하는 바로가기는 적절하지 않다.’
  • 해당 단축키는 사용자에게 지속적으로 관심을 가져야한다.
    • 사용자가 여러버 수행하고 싶은 기능이 맞는지 확인이 필요하다.
  • 언제든 실행가능한 바로가기만 노출해야한다.
    • 사용자가 특정 준비가 필요한 작업은 사용할 수 없다. (확인이 불가능하므로)

Shortcuts API의 종류

  1. NSUserActivity
    • 앱의 상태를 나타내는 간단한 방법
    • Spotlight, Handoff에서 사용된다.
  2. Intents
    • 앱이 수행할 수 있는 작업 유형을 세부적으로 나타내는 방법
    • 앱이 Siri와 통합할 때 사용할 수 있는 기능들이 포함되어있음.

→ 노출될 모든 기능에 대해 NSUserActivity / Intents로 제공해야할지 결정해야함.


Shortcuts API 결정 방법

  1. NSUserActivity
    • “앱”에서 어떤 간단한 행동을 수행하는 바로가기를 만들 때
    • Spotlight 검색에서 사용하고자 할 때
    • Handoff에서 바로가기를 띄울 때
  2. Intents
    • 앱을 실행하지 않고, 인라인으로 실행 가능하다.
    • 맞춤형 음성 응답, 맞춤형 UI를 포함할 때
    • 세분화된 매개변수 예측을 포함해야할 때

Shortcuts 적용 방법

  1. Shortcut API를 채택한다.
    • 바로가기로 표시할 항목을 결정한다.
    • Siri가 앱이 어떤 활동을 할 수 있는지 알 수 있도록 설정해줘야한다.
    • 새로운 단축어를 할당한다.
    • runtime시 시스템에 알려야한다. (siri가 사용자에게 제안할 시간 및 장소를 파악하기 위해서)
    • Shortcut을 처리한다.
  2. API 채택
    • API의 종류
      1. NSUserActivity
      2. Intent
    API 별 사용 방법

영상 Point!!

10:55 custom Intent, parameters, customType

15:00 target membership section

17:00 백그라운드 실행, siri inline 실행, 사용자 음성 응답을 위한 설정

20:00 Xcode 실 데모

35:30 required user info keys

36:30 shortcut types

41:50 shortcut testing


suggestion의 최적화 방법

How is a shortcut suggested

  • donate할 때마다, 시스템이 시간, 위치, 기타 신호를 확인한다.
    • 시간과 요일을 중요하게 판단한다
    • 전반적인 위치를 보고 사용자에게 중요한 위치인지 판단함.
  • requiredUserInfoKeys
    • Scroll position 또는 사용자의 입력 값이 일관성이 없으면 규칙을 찾지 못하는 경우 사용한다.
    • 사용자 활동의 속성이다.
    • 사용자 활동이 나타내는 상태로 앱을 복원하는데 필요한 최소한의 정보를 나타낸다.
    • 제안을 위한 패턴을 찾을 때, 비교할 사용자 사전의 키를 결정할 때 사용한다.
  • shortcut type
    • 제안에 유효한 매개변수 조합을 정의한다.
    • requiredUserInfoKeys와 비슷. 하나의 집합을 갖는 대신, 여러 개를 정의할 수 있다.

좋은 donation

  • 반복될 가능성이 있는 것
    • 자주 볼 수 있는 컨텐츠
    • 사용자가 주기적으로 행하는 작업들
    • 모든 donation에서 일관적인 것
  • timestamp가 포함되지 않은 것
    • 상대 시간은 예외
    • 오늘 미팅은 중요하지만, 내일 미팅은 중요하지 않는 것을 생각하자.
  • 앱 내부에 사용자 작업이 여러개 포함되더라도, 정확히 한 번만 donate해야한다.
  • 의도에 맞는 올바를 매개변수를 전달해야한다.

Custom Intents

  • 매개변수 값이 제한될 때마다 열거형을 사용한다.
    • 더 명확하고 나은 Suggestion 제목을 만들 수 있다.
  • 사용자 정의 유형 → 식별자와 표시 문자열을 결합함

개인 정보 보호 고려사항

UX 고려

  • 사용자의 기대 = 앱 내에서 삭제하면, 영구적으로 삭제된다.
    • 삭제된 항목에 대한 제안이 표시되면 안 된다.
    • 사용자가 삭제할 수 있는 것을 donation하는 경우, 적절한 시기에 삭제해야한다.

NSUserActivity 삭제 방법 (44:00)

  1. Spotlight 인덱스 사용 & relationUniqueIdentifier 설정한 경우
    • Spotlignt 컨텐츠를 삭제한다.
    • → ContentAttributeSet의 relatedUniqueIdentifier를 일치하는 식별자로 설정한다.
  2. Spotlight 인덱스를 사용하지 않는 경우
    • NSUserActivity에서 영구 식별자 속성을 사용한다.
    • → 사용자 활동을 추적하고, 적절한 시간에 삭제할 수 있도록 설정할 수 있는 속성

Intent 삭제 방법

  1. 식별자 또는 그룹 식별자를 설정한다.
  2. → 삭제하려는 식별자의 배열로 delete를 호출한다.
  3. deleteAll을 실행한다.

미디어 재생을 위한 바로가기 반드는 방법

INPlayMediaIntent

  • 오디오, 비디오 컨텐츠 재생을 위한 shortcut donate 가능
    • 확장프로그램에서 해당 인텐트를 처리할 때, 백그라운드에서 앱이 처리할 수 있도록 선택할 수 있따.
    • → 백그라운드에서 재생 가능
  • 검색 및 잠금화면 외에도 헤드폰을 연결할 때 잠금화면의 재생 컨트롤에서도 제안된다.
  • HomePod과 찰떡!

INUpcomingMedia API


Summary

  • 단축어 사용시 앱에서 강력하고 새로운 경험을 할 수 있다.
  • 다양한 장소에서 앱을 노출하여 사용자 참여를 유도하는 새로운 방법이다.
  • 잠금화면, watch, Siri watch face, Siri 자체를 검색하기만하면 된다.
  • NSUserActivity를 사용하여 바로가기를 채택할 수 있다.
  • → 앱의 컨텐츠를 노출할 수 있는 정말 쉬운 방법
  • Intent 사용→ 시간이나 여러 요소들을 고려하여 제안할 수 있다.
  • → 시스템에 더 깊은 통합을 제공하고, 사용자에게 새로운 경험을 제공할 수 있다.