首页 > 解决方案 > iOS 上的 Firebase 动态链接不起作用。动态链接网址始终为零

问题描述

我在 Firebase 中创建了许多带有自定义 URL 方案的链接,虽然我可以在 Notes 中选择链接时打开应用程序,但动态链接始终为零。

这是调用动态链接 api 的代码:


public struct FirebaseBridge {

    public static func configure() {
        FirebaseOptions.defaultOptions()?.deepLinkURLScheme = "mycustomurlscheme"
        MyFirebase.configure(crashlyticsIncludeDeviceId: false)
    }

    public static func setPushMessagingDelegate(_ pushMessagingDelegate: MessagingDelegate) {
        Messaging.messaging().delegate = pushMessagingDelegate
    }

    public static func openDynamicLinkFromURL(_ url: URL) -> Bool {
        print(url.absoluteString)
        if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) {
            self.handleIncomingDynamicLink(dynamicLink)
            return true
        }
        return false
    }

    public static func handleUniversalLinkFromURL(_ url: URL) -> Bool {
        let handled = DynamicLinks.dynamicLinks().handleUniversalLink(url) { (dynamiclLnk, error) in
            guard error == nil, let dynamicLink = dynamiclLnk else {
                print("error")
                return
            }

            print(dynamicLink)
            print(dynamiclLnk?.url ?? "no URL")
            FirebaseBridge.handleIncomingDynamicLink(dynamicLink)

        }

        return handled
    }

    private static func handleIncomingDynamicLink(_ dynamicLink: DynamicLink) {
        guard let url = dynamicLink.url else {
            print(dynamicLink)
            return
        }
        print(url.absoluteString)
    }

    public static func performDiagnostics() {
        DynamicLinks.performDiagnostics(completion: { diagnostic, error in            
            print(diagnostic)
        })
    }
}

这是AppDelegate中的相关代码:

class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Keep this first at app launch.
        FirebaseBridge.configure()
        return true
    }

    func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
        return FirebaseBridge.openDynamicLinkFromURL(url)
    }

    func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
        guard let url = userActivity.webpageURL else {
            return false
        }

        return FirebaseBridge.handleUniversalLinkFromURL(url)
    }
}

这是 performDiagnostics 调用的输出:

---- Firebase Dynamic Links diagnostic output start ----

Firebase Dynamic Links framework version 4.0.8

System information: OS iOS, OS version 13.3.1, model iPhone

Current date 2020-06-08 17:35:58 +0000

Device locale en-US (raw en_US), timezone America/Los_Angeles

    Specified custom URL scheme is mycustomurlscheme and Info.plist contains such scheme in CFBundleURLTypes key.

    AppID Prefix: prefix, Team ID: teamid, AppId Prefix equal to Team ID: YES

performDiagnostic completed successfully! No errors found.

---- Firebase Dynamic Links diagnostic output end ----


任何帮助,将不胜感激!

标签: iosswiftfirebasefirebase-dynamic-links

解决方案


推荐阅读