Получение nil в обратном вызове dynamicLinks.handleUniversalLink (url)

Я работаю над получением firebase dynamicLinks. В методе восстановленияHandler делегата приложения я вызвал метод DynamicLinks.dynamicLinks (). HandleUniversalLink (url) Firebase DynamicLinks, чтобы получить фактическую ссылку из короткой ссылки. Но в обратном вызове этого метода я получаю ноль в динамической ссылке. Итак, я не могу получить URL-адрес из динамической ссылки, полученной в обратном вызове. Может ли кто-нибудь помочь мне понять, почему он возвращает ноль.

func application(_ application: UIApplication, continue userActivity: NSUserActivity,
                     restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {

        if let incomingURL = userActivity.webpageURL {
// it prints the passed url and working fine
            debugPrint("Imcoing Url is: \(incomingURL.absoluteString)")

            let linkHandled = DynamicLinks.dynamicLinks().handleUniversalLink(incomingURL) { (dynamicLink, error) in

                guard error == nil else {
                    debugPrint("Error Found: \(error!.localizedDescription)")
                    return
                }
//
//
                if let dynamiclink = dynamicLink, let _ = dynamiclink.url {
// but below function call is not called beacause dynamicLink coming in
// callback is nil
                    self.handleIncomingDynamicLink(dynamiclink)
                }
            }
            if linkHandled {
                return true
            } else {
                // do other stuff to incoming URL?
                return false
            }
        }

        return false
    }

person Azhar Tahir    schedule 08.03.2020    source источник
comment
Перейдите по этой ссылке ниже, чтобы найти решение. nil в обратном вызове dynamicLinks.handleUniversalLink   -  person Purnendu roy    schedule 27.05.2020
comment
Нажмите ниже, чтобы найти решение: Объект динамической ссылки не имеет URL-адреса   -  person Purnendu roy    schedule 27.05.2020


Ответы (2)


Я нашел способ развернуть короткий URL-адрес в Swift, чтобы получить фактический URL-адрес или параметры запроса поступают в виде короткого URL-адреса, который в моем случае был равен нулю, потому что я получил dynamiclink в обработчике завершения

DynamicLinks.dynamicLinks().handleUniversalLink(incomingURL) { (dynamicLink, error) in 
    //Both dynamicLink and error were nil here in my case 
}

ноль. Эти строки кода будут делать то же самое, чтобы получить фактический URL-адрес или параметры запроса из короткого URL-адреса.

URLSession.shared.dataTask(with: incomingURL) { (data, response, error) in

            if let actualURL = response?.url {

                // you will get actual URL from short link here

                // e.g short url was  
                // https://sampleuniversallink.page.link/hcabcx2fdkfF5U

                // e.g actual url will be  
                // https://www.example.com/somePage?quertItemkey=quertItemvalue...
            }
        }.resume()
person Azhar Tahir    schedule 09.03.2020
comment
Это возвращает только ссылку на рабочем столе, а не ссылку, предназначенную для мобильных устройств. - person paul_f; 21.04.2021

У меня была такая же проблема, и для меня причина заключалась в том, что я забыл добавить свой настраиваемый URL-адрес в свой info.plist, как описано здесь:

https://rnfirebase.io/dynamic-links/usage#dynamic-links-with-custom-domains

Я не использую react native, но решение работало и для обычной реализации iOS.

person user7006663    schedule 04.05.2021