ホーム画面のアプリアイコンを3D Touchすると実行されるクイックアクションの実装方法です。
Info.plistの変更
UIApplicationShortcutItemsを追加します。
例
Info.plist
<key>UIApplicationShortcutItems</key> <array> <dict> <key>UIApplicationShortcutItemIconType</key> <string>UIApplicationShortcutIconTypeShare</string> <key>UIApplicationShortcutItemSubtitle</key> <string>shortcutSubtitle</string> <key>UIApplicationShortcutItemTitle</key> <string>shortcutTitle</string> <key>UIApplicationShortcutItemType</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER).Second</string> <key>UIApplicationShortcutItemUserInfo</key> <dict> <key>secondShortcutKey1</key> <string>secondShortcutValue1</string> </dict> </dict> </array>
仕様
詳しい仕様はこちらのUIApplicationShortcutItemsを参照 https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW36
必須事項
必須なのは、クイックアクションの種類を表すStringであるUIApplicationShortcutItemType と 表示するクイックアクション名を表すUIApplicationShortcutItemTitle です。
アイコンの設定
システムの用意しているアイコンを利用する場合
UIApplicationShortcutItemIconTypeをkeyにして、UIApplicationShortcutItonTypeを指定します UIApplicationShortcutIcon Class Reference
- UIApplicationShortcutIconType
enum UIApplicationShortcutIconType : Int { case Compose case Play case Pause case Add case Location case Search case Share case Prohibit case Contact case Home case MarkLocation case Favorite case Love case Cloud case Invitation case Confirmation case Mail case Message case Date case Time case CapturePhoto case CaptureVideo case Task case TaskCompleted case Alarm case Bookmark case Shuffle case Audio case Update }
- 例
<key>UIApplicationShortcutItemIconType</key> <string>UIApplicationShortcutIconTypeShare</string>
独自アイコンを使う場合
UIApplicationShortcutItemIconFileをkeyにして、ファイル名を指定
- 画像の条件
- square, single color, and 35x35 point
AppDelegateの変更
クイックアクションが実行されるとAppDelegateのperformActionForShortcutItemが呼ばれます。 shortcutItemを参照すれば、どのクイックアクションが実行されたか判別できるので、それによって対応する処理を実装すればよいです。
func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: Bool -> Void) { }
動的にクイックアクションを追加する方法
Info.plistに書く静的にクイックアクションを追加する方法とは別に、アプリ起動後にアプリのプログラムから動的にクイックアクションを追加することもできます
やることとしては、UIApplicationShortCutItemのインスタンスを生成して、UIApplicationのshortcutItemsにセットすればよいです。
if let shortcutItems = application.shortcutItems where shortcutItems.isEmpty { // Construct the items. let shortcut3 = UIMutableApplicationShortcutItem(type: "hoge", localizedTitle: "Play", localizedSubtitle: "Will Play an item", icon: UIApplicationShortcutIcon(type: .Play), userInfo: [ "": UIApplicationShortcutIconType.Play.rawValue ] ) application.shortcutItems = [shortcut3] }