Firebase 应用内消息按钮操作不起作用
Firebase In-app messaging button action doesn't work
在我的 iOS 项目中,我已经设置了 firebase 应用内消息传递的所有依赖项,并且在单击按钮时我需要将用户带到网页。
横幅和消息已按要求接收到设备中,但按钮操作未打开网页。
请注意,android 应用同样可以正常工作,在浏览器中打开 url 也没有任何问题。
我正在以正确的格式发送 URL 即:https://www.something.com
任何人都可以对此有所了解吗?
确保您的 AppDeletegate 的 application:openURL:sourceApplication:annotation:(iOS 8 岁及以上)和 application:openURL:options:(iOS 9 及以上)returns YES/true 或 NO/false 正确。 In-App Messaging SDK 将检查这些方法中的 return 值,以确定它们是否已被应用程序处理。
因此,对于 Web link 情况,请确保您 return No/false 以便 In-App Messaging SDK 可以将其转发到要在浏览器中加载的系统。您可以通过检查单击按钮后如何触发 appdelegate' url 处理方法来调试此行为。
好的,解决方案是使用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
}
在来自 google
的 in-app messaging 样本中查看更多内容
自从应用内消息发布以来,我就遇到了这个问题。我做 android 部分没有任何问题,但对于 iOS,我无法让按钮工作。感谢这个 post 的洞察力。但是上面单独添加到 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
}
在我的 iOS 项目中,我已经设置了 firebase 应用内消息传递的所有依赖项,并且在单击按钮时我需要将用户带到网页。
横幅和消息已按要求接收到设备中,但按钮操作未打开网页。
请注意,android 应用同样可以正常工作,在浏览器中打开 url 也没有任何问题。
我正在以正确的格式发送 URL 即:https://www.something.com
任何人都可以对此有所了解吗?
确保您的 AppDeletegate 的 application:openURL:sourceApplication:annotation:(iOS 8 岁及以上)和 application:openURL:options:(iOS 9 及以上)returns YES/true 或 NO/false 正确。 In-App Messaging SDK 将检查这些方法中的 return 值,以确定它们是否已被应用程序处理。
因此,对于 Web link 情况,请确保您 return No/false 以便 In-App Messaging SDK 可以将其转发到要在浏览器中加载的系统。您可以通过检查单击按钮后如何触发 appdelegate' url 处理方法来调试此行为。
好的,解决方案是使用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
}
在来自 google
的 in-app messaging 样本中查看更多内容自从应用内消息发布以来,我就遇到了这个问题。我做 android 部分没有任何问题,但对于 iOS,我无法让按钮工作。感谢这个 post 的洞察力。但是上面单独添加到 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
}