最新のダイナミックリンクポッドをiOSアプリケーションに統合しました。
Firebaseのリンクを開くたびに、Appdelegateで関数がトリガーされません。アプリデリゲートで実装したメソッドを確認してください
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
DynamicLinks.dynamicLinks().handleUniversalLink(userActivity.webpageURL!) { (dynamiclink, error) in
if(dynamiclink != nil){
let aStr = dynamiclink!.url!.absoluteString
print("reopen url :\(String(describing: aStr.removingPercentEncoding))")
let decodeUrl = aStr.removingPercentEncoding!
}
}
return true
}
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
print("got link1")
print(" first time url :\(url)")
let aStr = url.absoluteString
print("url :\(String(describing: aStr.removingPercentEncoding))")
let decodeUrl = aStr.removingPercentEncoding!
if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) {
if dynamicLink.url != nil{
let aStr = dynamicLink.url!.absoluteString
let decodUrl = aStr.removingPercentEncoding!
}
}
return true }
アプリケーションでカスタムドメインを使用しており、info.plistにも追加しました
<key>FirebaseDynamicLinksCustomDomains</key>
<array>
<string>https://page.google.com/newrequest</string>
</array>
<key>FirebaseAppDelegateProxyEnabled</key>
<string>YES</string>
ダイナミックリンクURLを、applinks:page.google.com
IOS 13では、AppDelegateメソッドは呼び出されません。 SceneDelegateをプロジェクトに追加します。追加func scene(_ scene: UIScene, continue userActivity: NSUserActivity) { print(userActivity.webpageURL) }
userActivity.webpageURLが長いダイナミックリンクになります。
これを試してください: https://stackoverflow.com/a/59765601/2781088 これはDLの初期問題を解決し、以下のコードに従って、コメント。
次の関数でURLを取得できます(これらのメソッドをアプリデリゲートに追加します)。
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
if DynamicLinks.dynamicLinks().shouldHandleDynamicLink(fromCustomSchemeURL: url) {
let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url)
self.handleDynamicLink(dynamicLink)
return true
}
}
そして
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
if let incomingURL = userActivity.webpageURL {
print(incomingURL)
let linkHandled = DynamicLinks.dynamicLinks().handleUniversalLink(incomingURL) { (dynamicLink, error) in
guard error == nil else {
print("Found an error! \(error!.localizedDescription)")
return
}
if let dynamicLink = dynamicLink {
self.handleDynamicLink(dynamicLink)
}
}
if linkHandled {
return true
}
else {
//May be do other things with our incoming URL?
return false
}
}
return false
}
handleDynamicLinkメソッド:
func handleDynamicLink(_ dynamicLink: DynamicLink?) {
guard let dynamicLink = dynamicLink else { return }
guard let deepLink = dynamicLink.url else { return }
}
あなたの問題が解決することを願っています。