iOS14の新機能、AppClip。なんかあのにゅっとでてくるやつです。 対応しているアプリをあまり見かけないので実装してみました。 是非、実際の端末で動かしてみてください。
実装
どうやって実装するのかの情報はWWDCでもでていましたが、どんなタイミングでどう動くのかは、実際に動くアプリで試してみたいですよね。
動作確認用に使っている個人アプリで試してみました。
起動トリガー
WWDCで説明されていた起動トリガーはこの7種類。
- URL
- Smart App Banner (App Clip用)
- (普通の)QRコード
- (Apple独自の)QRコード
- NFC
- Map
- 場所
まずはURL
から……といいたいところなのですが、実は私の手元では、AppClipが(安定して)起動していないんですよね。
ちょっとほかの起動トリガーから見てみましょう。
Smart App Banner
。
下のURLをひらいて、ページの右上の「開く」をクリックしてください。下からにゅっとAppClipがでてきますね。
次は普通のQRコード
。
こちらのコードをカメラで読み込むと、画面上に「開く」メニューが表示され、そちらからAppClipカードが表示できます。
Apple独自のQRコード
については、今年後半にリリースされるということなので、まだ確認ができません。
そして、NFC
。サンワサプライのNFCタグにこちら↓のURLを書き込んで、iPhoneを上にのせてみたところ、AppClipがちゃんと表示されました。(ただし、iOS14.2では表示されるんですが、iOS14.0.1では表示されないようです。)
あとは、Map
と場所のトリガー
ですが、こちらについてはまだ確認中。(実装してみたんですが、うまく動かないので、動いたらまた記事を書きます。)
Default App ClipとAdvanced App Clip
WWDCでも触れられていましたが、App Clipには2種類あります。
Default App Clip
とAdvanced App Clip
です。
この2種類の使い分けは、あまり大きく触れられていませんでした。
Default App Clip
とAdvanced App Clip
は、見た目は全く同じです。
App Clipを実装する場合、Default App Clip
は必須ですが、Advanced App Clip
はオプショナルです。
Default App Clip
は、一つだけですが、Advanced App Clip
はいくつでも実装できます。
基本的には、AppClipのルート画面を表示するのがDefault App Clip
、条件に応じた画面を表示するのがAdvanced App Clip
です。
(Default App Clip
もAdvanced App Clip
も固有のURLを持ち、実装面からは違いはありません。)
今回の実装では、このURLをDefault App Clip
として実装し、ここから開いた時にはAppClipのルート画面を見せるようにしています。
そして、Advanced App Clip
としてはこのURLを実装し、個別のパズル画面が表示されるようになっています。
- https://tachibanakaoru.github.io/toyjigsaw/puzzle4x4/1
- https://tachibanakaoru.github.io/toyjigsaw/puzzle4x4/2
- https://tachibanakaoru.github.io/toyjigsaw/puzzle4x4/3
- https://tachibanakaoru.github.io/toyjigsaw/puzzle4x4/4
また、起動トリガーによって、使えるApp Clipの種類が違います。
Smart App Banner
はDefault App Clip
だけ、QRコード
とNFC
はAdvanced App Clip
だけでしか使えません。
アプリ本体とAppClipのインストール状態で違う動作
App Clipは、アプリ本体のインストール状態、AppClipのインストール状態でトリガーされた時の動作が異なります。
下記の3つのインストール状態でみてみましょう。*1(アプリ本体がインストールされるとAppClipは削除されるので、「App本体あし、App Clipあり」の状態はありません。)
- App本体なし、App Clipなし
- App本体なし、App Clipあり
- App本体あり、App Clipなし
App本体なし、App Clipなし
- Smart App Banner から起動した場合 → AppClipカードが
表示され
、そこからApp Clipが起動 - NFCタグ → AppClipカードが
表示され
、そこからApp Clipが起動 - QRコード → AppClipカードが
表示され
、そこからApp Clipが起動
App本体なし、AppClipあり
- Smart App Banner から起動した場合 → AppClipカードは
表示されず
、App Clipが直接起動 - NFCタグ → AppClipカードが
表示され
、そこからApp Clipが起動 - QRコード → AppClipカードが
表示され
、そこからApp Clipが起動
App本体あり、AppClipなし
- Smart App Banner から起動した場合 → AppClipカードは
表示されず
、App本体が直接起動 - NFCタグ → AppClipカードが
表示され
、そこからApp本体が起動 - QRコード → AppClipカードが
表示され
、そこからApp本体が起動
開発中のApp Clipのテスト
App Clipの起動は、Test Flightで確認することができます。
ただし、Test Flightからの起動ではApp Clipカードは表示されません。(App Clipが直接起動されます。)
開発中にApp Clipカードを表示したい場合には、設定画面の Developer
の APP CLIPS TESTING
にあるLocal Experiences
に画像・テキスト情報を設定すると、App Clipカードが表示されるようになっています。
App Clipの申請
App Clipの情報の申請は、基本的にはアプリの審査時の情報入力と同時に行います。
ただ、現時点では、アプリをリリースしたあとでもAdvanced App Clip
の情報を追加・編集することはできるようになっています。
entitlement
App Clipの実装についてはAppleの公式情報も充実しているので、この記事では触れませんが、ハマりどころの多い設定ファイル系だけ置いておきます。
親アプリのBundle Identifierはorg.toyship.toyjigsaw
、App Clipはorg.toyship.toyjigsaw.clip
です。
親アプリのentitlement fileはこちら。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.developer.associated-domains</key> <array> <string>applinks:tachibanakaoru.github.io</string> <string>appclips:tachibanakaoru.github.io</string> </array> </dict> </plist>
App Clipのentitlement fileはこちら。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.developer.associated-domains</key> <array> <string>appclips:tachibanakaoru.github.io</string> <string>applinks:tachibanakaoru.github.io</string> </array> <key>com.apple.developer.parent-application-identifiers</key> <array> <string>$(AppIdentifierPrefix)org.toyship.toyjigsaw</string> </array> </dict> </plist>
apple-app-site-associationはこんな設定としています。
https://tachibanakaoru.github.io/apple-app-site-association
まとめ
App Clipは、まだApple側も手探りなようで、iOSのバージョンによって微妙に動作が異なったり、Developer Documentに書いてある動作をしない場合もあります。
iTunes ConnectでApp Clipの情報を申請するんですが、その際にApp Clipカード用の画像の登録がうまくいかないことが多いんですよね。 (バグだとは思いますが、同じ画像ファイルを設定しても登録が成功する場合と失敗する場合があります。)
また、URLをトリガーとした機動がうまくいかないことも多い(タイミングによって異なる?)ので、そのあたりもまだ調査中です。
App Clip は、実装難易度が高く、はまりどころも多いので、初心者Developerには難しいかもしれません。
ただ、やっぱり「にゅっとでてくる」のは楽しいですよね。対応しているアプリは少ないですけど、いろいろ楽しいことができそうな気がします。
*1:iOS14.2 beta2で確認した動作なので、バージョンが異なると違う動作になる可能性があります。