質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

2498閲覧

appがinactive状態でのdynamic link ハンドル

hikrairaina

総合スコア28

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/02/07 06:24

###実現したいこと
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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

私も同じような事象で悩んでおりましたが、こちらのサイトの方法で、inactive状態でもNSLogで、ログを確認出来るので、その方法で問題を解決出来ました。

私の場合はアラートで表示をするのではなく、単純に受け取ったURLへwebviewで遷移させると言う内容でした。
Dynamic Linkの遷移先のURL自体は正常に取得が出来ていたのですが、Dynamic Linkの遷移をしている途中に通常の初期起動の遷移も始まってしまっており、Dynamic Linkの遷移がキャンセルされてしまっていたと言う事象でした。

少し対応内容が違うので、参考になるかはわかりませんが・・・。

投稿2017/10/25 06:48

momoyuri

総合スコア35

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問