App Clipに対応する
リリースしてる「わざタイプ相性表(for ポケモンGO)」というiOSアプリがあって、これをApp Clip対応してみようと試みた。
App Clip用のコードは元のプロジェクトに別ターゲットで作成する。

↑この時App Clipのテンプレートがあるはず。
テンプレのおかげでほとんど必要なややこしい設定はしてくれそうなもんだが、自分で設定しなければいけないのもある。
まずAssociated Domainsなるもので、参考ページ(1)のAdd the Associated Domains Entitlementに書いてるようなことをする必要がある。大事なのは
you must add the Associated Domains Entitlement to the app and the App Clip target:
とあるように、元のappとApp Clipの両方のtargetで作成する必要がある。
これを最初見落としてApp Clip側だけに作成したので、わけのわからないエラーが出て散々回り道をしてしまった(両方に設定しなさい、なんて素直なエラーは出ない)。
最初はApp Clip側のtargetには何もないだろうから必要なファイルをApp Clip側のtargetに追加するなどする。
これを実機にビルドすると普通に起動するのでApp Clip実行時の動作確認ができる。
自分のホームページに必要なタグを設定すると、スマートバナーと呼ばれるApp Clipへのリンクが表示される。

↑これはあるアプリのサイトで、上部にスマートバナーが表示されてる。しかしこれはリリースしないとダメっぽいので事前に確認はできない。
しかしinvocation URLを入れたQRコードを使えばApp Clip Cardというものがディスプレイ下部に表示される。
実際にQRコードは使わないだろうけど、App Store Connectで入力しないといけないし事前にどう表示されるのか確認したい。
それにはiPhoneの設定アプリにあるデベロッパ(初めて使ったよ)って項目にあるAPP CLIPS TESTINGというところを設定する。
ここで適当な画像やURL、BUNDLE IDを設定し、QRコードを読み取ると、、、

↑このように画面下部にApp Clip Cardが表示される(ここでPokeGoChartと表示されてるのはbundle display nameを設定してなかったのでプロジェクト名が表示されてる)。
開くをタップするとすでにビルドしてたApp Clipが起動した。
以上の流れでApp Clip、App Clip Cardの動作を確認できた。なお、ここまでTest Flightは使っていない。
なお、カメラでQRコードを読み取る時にはカメラアプリではなくコントロールセンターにある(なければ設定で追加する)QRコードを読み込むカメラアプリでないとダメだったということ。この情報にたどり着くまでにかなりはまった。
時系列に書くけど、、、App Clip、App Clip Cardの動作確認ができたのでここでアプリのアップデートを申請することにした(ホントはまだ足りない!けど後述のようになんとかなる)。

↑申請の準備中にApp Store Connectでビルド(自分が送信したファイルを確認するところ)のドメインステータスのところに「1件の無効なドメイン」とエラーが出てる。なんだかよくわからなかったがダメならエラーメッセージが出るだろうと申請ボタンを押したら申請できてしまった。
その日の深夜に審査に入り、審査を通過した。
しかし、何をやってもApp Clipをダウンロードできない、、、
調べるとどうやらapple-app-site-associationなるものをサーバにアップしないとダメらしい(参考ページ(2)にある)。
細かい解説は参考ページ(3)にあるのだが、

↑ファイルはこのように置いてね、とある。これを見た時には世の中に .well-known という名前のよく使われるディレクトリが存在する(試しにググったら色々用途があることがわかる)と知らなかったので、よくあるexample.comみたいに自分の環境で該当するのを割り当てる文字列だと思ってた。なので最初は一番上の https://ringsbell.net にファイルを置いた。すると、、、

↑デバッグステータスだけは緑になった(間違ってるんだから変わるなよ!と後から思うが)。 しかし、これ以降いくら待ってても変化がないので調べると、上記のように .well-known ってディレクトリに置くことを知ってそのようにした。

↑するとその3時間弱ほど経った後にキャッシュの方も緑になっていた!(気付いたのはもっと後だったけど)

↑その気付いた時(緑になってから2時間後)、iPadのカメラでQRコードを読むとこの画面に遷移。上部にApp Clipへのリンクが出てる!開くをタップすると

↑App Store Connectで指定したApp Clip Cardが表示された!もちろん開くをタップでApp Clipが表示された(ダウンロード時にlaunch screenが表示されるのかと思ったがそうでもない?)。
しかし、なぜかiPhoneでは従来通りApp Clipを認識しない、、、iPhoneを再起動しようともSafariやApp Clipのキャッシュを消そうともダメだった。iOSとiPadOSの違いだとどうしようもないか、iOSの次のアップデートまで待たないとダメなのか、、、?と諦めてたが翌日の15時頃にはiPhoneでも意図通り動いてくれた。なんとも不安定だな、、、

↑なお今のところメッセージでURLを送信してもSafariへのリンクしか表示されない(画像とか表示されるのでは?)。
おまけ

↑QRコードはこちら。iPhoneなどのカメラでQRコードを認識するとスマートバナーが見られると思います。
このURLはhttps://ringsbell.net/ios/pokegochart です。アプリの紹介ページですが、iOSのSafariで見ると上部にスマートバナーが表示されるはずです。
わざタイプ相性表 for ポケモンGO
参考
(1)Creating an App Clip with Xcode | Apple Developer Documentation
(2)Configuring Your App Clip’s Launch Experience | Apple Developer Documentation
(3)Supporting Associated Domains | Apple Developer Documentation
(4)QRコード作成はいつもこちらでお世話になってます↓
QRコード作成【無料】アイコン・文字入りQRコード
iOS 14.0.1
macOS 10.15.7 Catalina
Xcode 12.0.1
Swift 5.3
App Clip用のコードは元のプロジェクトに別ターゲットで作成する。

