Firebase应用内消息传递按钮操作不起作用

时间:2018-09-26 09:34:07

标签: ios swift firebase firebase-in-app-messaging

在我的iOS项目中,我已经设置了Firebase应用内消息传递的所有依赖项,并在按钮上单击“我需要将用户带到网页”。

横幅和消息已根据需要在设备中接收,但按钮操作无法打开网页。

请注意,适用于android应用的相同功能没有任何问题,它会在浏览器中打开网址,没有任何问题。

我以正确的格式发送网址,即:https://www.something.com

请任何人可以对此有所启发?

4 个答案:

答案 0 :(得分:3)

我有相同的东西和方法

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

在点击操作按钮后甚至不会触发

答案 1 :(得分:1)

自应用内消息发布以来,我一直遇到这个问题。我做android部分没有任何问题,但对于iOS,我无法完成按钮工作。感谢这篇文章的见解。但是,仅对AppDelegate进行的上述添加不起作用。我必须添加更多:

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

}

答案 2 :(得分:0)

确保您的AppDeletegate的application:openURL:sourceApplication:annotation:(iOS 8及更高版本)和application:openURL:options:(iOS 9及更高版本)正确返回YES / true或NO / false。应用内消息传递SDK将检查这些方法的返回值,以确定它们是否已由应用处理。

因此对于Web链接,请确保返回No / false,以便应用内消息传递SDK可以将其转发给要在浏览器中加载的系统。您可以通过检查单击按钮后触发appdelegate的url处理方法的方式来调试此行为。

答案 3 :(得分:0)

好的,解决方案是使用Firebase动态链接并在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
}

in-app messaging来自Google的示例中查看更多信息