目次
Session概要
人々が必要とする瞬間にアプリの適切な部分を体験できるようにしましょう。App Clipの設計と構築の方法について説明します。App Clipは特定のタスクに焦点を当てたアプリの一部です。それを見つけやすくする方法についても紹介します。App Clipの短時間で高速なインタラクションにフォーカスし、QRコード、NFC、またはApp Clipコードを通してマップまたは現実世界のイチにおける検索など、あなたが示すことができる文脈に沿った状況を特定する方法について学びます。アプリとApp Clipの間の重要な違いを示し、App Clipが対応するアプリとどのように相互作用するかを説明します。 https://developer.apple.com/videos/play/wwdc2020/10174/
App Clipとは
アプリをインストールしていない人でもオンデマンド(要求があった時のみ提供する)で専用のApp Clip用のバイナリを呼び出して特定のタスクを体験できる機能3つのコンセプト
- App Clipは追加機能であり、アプリは先に用意する必要がある
- App Clip体験
- iOS 14ではWebブラウザではなくApp Clipで処理されるURLがある
- ユーザはアプリの体験をアプリのインストール不要で得られます

App Clipの体験
- App Clipを発見しアプリを起動するベースになる
- アプリへの新しいエントリーポイント
- これらの体験の識別にはURLを使用する
- App Clip URLを扱うプロセスはUniversal Linkに似ている
- 違いはApp Clip URLはApple App Site Associationsファイルを定義せず、App Store Connectで登録する
- App Store Connectに登録するとApp ClipがStoreで公開されURLで呼び出せる状態になる
- QRコードやNFCタグ、Safariやメッセージのリンク、ビジネスの詳細やマップから起動可能
- ユーザにApp Clipを発見してもらうベストプラクティスは今年の後半に公開される新しいApp Clipコードを使用すること
- App Clipが利用可能であることがひと目でわかるようになる
- App ClipコードはNFCの手軽さと視覚コードを組み合わせて、タップやスキャンで優れたUXを提供する
- アプリ、App Clipの両方がStoreに公開されると相互排他的となり、App ClipがダウンロードされるのはApp Clip体験を見つけたユーザがアプリをインストールしていない場合です
- そうでない場合(アプリをインストール済みのユーザがApp Clip体験を見つけた場合)、ユーザはアプリ内で体験が継続することを期待しているため、アプリが優先となる
- そうでない場合(アプリをインストール済みのユーザがApp Clip体験を見つけた場合)、ユーザはアプリ内で体験が継続することを期待しているため、アプリが優先となる

App Clip 体験の設計
- ポイントはアプリの基本的なユーザの行動フローを大胆に再考し、App Clipの強みを発揮できるアプリの機能のみを含めるようにする
- 例えば、下記画像のようにタブバーなどを起点としたアプリのフローがあったとすると、App Clipでは不要なので削除する
- App Clip体験に使用するURLがディープリンクになることを考慮する
- ユーザに合ったフローでApp Clip使用の目的への導くようにする
- とはいえ、あるApp Clipの機能は1つに限定せず、設計次第で多くのことができます
- ただし、フォーカスするのは1度に1つです


App ClipをXcodeで作成する方法
- アプリとは別でApp Clip用のTargetを作成し、必要なコードとアセットを含める
- そのため、アプリと一緒にビルドして審査するため、対応するアプリを別々にアップロードすることはできない
- Targetを作成すると自動的に元のアプリに埋め込まれます
- Xcodeがアプリ名とBundle idをApp Clipにも展開する
- App Clipにもアプリのアイコンが必要となる
- アプリのコードをApp Clipで使用する場合は、App ClipのTargetに追加していく
- 不必要な参照はコンパイル対象から外す
- Swiftコンパイラカスタムフラグにて、 APPCLIP (ここは何でも良い)カスタム条件を定義する
- App Clipは限られたタスクのみであるため、ダウンロードと起動は一瞬でできる必要がある
- そのため、コードはなるべく小さくする
- 具体的には、Thinning後のサイズは10MB未満でなけらばならない
- 起動後すぐ使用するアセットとダウンロードが必要なデータ量のバランスを考慮する必要があります
App Clipのテクノロジーの概要
- App Clipはアプリと同じUIフレームワークで構築する
- UIKitかSwiftUIのアプリケーションのライフサイクルが含まれる
- アプリと同様 NSUserActivityを受け取る
- App Clipで複数の体験をサポートする場合、このアクティビティにWebページURLを使用して、どの体験かを把握してハンドリングする(Universal Linkと同様)
- App ClipはiOS SDKのどのAPIも使用可能
- ただし、App Clipからの個人情報へのアクセスは限定される
- 特別必要な作業はないが、リクエスト時にデータへのアクセスを確認する
- 位置情報確認API
- フリクション(衝突、摩擦)レスな体験のデザインに有用
- 位置情報の全てを提供するのではなく、特定のタスク(対象の位置にいるかどうかなど)のみを返すようにするAPI
- 共有データコンテナ
- シームレスな体験を継続するようアプリがインストールされらデータをApp Clipから移行できるAPI
App Clip開発の注意事項
- App Clipは管理を必要としない
- 必要なタイミングでのみ実行され、不要となればiOSがデータごと削除する
- これはキャッシュのように扱われ、利用頻度に応じて削除するタイミングが変わります
- App ClipはiOSのバックアップに含まれない
- プライバシーを考慮し、健康やフィットネスなどの個人情報へのアクセスを制限している
- 特定の体験の提供にフォーカスしているため、他の理由では起動できない
- すなわち、カスタムURLスキームやドキュメントタイプ Universal Linkは登録できない
- カスタムURLスキームをコールバックとしてフェデレーション(認証連携)サインインに使用している場合は要注意
- ASWebAuthenticationSessionを代わりに使用し、コールバックに使用するURLスキームを登録せずに済むようにする
- App ClipにはExtensionをバンドルすることはできない
App Clipがデバイス上でどのように連携するか
- App Clipを使用したユーザがアプリをインストールした際に、マイクやBluetoothへのアクセス許可などを自動的に移行する
- 移行したいデータの保存は共有データコンテナを使い、App Clipの標準コンテナは使わないようにする
- アプリがインストールされると、iOSがApp Clipとデータを削除するが、データを保存しているコンテナはコピー(移行)できるようしばらく残る


App Clipのためのテクノロジー
- SKOverlay
- SwiftUIではApp Storeオーバーレイモディファイア
- App Clipを気に入ってくれたユーザをアプリに誘導するためのベストな方法
- ユーザをアカウントに関連付けたい場合、認証サービスの中からASAuthorizationControllerを使用する