【问题标题】:Firebase dynamic link is not resolving in Xamarin Forms iOSFirebase 动态链接未在 Xamarin Forms iOS 中解析
【发布时间】:2020-06-02 20:35:12
【问题描述】:

我正在将 Xamarin.Firebase.iOS.DynamicLinks 2.3.1.1 用于动态链接,之前它工作正常,但最近它无法正常工作。尝试提取短链接时,长链接为空。有谁知道为什么它不起作用?

我已经更新到最新版本 (4.0.1) 并且工作正常。它不适用于任何以前版本的 NuGet 包。

【问题讨论】:

  • 面临同样的问题...由于链接本机链接错误,我无法使用 4.0.1 进行测试。升级时您是否遇到过本机链接错误?我也在运行 Birdie.FirebasePushNotification nuget
  • 我的生产应用也突然停止工作。
  • @GisonGeorge 你找到解决方案了吗?

标签: firebase xamarin.forms xamarin.ios nuget-package firebase-dynamic-links


【解决方案1】:

回答你的问题。动态链接在 Firebase 端无法使用,他们选择停止使用旧库或由于最新的 IOS 更新 13.3。我这样说是因为我正在生产的应用程序的链接工作正常,然后突然停止工作。

我当前的解决方案是将 Xamarin.Firebase.iOS.DynamicLinks 更新为 (4.0.1),我能够再次使用其参数处理长 url。

如果您有其他库(例如 Firestore、Analytics、Notifications 等),请注意几点。 您可能会遇到链接器失败异常。它们的发生是因为

Xamarin.Firebase.iOS.DynamicLinks (3.0.2.1) and prior depended on
Xamarin.Firebase.iOS.Core (>= 5.1.3) and the working
Xamarin.Firebase.iOS.DynamicLinks (4.0.1.1) references 
Xamarin.Firebase.iOS.Core (>= 6.1.0.1) Somehow they reference methods that are no longer available.

通过检查每个 nuGet 并手动安装引用 ...iOS.Core (>= 6.1.0.1) 的各自 nuGet 来修复链接失败:例如: 如果您使用 Xamarin.Firebase.iOS.Storage (2.0.0) 手动安装

Xamarin.Firebase.iOS.Storage (3.4.0.1) because 
Xamarin.Firebase.iOS.Storage (2.0.0) references
Xamarin.Firebase.iOS.Storage (>= 3.0.2) which in turn references:
Xamarin.Firebase.iOS.Core (>= 5.1.3) and it will cause native linking failed

最后,在我的情况下,Xamarin.Firebase.iOS.DynamicLinks (4.0.1.1) 将使您生成 ShortLinks 的方法也停止工作:

In Xamarin.Firebase.iOS.DynamicLinks (3.0.2.1) you would build your 
DynamicLinkComponents with:
var shareLink = DynamicLinkComponents.FromLink(linkParameters, 
"YOUR_DOMAIN.page.link");

Xamarin.Firebase.iOS.DynamicLinks (4.0.1.1) recomends you use 
DynamicLinkComponents.Create(YOURlinkParameters, "YOUR_DOMAIN.page.link");
but it would return a null DynamicLinkComponents so i fixed by doing:
var shareLink = new DynamicLinkComponents();
shareLink.Link = YOURlinkParameters;
shareLink.Domain = "https://YOUR_DOMAIN.page.link";

我花了一周的时间试图解决这个错误,真心希望其他人能够看到这一点并为您节省宝贵的时间。

【讨论】:

  • 是否有任何关于不支持旧版本的 firebase 的文档?
  • 我更倾向于 IOS 更新是问题的原因。由于 IOS 有它自己的通用链接处理程序,他们所做的任何更改都会影响它。也因为我的生产 Android 应用程序运行没有问题,他们使用相同的 Nuget
【解决方案2】:

让 Xamarin.Firebase.iOS.DynamicLinks 3.0.2.1 工作(也应该在 2.3.1.1 上工作)的解决方法是让 IOS 设备在浏览器中打开链接,然后将它们重定向回应用程序.

流程是动态链接 > 应用 [短链接] > 浏览器 > 带有 [长链接] 的应用。

动态链接格式为“domain.page.link/ShortSequence”,长链接参数格式为“domain.page.link/?”。你可以寻找'?决定天气处理 url 或重定向用户如下:

public override bool ContinueUserActivity(UIApplication application, 
NSUserActivity userActivity, UIApplicationRestorationHandler completionHandler)
{
 if (userActivity.ActivityType == NSUserActivityType.BrowsingWeb)
   {
    var sharedLink = userActivity.WebPageUrl;
    if (!sharedLink.ToString().Contains("domain.page.link/?")){
       await Launcher.OpenAsync(new Uri(sharedLink.ToString()));
       return;
    }
    var handled = DynamicLinks.SharedInstance.FromUniversalLinkUrl(sharedLink);
    //Process your DynamicLink parameters
}
return true;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多