Home Screen Quick Actions(3D Touch)でアプリを開く

はじめに

Home Screen Quick Actionsを使う機会があったので調べてみました。

難しい設定が色々必要なのかと思っていたんですがだいぶシンプルに実装することができます

コード

独自のUIMutableApplicationShortcutItemを追加する

独自のアイコンを設定したい場合以下のコードで追加することができます。

場所はどこでも良いっぽいのでAppDelegateなどに記載しておくのが良いのかなと思います。
これだけでアイコンを3D touchした時に表示されるようになります

let checkinShortcut = UIMutableApplicationShortcutItem(type: "hogehoge",
                                                       localizedTitle: "ネギだよ〜",
                                                       localizedSubtitle: "",
                                                       icon: UIApplicationShortcutIcon(templateImageName: "negi"),
                                                       userInfo: nil)

UIApplication.shared.shortcutItems = [checkinShortcut]

注意点

昔はできたっぽいんですが、現在は画像の色がすべて黒に塗り潰されてしまうようです。標準のアプリで色々試してみたのですが、設定されたアイコン画像はすべて黒になっているようです。

画像はここからお借りしました。

イベントをハンドリングする

3D TouchでQuick Actionsを使いアプリを開いた時には以下のメソッドにイベントが飛んできます。何も処理を記載していない場合はそのままアプリが開きます。

func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void)

typeはUIMutableApplicationShortcutItemを作成した時に指定したものです。

func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) {
    if shortcutItem.type == "hogehoge" {
        print("呼ばれたよ〜")
    }
}

参考文献

3D Touch の Home Screen Quick Actions に対応する

Swiftで3D Touch