https://developer.apple.com/documentation/foundation/nsuseractivity
"A representation of the state of your app at a moment in time."
특정 시점에 앱의 상태를 나타냅니다.
class NSUserActivity : NSObject
NSUserActivity
객체는 앱의 상태를 캡처할 수 있는 가벼운 방법을 제공하고, 이후에 이 상태를 사용할 수 있도록 해줍니다. 앱 컨텐트를 보는 것, 문서 편집, 웹 페이지를 보는 것, 비디오를 시청하는 것과 같은 사용자가 하고 있었던 행동에 대한 정보를 캡처하려면 이 객체를 생성하시기 바랍니다. 시스템이 앱을 launch할 때 이 객체가 사용이 가능하다면, 앱은 적합한 상태로 복구하기 위해 해당 객체에 있는 정보를 사용합니다. 스팟라잇 역히 사용자의 검색 결과를 향상시키기 위해 이 객체를 사용합니다. 다른 기기에서도 행동을 계속할 수 있도록 허용하려면 Implementing Handoff in Your App을 살펴보시기 바랍니다.
https://developer.apple.com/documentation/foundation/task_management/implementing_handoff_in_your_app
https://velog.io/@panther222128/Implementing-Handoff-in-Your-App
어떤 이유에서든 SiriKit
이 앱을 launch할 필요가 있다면, 사용자 활동 객체를 생성하고 상호작용 속성에 적합한 INInteraction
객체를 할당합니다. 앱은 스스로 설정하기 위해 상호작용 정보를 사용할 수 있고 SiriKit
에 의해 시작된 상호작용과 관련이 있는 정보를 표시합니다. 앱에 전달하길 원하는 추가적인 데이터를 포함하는 커스텀 사용자 활동 객체와 함께 SiriKit
을 제공할 수도 있습니다.
iOS 15 및 이후 버전에서 사용자는 시리에게 "share this"라고 요청함으로써 보고 있었던 컨텐트를 공유할 수 있습니다. Mac Catalyst로 설계된 앱은 툴바에 있는 NSSharingServicePickerToolbarItem
을 통해 같은 기능을 제공합니다. 공유 가능한 컨텐트를 제공하기 위해 activityItemsConfiguration
혹은 activityItemsConfigurationSource
를 사용할 수도 있습니다. iOS에서 위 두 가지 속성이 nil
이면, 시리는 앱이 갖는 현재 사용자 활동의 webpageURL
속성을 대체값으로 사용합니다.
macOS와 iOS에 있는 퀵 노트는 NSUserActivity
로 표현되는 모든 앱 컨텐트를 연결시킬 수 있습니다. 링크로써 나타나려면 컨텐트는 앱의 현재 활동이어야 하고, 아래 중 적어도 한 가지 아이덴티파이어를 제공해야 합니다.
webpageURL
http: URL, 사용자가 동일한 컨텐트에 들어갈 때마다 일관적인 표준 형식입니다.
persistentIdentifier
이 도메인에 있는 컨텐트를 확인하기 위한 스트링입니다. 이 아이덴티파이어는 여러 기기에 걸쳐 동일한 컨텐트를 확인해야 합니다.
targetContentIdentifier
이 도메인에 있는 컨텐트를 확인하는 스트링입니다. 또한, 앱의 여러 씬을 명확하게 구분할 수 있도록 해줍니다. 아이덴티파이어는 여러 기기에 걸쳐 같은 컨텐트를 확인해야 합니다.
퀵 노트가 잘 작동하도록 하려면 컨텐트는 아래 가이드라인을 고수해야 합니다.
becomeCurrent()
, resignCurrent()
를 사용해서 앱의 현재 활동이 최신 상태일 수 있도록 유지합니다.사용자가 이후에 검색하길 원하는 정보를 포함하고 있는 NSUserActivity
객체의 경우 isEligibleForSearch
속성을 true
로 설정하시기 바랍니다. 검색이 가능하도록 하는 경우 스팟라잇은 사용자 활동 객체를 인덱싱하고, 이후 기기에서 검색이 이뤄지는 동안 사용자 활동 객체들을 고려합니다. 예를 들어 사용자가 앱에서 특정 레스토랑에 대한 정보를 본 경우 이에 상응하는 사용자 활동 객체 검색을 지원할 수 있습니다. 스팟라잇을 사용해 레스토랑에 대한 이후 검색은 사용자 활동 객체로부터 얻은 결과를 포함할 수 있습니다.
기기에서 검색하는 것과 더불어 글로벌 스팟라잇 검색 엔진을 사용해 앱에서 접근된 URL을 제공할 수 있습니다. URL을 공유하는 것은 스팟라잇이 사용자를 위해 검색 결과를 향상시킬 수 있도록 합니다. URL을 제공하려면 활동 객체의 속성인 webpageURL
속성에 URL을 입력하고 isEligibleForPublicIndexing
속성를 true
로 설정해야 합니다.
Important
검색 결과를 활용하기 위한 모든 활동 객체들에 강한 참조를 유지해야만 합니다.
앱 데이터의 일반적 목적 인덱싱 메커니즘이 아닌 사용자로부터 초기화된 활동들을 기록하기 위해 사용자 활동 객체를 사용해야 합니다. 사용자가 터치한 컨텐트뿐만 아니라 앱의 컨텐트 전부를 인덱싱하려면, Core Spotlight
프레임워크의 API를 사용하시기 바랍니다.
핵심 사용자 상호작용을 확인하고 나중에 복구시키기 위한 정보를 포함시킵니다.
https://developer.apple.com/documentation/foundation/nsuseractivity/creating_a_user_activity_object
https://velog.io/@panther222128/Creating-a-User-Activity-Object
사용자 활동을 직접 생성, 전송, 수신합니다.
https://developer.apple.com/documentation/foundation/task_management/implementing_handoff_in_your_app
https://velog.io/@panther222128/Implementing-Handoff-in-Your-App