↑この時App Clipのテンプレートがあるはず。
テンプレのおかげでほとんど必要なややこしい設定はしてくれそうなもんだが、自分で設定しなければいけないのもある。
まずAssociated Domainsなるもので、参考ページ(1)のAdd the Associated Domains Entitlementに書いてるようなことをする必要がある。大事なのは
you must add the Associated Domains Entitlement to the app and the App Clip target:
とあるように、元のappとApp Clipの両方のtargetで作成する必要がある。
これを最初見落としてApp Clip側だけに作成したので、わけのわからないエラーが出て散々回り道をしてしまった(両方に設定しなさい、なんて素直なエラーは出ない)。
最初はApp Clip側のtargetには何もないだろうから必要なファイルをApp Clip側のtargetに追加するなどする。
これを実機にビルドすると普通に起動するのでApp Clip実行時の動作確認ができる。
自分のホームページに必要なタグを設定すると、スマートバナーと呼ばれるApp Clipへのリンクが表示される。

↑これはあるアプリのサイトで、上部にスマートバナーが表示されてる。しかしこれはリリースしないとダメっぽいので事前に確認はできない。
しかしinvocation URLを入れたQRコードを使えばApp Clip Cardというものがディスプレイ下部に表示される。
実際にQRコードは使わないだろうけど、App Store Connectで入力しないといけないし事前にどう表示されるのか確認したい。
それにはiPhoneの設定アプリにあるデベロッパ(初めて使ったよ)って項目にあるAPP CLIPS TESTINGというところを設定する。
ここで適当な画像やURL、BUNDLE IDを設定し、QRコードを読み取ると、、、

↑このように画面下部にApp Clip Cardが表示される(ここでPokeGoChartと表示されてるのはbundle display nameを設定してなかったのでプロジェクト名が表示されてる)。
開くをタップするとすでにビルドしてたApp Clipが起動した。
以上の流れでApp Clip、App Clip Cardの動作を確認できた。なお、ここまでTest Flightは使っていない。
なお、カメラでQRコードを読み取る時にはカメラアプリではなくコントロールセンターにある(なければ設定で追加する)QRコードを読み込むカメラアプリでないとダメだったということ。この情報にたどり着くまでにかなりはまった。
時系列に書くけど、、、App Clip、App Clip Cardの動作確認ができたのでここでアプリのアップデートを申請することにした(ホントはまだ足りない!けど後述のようになんとかなる)。

↑申請の準備中にApp Store Connectでビルド(自分が送信したファイルを確認するところ)のドメインステータスのところに「1件の無効なドメイン」とエラーが出てる。なんだかよくわからなかったがダメならエラーメッセージが出るだろうと申請ボタンを押したら申請できてしまった。
その日の深夜に審査に入り、審査を通過した。
しかし、何をやってもApp Clipをダウンロードできない、、、
調べるとどうやらapple-app-site-associationなるものをサーバにアップしないとダメらしい(参考ページ(2)にある)。
細かい解説は参考ページ(3)にあるのだが、

↑ファイルはこのように置いてね、とある。これを見た時には世の中に .well-known という名前のよく使われるディレクトリが存在する(試しにググったら色々用途があることがわかる)と知らなかったので、よくあるexample.comみたいに自分の環境で該当するのを割り当てる文字列だと思ってた。なので最初は一番上の https://ringsbell.net にファイルを置いた。すると、、、

↑デバッグステータスだけは緑になった(間違ってるんだから変わるなよ!と後から思うが)。 しかし、これ以降いくら待ってても変化がないので調べると、上記のように .well-known ってディレクトリに置くことを知ってそのようにした。

↑するとその3時間弱ほど経った後にキャッシュの方も緑になっていた!(気付いたのはもっと後だったけど)

↑その気付いた時(緑になってから2時間後)、iPadのカメラでQRコードを読むとこの画面に遷移。上部にApp Clipへのリンクが出てる!開くをタップすると

↑App Store Connectで指定したApp Clip Cardが表示された!もちろん開くをタップでApp Clipが表示された(ダウンロード時にlaunch screenが表示されるのかと思ったがそうでもない?)。
しかし、なぜかiPhoneでは従来通りApp Clipを認識しない、、、iPhoneを再起動しようともSafariやApp Clipのキャッシュを消そうともダメだった。iOSとiPadOSの違いだとどうしようもないか、iOSの次のアップデートまで待たないとダメなのか、、、?と諦めてたが翌日の15時頃にはiPhoneでも意図通り動いてくれた。なんとも不安定だな、、、

↑なお今のところメッセージでURLを送信してもSafariへのリンクしか表示されない(画像とか表示されるのでは?)。
おまけ

↑QRコードはこちら。iPhoneなどのカメラでQRコードを認識するとスマートバナーが見られると思います。
このURLはhttps://ringsbell.net/ios/pokegochart です。アプリの紹介ページですが、iOSのSafariで見ると上部にスマートバナーが表示されるはずです。
わざタイプ相性表 for ポケモンGO
参考
(1)Creating an App Clip with Xcode | Apple Developer Documentation
(2)Configuring Your App Clip’s Launch Experience | Apple Developer Documentation
(3)Supporting Associated Domains | Apple Developer Documentation
(4)QRコード作成はいつもこちらでお世話になってます↓
QRコード作成【無料】アイコン・文字入りQRコード
iOS 14.0.1
macOS 10.15.7 Catalina
Xcode 12.0.1
Swift 5.3
スポンサーサイト
<< Swiftでクラスのオブジェクトをコピーする TopPage macOSでオブジェクトをクリップボードに入れる >>
トラックバック
トラックバックURL
https://ringsbell.blog.fc2.com/tb.php/1362-106f8505
https://ringsbell.blog.fc2.com/tb.php/1362-106f8505