gpt4 book ai didi

ios - 无法从 Firebase 缩短的动态链接 URL 检索动态链接

转载 作者:行者123 更新时间:2023-12-01 21:34:58 25 4
gpt4 key购买 nike

通过 WhatsApp 打开时,无法从使用 Firebase 动态链接创建的短网址中检索动态链接。

当通过 Skype 打开时,它会显示预览屏幕,但当使用 WhatsApp 单击 URL 时,它会直接打开应用程序,而不打开预览屏幕,之后我无法检索动态链接。我使用以下代码来创建和缩短动态链接:

guard let link = URL(string: "https://example.com/abc/\(id)") else { return }
let dynamicLinksDomainURIPrefix = "https://myexample.online"
let linkBuilder = DynamicLinkComponents(link: link, domainURIPrefix: dynamicLinksDomainURIPrefix)

linkBuilder?.iOSParameters = DynamicLinkIOSParameters(bundleID: "bundleID")
linkBuilder?.iOSParameters?.appStoreID = "appStoreID"
linkBuilder?.androidParameters = DynamicLinkAndroidParameters(packageName: "packageName")
linkBuilder?.options = DynamicLinkComponentsOptions()
linkBuilder?.options?.pathLength = .short

guard let longDynamicLink = linkBuilder?.url else {
Alert.HideProgressHud(Onview: self.view)
return
}
DispatchQueue.main.async {

DynamicLinkComponents.shortenURL(longDynamicLink, options: linkBuilder?.options) { url, warnings, error in
let url = url
self.openactivityPickerForSharing(capturedImage: capturedImage, url: url)
}
}

在 AppDelegate 中,我使用以下函数接收此消息:


if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) {
// Handle the deep link. For example, show the deep-linked content or
// apply a promotional offer to the user's account.
// [START_EXCLUDE]
// In this sample, we just open an alert.
handleDynamicLink(dynamicLink)
// [END_EXCLUDE]
return true
}
return application(app, open: url,sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,annotation: "")
}

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) {
// Handle the deep link. For example, show the deep-linked content or
// apply a promotional offer to the user's account.
// [START_EXCLUDE]
// In this sample, we just open an alert.
handleDynamicLink(dynamicLink)
// [END_EXCLUDE]
return true
}
// [START_EXCLUDE silent]
// Show the deep link that the app was called with.
//showDeepLinkAlertView(withMessage: "openURL:\n\(url)")
// [END_EXCLUDE]
return false
}
// [END openurl]
// [START continueuseractivity]
func application(_ application: UIApplication, continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
let handled = DynamicLinks.dynamicLinks().handleUniversalLink(userActivity.webpageURL!) { (dynamiclink, error) in
// [START_EXCLUDE]
//self.showDeepLinkAlertView(withMessage: "\(dynamiclink)")
// [END_EXCLUDE]
}
//handled is always returned always
// [START_EXCLUDE silent]
if !handled {
//Handled the URL received in Case of Skype.
}
// [END_EXCLUDE]
return handled
}

func handleDynamicLink(_ dynamicLink: DynamicLink) {
let matchConfidence: String
if dynamicLink.matchType == .weak {
matchConfidence = "Weak"
} else {
matchConfidence = "Strong"
}
let message = "App URL: \(dynamicLink.url?.absoluteString ?? "")\n" +
"Match Confidence: \(matchConfidence)\nMinimum App Version: \(dynamicLink.minimumAppVersion ?? "")"
}

此后,当我点击 WhatsApp 上共享的缩短 URL 时,我收到的 URL 是 Firbase Dynamic Links 创建的缩短 URL,而不是实际的 URL

最佳答案

在示例中,Firebase 从 useractivity.webpageURL 读取 URL。如果您从闭包中的 dynamicLink.url 读取 url,您将看到原始的动态链接。

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

print("This is the full length url: \(dynamiclink.url)")
}
}

关于ios - 无法从 Firebase 缩短的动态链接 URL 检索动态链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58797805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com