【问题标题】:Firebase In-app messaging button action doesn't workFirebase 应用内消息按钮操作不起作用
【发布时间】:2018-09-26 09:34:07
【问题描述】:

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

设备已按要求接收横幅和消息,但按钮操作未打开网页。

请注意,同样适用于 android 应用程序没有任何问题,它在浏览器中打开 url 没有任何问题。

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

请任何人都可以对此有所了解吗?

【问题讨论】:

  • 应用消息中的firebase不需要任何代码设置..
  • 了解发送和接收的数据以及显示收到数据后如何处理该数据的代码会很有帮助。
  • 我只是在 firebase 控制台中的按钮操作上设置了一个指向网站的 http 链接,除了设置依赖项之外,应用程序中不需要其他代码,这在 android 中完美运行。但在 ios 中它显示应用内消息,但点击不打开网站
  • 我在iOS上也有同样的问题!

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


【解决方案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

}

【讨论】:

  • 这对你有用吗?..它不适合我..它只工作过一次..然后它停止了..我不知道发生了什么
  • ,你得到这个工作了吗......仍然不适合我
  • @al_mukthar 你找到解决办法了吗?
  • @HimanshuGupta 还没有,这很奇怪并已报告给 firebase 团队,你有同样的问题吗?
  • 是的,同样的。我想我应该使用 firebase 文档中提供的自定义 UI 功能。在这种情况下,我们可以控制它。
【解决方案2】:

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

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

【讨论】:

  • 在您发布的答案中,关键是在 AppDelegate 方法的末尾返回 false,以便 sdk 知道该 url 链接尚未由应用程序处理,应将其处理为 iOS一个网络链接。
【解决方案3】:

好的,解决方法是使用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 示例中查看更多信息

【讨论】:

  • 我很好奇您是如何使按钮操作起作用的,我尝试了从通用链接(常规网站)到动态链接(comgooglemaps://?saddr=&daddr=38.376100,- 96.851619&directionsmode=driving) 谷歌地图什么都没有发生
  • 我认为这个问题只发生在您使用在控制台中找到的实例 ID 进行测试时。我通过发布一个实际的活动(不仅仅是测试)然后发送,让它在没有任何代码更改的情况下工作动态链接,有效
  • 对我来说也是如此......操作按钮在测试时不起作用,它在实际活动中起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-27
相关资源
最近更新 更多