BASEプロダクトチームブログ

ネットショップ作成サービス「BASE ( https://thebase.in )」、ショッピングアプリ「BASE ( https://thebase.in/sp )」のプロダクトチームによるブログです。

Try! Swift 2017 - 1日目「アプリを新次元に導く3D Touch」

こんにちは、iOSエンジニアの遠藤(秀)です。 3/2(木)〜 3/4(土)の3日間に渡って開催された世界的なイベント「Try! Swift 2017」に参加してきました。

1日目のセッション「アプリを新次元に導く3D Touch」についてまとめてみました。

セッション概要

この講演では3DタッチAPIで何ができるか?そして3DタッチAPIを使うベストプラクティスを学びます。元々どのような機能があり、iOS10でどのようなカスタマイズが加えられたかを見ていきます。クールな事例を通してあなたのアプリを3Dタッチに対応させる方法を探っていきましょう。



キーワード 、まとめ

・Home Screen Quick Actions(Static / Dynamic)
・Widget (Today Extension)
・Peek & Pop(UIPreviewInteractions)
・iOS 10 Notifications(Notification Content Extension)


Home Screen Quick Actions(Static / Dynamic)

3D Touchには、静的なStatic Actionsと、動的に動作を割り当てるDynamic Actionsの2種類があります。

BASEアプリでは、Staticアクションを実装しています。Info.plistへの追加と、ApplicationDelegateにメソッドの追加だけで手軽に実装することができます。

f:id:base_hideo:20170307143326p:plain


Info.plistに、UIApplicationShortcutItemTypeキーにアクション種別を表す文字列を、 UIApplicationShortcutItemTitleキーにアクション種別を表す文字列の設定が必須となります。

f:id:base_hideo:20170307143352p:plain

その他の設定値についての詳細はこちら。 https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW36


メニューが選択され、アプリが起動すると application:performActionForShortcutItem:completionHandler: メソッドが呼ばれます。

func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: Bool -> Void) {
    let handled = handleShortCutItem(shortcutItem)
    completionHandler(succeeded)
}



Widget (Today Extension)

iOS 10以降で、NCWidgetDisplayModeが追加され、Compact / Expandedの2つのモードがあります。

上記の説明だけで、あっさりとしたものでした。機能自体はiOS8から導入されていて、通知センターからアプリケーションへと送客できるので、流入経路を増やす意味でも有効ではないかと思います。

実装方法については、こちらで詳しく紹介されています。
https://techblog.yahoo.co.jp/ios/today-widget/

他にも流入経路を増やす方法として、2日目のセッション「 iOSにおけるDocument IndexingとApp Search」で、ECアプリの商品詳細画面に飛ばす手法が紹介されており、こちらの機能も検討したいところです。

App Search Programming Guide https://developer.apple.com/library/prerelease/content/documentation/General/Conceptual/AppSearch/index.html


Peek & Pop(UIPreviewInteractions)

内容をプレビューしたり、そのまま画面を遷移したりできます。文字通り覗き見と画面遷移をセットで考える必要があり、実装箇所が適切か検討する必要があります。

f:id:base_hideo:20170307143455p:plain


設定が無効になっている場合や、3D Touchに対応していないときは、ロングプレスを使って似た処理を実装することができます。

f:id:base_hideo:20170307143346p:plain


実装方法については、Appleのサンプルコードが提供されています。 https://developer.apple.com/library/content/samplecode/ViewControllerPreviews/Introduction/Intro.html


iOS 10 Notifications(Notification Content Extension)

iOS10から、プッシュ通知にメディア情報(Image / Audio / Video)を添付できるようになっただけでなく、UIのカスタマイズも可能になりました。

前述のPeak & Pop同様、プッシュ通知に添付されたメディアをプレビューすることができます。

f:id:base_hideo:20170307143445p:plain

できれば、アプリ側に流入して回遊してほしいところではあるので、プレビューでユーザに満足感を与えてしまうことが良いのか、判断に迷うところではあります。


その他

3D Touch対応することによって、AppStoreでフィーチャーされるかもしれません。

f:id:base_hideo:20170307145000p:plain