[iOS] 홈 스크린 퀵 액션 추가하기

3D Touch를 지원하는 디바이스에서 홈 화면의 퀵 액션을 사용하여 앱의 자주 사용하는 기능을 액세스할 수 있다.

퀵 액션은 앱을 빌드 할 때 정적으로 또는 런타임에 동적으로 정의할 수 있다.

개인적으로는 좋아하는 기능인데 앞으로의 전망은 좋지 않다(iPhone XR은 기능이 빠졌으니)…

정적 퀵 액션 정의

앱에 사용할 퀵 액션이 변경되지 않는다면 Info.plist 파일에 정적 퀵 액션으로 정의하면 된다.

Info.plist 파일에 UIApplicationShortcutItems 키를 사용하여 정의하면 된다.

<key>UIApplicationShortcutItems</key>
<array>
	<dict>
		<key>UIApplicationShortcutItemType</key>
		<string>static</string>
		<key>UIApplicationShortcutItemTitle</key>
		<string>Static Quick Action</string>
	</dict>
</array>

홈 화면의 퀵 액션을 설정할 수 있는 Info.plist 파일의 다른 키 값은 Information Property List Key Reference에서 확인할 수 있다.

동적 퀵 액션 정의

UIApplication 인스턴스의 shortcutItems 속성을 UIApplicationShortcutItem 객체의 배열로 설정하여 홈 화면의 퀵 액션을 동적으로 구성할 수 있다.

홈 화면의 동적 퀵 액션은 언제든지 설정할 수 있다. 여기서는 applicationWillResignActive(_:) 메소드에서 설정한다.

func applicationWillResignActive(_ application: UIApplication) {
    application.shortcutItems = [
        UIApplicationShortcutItem(type: "dynamic", localizedTitle: "Dynamic Quick Action")
    ]
}

시스템이 화면에 맞는 항목 수만 표시하기 때문에 임의로 항목의 수를 제한할 필요는 없다.

퀵 액션에 응답하기

사용자가 홈 화면의 퀵 액션을 선택하면 다음 중 한 가지 방법으로 전달 된다.

  • 앱이 실행중이지 않으면 application(_:didFinishLaunchingWithOptions:) 메소드의 launchOptions 파라미터로 전달 된다.
  • 앱이 실행중이면 application(_:performActionFor:completionHandler:) 메소드가 호출된다.

참조

Published by 진재명

iOS 개발자