ios dev kangwook.

iOS) User Activity 본문

iOS

iOS) User Activity

kangwook 2022. 12. 5. 10:02

NSUserActivity는 특정 시점의 앱 상태를 나타내는 표현

NSUserActivity객체는 앱의 상태를 캡쳐하여 나중에 사용하도록 배치하는 방법을 제공

시스템이 앱을 실행하고, activity 객체를 사용할 수 있게 되면 앱은 해당 객체를 사용하여 자기 자신을 적절한 상태로 복원할 수 있음

예) 사용자가 웹페이지를 열거나, 앱이 백그라운드로 이동하거나, 앱에서 다른 중요한 작업을 수행할 때

  • user activity 객체를 만들 수 있음
  • user activity 객체는 앱의 모든 작업을 추적할 수 있는 방법이 아니기 때문에 작은 편집이나 사소한 변경 작업에는 사용하지 않아야 함
  • 사용자가 나중에 또는 다른 디바이스에서 계속 진행할 수 있는 중요한 체크 포인트에 사용

Supporting Handoff

Handoff는 사용자가 activity를 시작하고 다른 activity를 계속할 수 있게 해주는 기술

iCloud를 기반으로 하기 때문에 각각 같은 계정으로 로그인 되어있어야 함

예를 들어 iPad에서 비디오를 보고 있는 사용자는 Mac에서 같은 지점의 비디오를 계속 볼 수 있음

Handoff를 지원하려면 isEligibleForHandoff 프로퍼티를 true로 설정해야함(default값은 true)

 

Handoff 데이터 발생시키기

// WebViewController.swift
let kUserActivityType = "com.handoff.testapp"
 
func startHandoff(url: URL) {
    let userActivity = NSUserActivity(activityType: kUserActivityType)
    userActivity.webpageURL = url
    self.userActivity = userActivity
    self.userActivity?.becomeCurrent()
}

Handoff 데이터 받기

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping([UIUserActivityRestoring]?) -> Void) -> Bool {
    if userActivity.activityType == kUserActivityType {
        if let webViewController = self.window.rootViewController as? WebViewController {
            webViewController.loadUrl(userActivity.webpageURL)
        }
    }
    return true
}

Supporting Improved Search Results

NSUserActivity객체에 나중에 사용자가 검색하려는 정보가 들어있게 하려면, isEligibleForSearch프로퍼티를 true설정(default값은 false)

Spotlight는 user activity객체를 인덱싱하고 이후의 디바이스 검색시 이를 고려

예를 들어 사용자가 앱에서 특정 레스토랑에 대한 정보를 본 경우, 해당 user activity를 검색할 수 있음 → Spotlight를 사용하여 레스토랑을 검색하면 user activity에서 얻은 결과가 포함 될 수 있음

앱은 검색 결과에 사용하는 모든 activity객체에 대해 strong reference를 유지해야함

 

참조

'iOS' 카테고리의 다른 글

iOS) Alamofire 4 -> Alamofire 5 Migration  (0) 2024.04.02
iOS) Privacy Manifest(PrivacyInfo.xcprivacy) 작성기  (0) 2024.04.01
iOS) Documentation - Jazzy (2)  (0) 2022.11.29
iOS) Documentation - Jazzy (1)  (0) 2022.11.29
iOS) Documentation - DocC (1)  (0) 2022.11.22
Comments