web-dev-qa-db-fra.com

L'action du bouton de messagerie In-App de Firebase ne fonctionne pas

Dans mon projet iOS, j'ai configuré toutes les dépendances pour la messagerie in-app de Firebase et, sur le clic de bouton, j'ai besoin d'amener l'utilisateur à une page Web.

La bannière et le message sont reçus dans l'appareil comme requis, mais l'action du bouton n'ouvre pas la page Web.

S'il vous plaît noter que le même travail pour l'application Android sans aucun problème, il ouvre l'URL dans le navigateur sans aucun problème.

J'envoie l'URL au format correct, c'est-à-dire: https://www.something.com

S'il vous plaît, n'importe qui peut-il nous éclairer?

4
al_mukthar

La solution consiste à utiliser des liens dynamiques Firebase et à ajouter une méthode dans AppDelegate.Swift.

func application(_ application: UIApplication,
               open url: URL,
               sourceApplication: String?,
               annotation: Any) -> Bool {
let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url)

if dynamicLink != nil {
  if dynamicLink?.url != nil {
    // Handle the deep link. For example, show the deep-linked content,
    // apply a promotional offer to the user's account or show customized onboarding view.
    // ...
  } else {
    // Dynamic link has empty deep link. This situation will happens if
    // Firebase Dynamic Links iOS SDK tried to retrieve pending dynamic link,
    // but pending link is not available for this device/App combination.
    // At this point you may display default onboarding view.
  }
  return true
}
return false
}

vérifier plus dans messagerie in-app sample from google 

0
al_mukthar

J'ai la même chose et la méthode

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

ne se déclenche même pas après avoir appuyé sur le bouton d'action

3
mgor3k

J'ai eu ce problème depuis le lancement de la messagerie in-app. Je fais partie d'Android sans problème mais pour iOS, je ne parviens pas à faire fonctionner le bouton. Merci à la perspicacité de ce post. Mais l'addition ci-dessus à elle seule à l'AppDelegate ne fonctionne pas. Je dois ajouter plus:

func application(_ application: UIApplication,
                 open url: URL,
                 sourceApplication: String?,
                 annotation: Any) -> Bool {
    let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url)

    if dynamicLink != nil {
        if dynamicLink?.url != nil {
            // Handle the deep link. For example, show the deep-linked content,
            // apply a promotional offer to the user's account or show customized onboarding view.
            // ...
        } else {
            // Dynamic link has empty deep link. This situation will happens if
            // Firebase Dynamic Links iOS SDK tried to retrieve pending dynamic link,
            // but pending link is not available for this device/App combination.
            // At this point you may display default onboarding view.
        }
        return true
    }
    return false
}



func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
    let handled = DynamicLinks.dynamicLinks().handleUniversalLink(userActivity.webpageURL!) { (dynamiclink, error) in
        // ...
    }

    return handled

}
1
Simon Ho

Assurez-vous que votre application AppDeletegate: openURL: sourceApplication: annotation: (iOS 8 et versions antérieures) et application: openURL: options: (iOS 9 et versions ultérieures) renvoie correctement OUI/vrai ou NON/faux. Le SDK de messagerie intégrée vérifie la valeur renvoyée par ces méthodes pour déterminer si elles sont déjà gérées par l'application ou non. 

Ainsi, dans le cas d'un lien Web, assurez-vous de renvoyer la valeur No/false afin que le SDK de messagerie intégrée puisse le transférer au système à charger dans le navigateur. Vous pouvez corriger ce problème en vérifiant comment votre méthode de gestion des URL appdelegate est déclenchée après un clic sur le bouton.

0
Yong