『入る学科間違えた高専生』の日記

プログラミングのコードを書いたりする予定です。あとは日記等。あといつまで高専生やねん

iOS の Universal Links の謎挙動について

はじめに

iOS をはじめとする Apple プラットフォームでは Universal Links が利用できます。この機能を使用することで、ウェブサイトとアプリを自然に連携させることができます。

しかしながら、この機能には今回紹介するような注意点があります。

それは、アプリが開いたりブラウザが開いたりすることです。今回はその紹介と暫定対応策を書くだけでどうっていうことはありません。

今となってはもう Universal Links の実装がわからない人なんていないかと思います。
Apple からも Universal Links のデバッグについての説明などが出ているので紹介不要と思うので説明は省略します。

developer.apple.com

以前記事を書いたので参考までに

謎の挙動

環境

動画

ざっとこのような感じです。

説明

上記動画の中に今回の暫定対応策は実践しているのですが、簡単に説明をすると以下のようになります。
今回は X アプリで代用しますが、他のアプリでも同じような挙動になります。

  1. X のアプリをインストールし、アカウントでログインや新規登録済み(起動時に apple-app-site-association *1 の読み込みが完了されているとする)(動画にはなし)
  2. Safari で X のサイトを閲覧する (動画にはなし)
  3. NFC カードを使って X の URL を読み込む
  4. NFC カード読み取り完了の通知から URL を開く
  5. Safari で該当 X のページが開かれる
  6. Smart App Banners の開くボタンから X アプリを開く
  7. X アプリを終了
  8. 3. および 4. を実行する
  9. X アプリで該当ページが開かれる

手順に書いたように、ユーザーが最後に閲覧した方法が優先されるようになります。
ただし、 Safari で閲覧していて Smart App Banners から遷移をさせないと OS はアプリへの遷移を開始しません。

ブラウザで開かれるのが嫌と言って、カスタム URL Scheme を定義するのはおすすめできません。なぜならカスタム URL スキームハイジャック*2の危険があるからです。

終わりに

URL によってアプリへの遷移を強制するような操作ができたらいいんだけど、多分できないんだろうな...
ユーザーの操作が優先っていうのがあるのだろう。

他の記事


執筆:@nnsnodnb
Shodoで執筆されました