22
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【iOS Firebase Dynamic Links】アプリインストールを経由するときに注意すること

Last updated at Posted at 2019-12-26

はじめに

Firebase Dynamic Links を用いて、 Web ページ等から AppStore を経由して新規インストール、その後の起動でリンクに基づいた処理をアプリで行う場合の注意点等をまとめます。
基本的な実装方法に関しては日本語ドキュメント等もありますのでそちらをご覧ください。

なお、 iOS10 以降をサポートバージョンとするアプリを前提として話を進めます。
また、 Firebase Dynamic Links によって流れてくるリンクのことを別のリンクと区別するためにここでは Dynamic Links と呼ぶことにします。

呼ばれるメソッドが違う

最後に、application:openURL:sourceApplication:annotation: メソッド(iOS 8 以前)と application:openURL:options: メソッド(iOS 9 以降)で、アプリのカスタム URL スキームを通して受信したリンクを処理します。これらのメソッドが呼び出されるのは、アプリが iOS 8 以前でリンクを受信したときと、iOS(バージョンを問わず)にアプリをインストールした後にアプリが初めて開かれたときです。

iOS でダイナミック リンクを受信する

iOS のサポートバージョンによって実装方法も異なってくることは多くの方がご存知だと思いますが、「アプリをインストールした後にアプリが初めて開かれるとき」も関係してくる話であることを見落としてはいけません。

// インストール後2回目以降で Dynamic Links が来る
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
    // DynamicLinks.dynamicLinks().dynamicLink(fromUniversalLink: URL) で判別
}
// インストール後初起動で Dynamic Links が来る
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any]) -> Bool {
    // DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: URL) で判別
}

ここでもう一つ注意したいのが、 インストール後初起動では必ず Dynamic Links が流れてくる という点です。なので、インストール後初起動のタイミングで行う処理がなかったとしても Dynamic Links を受信可能にしたアプリの場合、 url のパース処理で Dynamic Links が流れてくることを考慮しなければなりません。
ちなみに、Web ページ等から該当のリンクを経由していない場合に流れてくる Dynamic Links は url が nil になっています。

プレビューページスキップは非推奨

AppStore もしくはアプリに直接遷移させることもできますが、推奨しないとコンソールにも書かれています。実は、 AppStore を経由した場合に、アプリ側に流れてきた Dynamic Links がどれだけ信頼できるものであるかを決めるのに役立っているのがこのプレビューページとのことです。
また、スキップした場合に挙動が安定しない(リンクが渡ってこない)などが発生する可能性もあるため、基本的にはプレビューページは有効にしておくべきと言えます。

プレビューページを通過後にクリップボードを確認してみると、その仕組を少し覗き見ることができるかもしれません。

動作確認

AppStore からインストールされる必要はありません。
一度対象のアプリをデバイスから削除しておき、その状態でリンクを踏んで AppStore まで遷移後、 Xcode でいつもどおり実機インストールを行うことでインストール後初起動の挙動を再現することが可能です。
また、 TestFlight などでインストールするときも Xcode でインストールするときとタイミングは同じなのでテスターさんも比較的簡単に動作確認を行うことが可能です。

おわりに

実際のプロダクトで動作確認を行ったときの挙動をもとに記事にしているため、環境によっては異なる挙動を見せるかもしれません。挙動の違いや、間違いと感じる箇所があればコメント等よろしくお願いします。

22
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?