LoginSignup
15
15

More than 5 years have passed since last update.

Xcode7GMから使える3DTouchのショートカット概要まとめ

Last updated at Posted at 2015-09-15

はじめに

Xcode7 GM版からUIApplicationShortcutItemが使えるようになりました。

スクリーンショット_2015-09-15_23_51_54.png
こんなやつのことです。(引用:Apple公式サイト

iPhone6s/6sPlusでは3DTouchという感圧タッチができるようになっています。
その仕組みを使ったショートカットです。

Quick Actionとは

このショートカット機能のことをAppleはQuick Actionと呼んでいます。
リファレンスにはこう書いてあります。

UIApplicationShortcutItem Class Reference

On a device that supports 3D Touch, a user invokes the quick action by pressing your app's icon on the Home screen and then selecting the quick action’s title. Your app delegate receives and handles the quick action.

3D Touchをサポートしてる端末だと、ホーム画面でアプリアイコンをプレスするとQuick Actionが起動するよ。Quick Actionのタイトルが選択されたらAppDelegateでハンドリングできるよ。

概要はこんなところですね。
絵を見れば一発で想像出来ると思います。

Quick Actionは2種類

リファレンス(UIApplicationShortcutItem Class Reference)の
Dynamic vs. Static Quick Actions項目についてです。

動的クイックアクション(Dynamic Quick Action)

Define Home screen dynamic quick actions using this class. Your code creates dynamic quick actions, and registers them with your app object, at runtime.

Dynamicの場合はコード上でItemを登録していきます。
つまりインストールだけしてアプリを起動しなければ
Quick Actionは出現しないということではないかと思います。
at runtime、実行時にオブジェクトが登録されると書いてあります。

静的クイックアクション(Static Quick Action)

Define Home screen static quick actions in the UIApplicationShortcutItems array in your Xcode project’s Info.plist file, as described in the iOS Keys chapter in Information Property List Key Reference. The system registers your static quick actions when your app is installed.

Staticの場合はInfo.plistに記述します。
つまりインストールした時からQuick Actionが使えると書いてあります。
Info.plistの記述に関してはコレを見てねとも書いてありますね。

AppDelegateでQuick Actionをハンドリング

選択されたQuick Actionをハンドリングするには
UIApplicationDelegate Protocolでメソッドを実装します。

UIApplicationDelegate(Swift)
optional func application(_ application: UIApplication,
performActionForShortcutItem shortcutItem: UIApplicationShortcutItem,
    completionHandler completionHandler: (Bool) -> Void)
UIApplicationDelegate(obj-c)
- (void)application:(UIApplication *)application
performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem
  completionHandler:(void (^)(BOOL succeeded))completionHandler

このメソッドを実装することで
Quick Action(UIApplicationShortcutItem)をハンドリングして
アプリの機能へ遷移させるなど出来るようです。
UIApplicationDelegate Protocol Reference

Simulatorは3DTouchに非対応

残念ながらiPhone6s/6sPlusのSimulatorでも3DTouchが出来ないようです。

With Xcode 7.0 you must develop on a device that supports 3D Touch. Simulator in Xcode 7.0 does not support 3D Touch.

Adopting 3D Touch on iPhone

端末を買えってことなんですよね。買いますよ。買いますとも。

おわりに

ある程度実装ができたらコードを載せようと思っていましたが、
端末が発売されるまで確認が出来ないみたいなので、とりあえず概要だけ投稿しました。

翻訳間違ってるぞ、認識間違ってるぞなどありましたらコメントください。

関連リファレンス一覧

UIApplicationShortcutItem Class Reference

Information Property List Key Reference(UIApplicationShortcutItems)

UIApplicationDelegate Protocol Reference

Adopting 3D Touch on iPhone

ApplicationShortcuts: Using UIApplicationShortcutItem

15
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15