Невозможно получить динамическую ссылку из сокращенного URL-адреса динамической ссылки Firebase - PullRequest
2 голосов
/ 11 ноября 2019

Невозможно получить динамическую ссылку из короткого URL-адреса, созданного с помощью динамических ссылок Firebase, при открытии через WhatsApp.

При открытии через Skype отображается экран предварительного просмотра, но при нажатии на URL-адрес с помощью WhatsApp оно непосредственно открывает приложение, а неоткрывает экран предварительного просмотра, после которого я не могу получить динамическую ссылку. Я использую следующий код для создания и сокращения динамической ссылки:

guard let link = URL(string: "https://example.com/abc/\(id)") else { return }
        let dynamicLinksDomainURIPrefix = "https://myexample.online"
        let linkBuilder = DynamicLinkComponents(link: link, domainURIPrefix: dynamicLinksDomainURIPrefix)

        linkBuilder?.iOSParameters = DynamicLinkIOSParameters(bundleID: "bundleID")
        linkBuilder?.iOSParameters?.appStoreID = "appStoreID"
        linkBuilder?.androidParameters = DynamicLinkAndroidParameters(packageName: "packageName")
        linkBuilder?.options = DynamicLinkComponentsOptions()
        linkBuilder?.options?.pathLength = .short

        guard let longDynamicLink = linkBuilder?.url else {
            Alert.HideProgressHud(Onview: self.view)
            return
        }
        DispatchQueue.main.async {

            DynamicLinkComponents.shortenURL(longDynamicLink, options: linkBuilder?.options) { url, warnings, error in
                let url = url
                self.openactivityPickerForSharing(capturedImage: capturedImage, url: url)
            }
        }

в AppDelegate Я использую следующую функцию, чтобы получить это:


        if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) {
            // Handle the deep link. For example, show the deep-linked content or
            // apply a promotional offer to the user's account.
            // [START_EXCLUDE]
            // In this sample, we just open an alert.
            handleDynamicLink(dynamicLink)
            // [END_EXCLUDE]
            return true
        }
        return application(app, open: url,sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,annotation: "")
    }

    func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
        if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) {
            // Handle the deep link. For example, show the deep-linked content or
            // apply a promotional offer to the user's account.
            // [START_EXCLUDE]
            // In this sample, we just open an alert.
            handleDynamicLink(dynamicLink)
            // [END_EXCLUDE]
            return true
        }
        // [START_EXCLUDE silent]
        // Show the deep link that the app was called with.
        //showDeepLinkAlertView(withMessage: "openURL:\n\(url)")
        // [END_EXCLUDE]
        return false
    }
    // [END openurl]
// [START continueuseractivity]
    func application(_ application: UIApplication, continue userActivity: NSUserActivity,
                     restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
        let handled = DynamicLinks.dynamicLinks().handleUniversalLink(userActivity.webpageURL!) { (dynamiclink, error) in
            // [START_EXCLUDE]
           //self.showDeepLinkAlertView(withMessage: "\(dynamiclink)")
            // [END_EXCLUDE]
        }
//handled is always returned always
        // [START_EXCLUDE silent]
        if !handled {
           //Handled the URL received in Case of Skype.
        }
        // [END_EXCLUDE]
        return handled
    }

 func handleDynamicLink(_ dynamicLink: DynamicLink) {
        let matchConfidence: String
        if dynamicLink.matchType == .weak {
            matchConfidence = "Weak"
        } else {
            matchConfidence = "Strong"
        }
        let message = "App URL: \(dynamicLink.url?.absoluteString ?? "")\n" +
        "Match Confidence: \(matchConfidence)\nMinimum App Version: \(dynamicLink.minimumAppVersion ?? "")"
    }

После этого, когда я нажимаю насокращенный URL-адрес, который был предоставлен в WhatsApp, я получаю URL-адрес, который является сокращенным URL-адресом, созданным динамическими ссылками Firbase, а не реальным

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...