iOS Приложение: Firebase Dynami c Ссылки не работают с последним файлом Pod - PullRequest
2 голосов
/ 18 февраля 2020

Мы интегрировали последнюю версию Pod Dynami c link в наше приложение 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>

Мы добавили динамик c ссылка URL на наши AssociatedDomains с префиксом ссылок приложения, таких как applinks:page.google.com

Ответы [ 2 ]

0 голосов
/ 20 февраля 2020

В iOS 13 методы AppDelegate не будут вызываться. Добавьте SceneDelegate в свой проект. Добавьте func scene(_ scene: UIScene, continue userActivity: NSUserActivity) { print(userActivity.webpageURL) }

, мы получим userActivity.webpageURL будет нашей длинной динамической c ссылкой.

0 голосов
/ 18 февраля 2020

Попробуйте: { ссылка } Это может решить вашу первоначальную проблему для 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 }
    }

Не забудьте добавить это: enter image description here

Надеюсь, что это решит вашу проблему.

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