![[iOS] iOSアプリでFirebase Dynamic Linksを受け取る](https://devio2023-media.developers.io/wp-content/uploads/2016/05/firebase-eyecatch.png)
[iOS] iOSアプリでFirebase Dynamic Linksを受け取る
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
こんにちは。モバイルアプリサービス部の平屋です。
本記事では、iOSアプリでFirebase Dynamic Linksを受け取るための実装を紹介します。
検証環境
- macOS High Sierra Version 10.13.5
- Xcode Version 9.4.1 (9F2000)
事前準備
Firebaseコンソールでの作業
- Firebaseコンソールを開く
- iOSアプリを作成する
- GoogleService-Info.plistファイルをダウンロードする
ローカルでの作業
Info.plistファイルを追加する
コンソールからダウンロードしたGoogleService-Info.plistファイルをXcodeプロジェクトに追加します。
Firebase SDKを追加する
CocoaPodsで追加します。
target 'FirebaseDynamicLinksSample' do pod 'Firebase/Core' pod 'Firebase/DynamicLinks' end
FirebaseApp共有インスタンスを構成する
AppDelegateのapplication(_:didFinishLaunchingWithOptions:)内に処理を追加します。
import UIKit
import Firebase
import FirebaseDynamicLinks
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    // ...
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        FirebaseApp.configure()
        return true
    }
}
ダイナミックリンクの作成
ドメインの追加
- Firebase コンソールのDynamic Linksのページを開く
- 「はじめる」をクリックしてサブドメインを指定し、続行をクリックする
ダイナミックリンクの作成
- Firebase コンソールのDynamic Linksのページを開く
- 「新しいダイナミックリンク」をクリックし、画面の指示に従ってダイナミックリンクを作成する
正しく構成されているかの確認
- 以下の形式のURLにアクセスする
- https://<Your Subdomain>.page.link/apple-app-site-association- 例:https://sample.page.link/apple-app-site-association
 
- 例:
 
- jsonファイルが表示されるのでappsの中に対象のアプリが存在することを確認する
{
    "applinks": {
        "apps": [],
        "details": [{
            "appID": "XXXXXXXXXX.com.example.FirebaseDynamicLinksSample",
            "paths": [
                "NOT /_/*",
                "/*"
            ]
        }]
    }
}
Dynamic Linksのハンドリング
Associated Domainsを追加する
- Xcode プロジェクト > CapabilitiesでAssociated Domainsを有効にし、以下の形式の値を追加する
- applinks:<Your Subdomain>.page.link- 例:applinks:sample.page.link
 
- 例:
 
Dynamic Linksをハンドリングする処理を追加する
Dynamic Linksの長いURLは以下の形式になります。
- https://<Your Subdomain>.page.link/?link=<DeepLinkURL>&isi=<AppStoreID>&ibi=<BundleID>
以下の実装をアプリに追加すれば、上記URLの中の<DeepLinkURL>部分を取得できます。
class AppDelegate: UIResponder, UIApplicationDelegate {
    // ...
    func application(_ application: UIApplication,
                     continue userActivity: NSUserActivity,
                     restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
        guard
            userActivity.activityType == NSUserActivityTypeBrowsingWeb,
            let webpageURL = userActivity.webpageURL else {
                return false
        }
        return DynamicLinks.dynamicLinks().handleUniversalLink(webpageURL) { dynamiclink, error in
            guard let url = dynamiclink!.url else { return }
            // ディープリンク URLを使用する処理...
            print("url:", url)
        }
    }
}
さいごに
本記事では、iOSアプリでFirebase Dynamic Linksを受け取るための実装を紹介しました。
少し実装を追加するだけで対応できるので良いなぁと思いました。これからiOSアプリでDynamic Linksをさわってみようとしてる方の参考になれば幸いです!














