###実現したいこと
firebase dynamic link からアプリを起動するときに、linkのurlをアラートで表示したいです。
###発生している問題
アプリがバックグラウンドの状態では、noteに貼ってあるdynamic link をタップすると、アプリが起動し, url の内容を含んだ内容アラートが表示されました。
しかし、アプリがインアクティブの状態(完全に閉じた状態)では、dynamic linkをタップすると、アプリがただ起動しただけで、アラートが表示されませんでした。(ios 10.2.1でテストしました)
###該当のソースコード
以下のガイドとサンプルを参考して:
firebase dynamic link tutorial
Dynamic link sample
こんな感じでApplicationDelegateを実装しました。
let customURLScheme = "dlscheme" func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { FIROptions.default().deepLinkURLScheme = self.customURLScheme FIRApp.configure() return true } func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool { return application(app, open: url, sourceApplication: nil, annotation: [:]) } func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { let dynamicLink = FIRDynamicLinks.dynamicLinks()?.dynamicLink(fromCustomSchemeURL: url) if let dynamicLink = dynamicLink { let message = generateDynamicLinkMessage(dynamicLink) if #available(iOS 8.0, *) { showDeepLinkAlertView(withMessage: message) } return true } if #available(iOS 8.0, *) { showDeepLinkAlertView(withMessage: "openURL:\n(url)") } else { } return false } @available(iOS 8.0, *) func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool { guard let dynamicLinks = FIRDynamicLinks.dynamicLinks() else { return false } let handled = dynamicLinks.handleUniversalLink(userActivity.webpageURL!) { (dynamiclink, error) in let message = self.generateDynamicLinkMessage(dynamiclink!) self.showDeepLinkAlertView(withMessage: message) } return handled } func generateDynamicLinkMessage(_ dynamicLink: FIRDynamicLink) -> String { let matchConfidence: String if dynamicLink.matchConfidence == .weak { matchConfidence = "Weak" } else { matchConfidence = "Strong" } let message = "App URL: (dynamicLink.url)\nMatch Confidence: (matchConfidence)\n" return message } @available(iOS 8.0, *) func showDeepLinkAlertView(withMessage message: String) { let okAction = UIAlertAction.init(title: "OK", style: .default) { (action) -> Void in print("OK") } let alertController = UIAlertController.init(title: "Deep-link Data", message: message, preferredStyle: .alert) alertController.addAction(okAction) self.window?.rootViewController?.present(alertController, animated: true, completion: nil) }
###試したこと
アプリがインアクティブの状態か起動するなので、何もデバッグ出来ませんでした。
何でも構いませんので経験のある方、よろしくお願いいします。
###補足情報(言語/FW/ツール等のバージョンなど)
Xcode 8.2.1/Swift 3/ ios 10.2.1
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。