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의 종류
- NSUserActivity
- 앱의 상태를 나타내는 간단한 방법
- Spotlight, Handoff에서 사용된다.
- Intents
- 앱이 수행할 수 있는 작업 유형을 세부적으로 나타내는 방법
- 앱이 Siri와 통합할 때 사용할 수 있는 기능들이 포함되어있음.
→ 노출될 모든 기능에 대해 NSUserActivity / Intents로 제공해야할지 결정해야함.
Shortcuts API 결정 방법
- NSUserActivity
- “앱”에서 어떤 간단한 행동을 수행하는 바로가기를 만들 때
- Spotlight 검색에서 사용하고자 할 때
- Handoff에서 바로가기를 띄울 때
- Intents
- 앱을 실행하지 않고, 인라인으로 실행 가능하다.
- 맞춤형 음성 응답, 맞춤형 UI를 포함할 때
- 세분화된 매개변수 예측을 포함해야할 때
Shortcuts 적용 방법
- Shortcut API를 채택한다.
- 바로가기로 표시할 항목을 결정한다.
- Siri가 앱이 어떤 활동을 할 수 있는지 알 수 있도록 설정해줘야한다.
- 새로운 단축어를 할당한다.
- runtime시 시스템에 알려야한다. (siri가 사용자에게 제안할 시간 및 장소를 파악하기 위해서)
- Shortcut을 처리한다.
- API 채택
- API의 종류
- NSUserActivity
- 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)
- Spotlight 인덱스 사용 & relationUniqueIdentifier 설정한 경우
- Spotlignt 컨텐츠를 삭제한다.
- → ContentAttributeSet의 relatedUniqueIdentifier를 일치하는 식별자로 설정한다.
- Spotlight 인덱스를 사용하지 않는 경우
- NSUserActivity에서 영구 식별자 속성을 사용한다.
- → 사용자 활동을 추적하고, 적절한 시간에 삭제할 수 있도록 설정할 수 있는 속성
Intent 삭제 방법
- 식별자 또는 그룹 식별자를 설정한다.
- → 삭제하려는 식별자의 배열로 delete를 호출한다.
- deleteAll을 실행한다.
미디어 재생을 위한 바로가기 반드는 방법
INPlayMediaIntent
- 오디오, 비디오 컨텐츠 재생을 위한 shortcut donate 가능
- 확장프로그램에서 해당 인텐트를 처리할 때, 백그라운드에서 앱이 처리할 수 있도록 선택할 수 있따.
- → 백그라운드에서 재생 가능
- 검색 및 잠금화면 외에도 헤드폰을 연결할 때 잠금화면의 재생 컨트롤에서도 제안된다.
- HomePod과 찰떡!
INUpcomingMedia API
Summary
- 단축어 사용시 앱에서 강력하고 새로운 경험을 할 수 있다.
- 다양한 장소에서 앱을 노출하여 사용자 참여를 유도하는 새로운 방법이다.
- 잠금화면, watch, Siri watch face, Siri 자체를 검색하기만하면 된다.
- NSUserActivity를 사용하여 바로가기를 채택할 수 있다.
- → 앱의 컨텐츠를 노출할 수 있는 정말 쉬운 방법
- Intent 사용→ 시간이나 여러 요소들을 고려하여 제안할 수 있다.
- → 시스템에 더 깊은 통합을 제공하고, 사용자에게 새로운 경험을 제공할 수 있다.