この記事は公開されてから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をさわってみようとしてる方の参考になれば幸いです!