せっかくiPhone6sにしてみたので、3D Touch shortcutsを実装してみた。
Staticは案外簡単。
Dynamicはいずれ。
info.plistにリストを作成
アプリの中にあるInfo.plistをクリックし、適当なところで右クリック→Add Row。
Application Categoryが追加されるので、KeyのApplication CategoryをUIApplicationShortcutItemsに変え、TypeをArrayに変える。
UIApplicationShortcutItemsの右にある+ボタンをクリックしてItem0を追加し、TypeをDictionaryに変える。
Item0の右にある+ボタンをクリックしてNew itemを追加し、KeyをUIApplicationShortcutItemType、Valueを $(PRODUCT_BUNDLE_IDENTIFIER).Firstにでもしよう。
この値はタップしたときに呼ばれる値なので、識別できれば何でもよい。
同様にしてUIApplicationShortcutItemTitleも作成。
これは3DTouchでアプリのアイコンを押し込んだときに表示される文になる。
検索やメニューの名前など、好きな名前を入れよう。
今回はVCSecondにした。
これでコンパイルしてみよう。
一度アプリを終了させ、アプリのアイコンをぐいっと押し込んでみると・・・
メニューが出た。
ただ、今の状態でメニューをタップしてもアプリが普通に起動するだけ。
AppDelegate.mにコードを追加
AppDelegateに3D Touchでメニューをタップ時に呼ばれるコードを追加。
このメソッドでショートカットメニューがタップされたときの情報が取得可能。
shortcutItemから情報を取り出す。
shortcutItem.typeから変数touchに代入してるが、中の値はUIApplicationShortcutItemTypeから取り出され、”アプリのバンドル名”.Firstになる。
info.plistのプロパティ
Item内のプロパティUIApplicationShortcutItemTitle、UIApplicationShortcutItemTitleは必須だが、この2つ以外にも、
UIApplicationShortcutItemSubtitleでサブタイトルの表示、
UIApplicationShortcutItemIconTypeで定型アイコンの表示、
UIApplicationShortcutItemIconFileでカスタムアイコンの表示、
UIApplicationShortcutItemUserInfoでDictionaryのデータの引き渡しが可能。
適宜付け加えてみてください。
サンプルソース
説明だけじゃわかりにくいので、簡単なサンプルをGitHubにアップロードしました。
中のinfo.plistとAppDelegate.mのソースコードを見ればわかると思います。