Динамическая ссылка Firebase c не разрешается в Xamarin Forms iOS - PullRequest
2 голосов
/ 18 февраля 2020

Я использую Xamarin.Firebase. iOS .DynamicLinks 2.3.1.1 для динамических c ссылок. Ранее это работало нормально, но в последнее время не работает. При попытке извлечь короткую ссылку длинная ссылка становится нулевой. Кто-нибудь знает, почему он не работает?

Я обновился до последней версии (4.0.1) и работает нормально. Не работает ни одна из предыдущих версий пакетов NuGet.

Ответы [ 2 ]

1 голос
/ 22 февраля 2020

Чтобы ответить на ваш вопрос. Ссылки Dynami c не работают ни на стороне Firebase, которые решили прекратить свою старую библиотеку, либо из-за новейшего IOS обновления 13.3. Я говорю это потому, что в моем приложении, работающем в данный момент, ссылки работали нормально, а потом вдруг перестали работать.

Мое текущее решение состояло в том, чтобы обновить Xamarin.Firebase. iOS .DynamicLinks до (4.0.1), и я был в состоянии еще раз обработать длинный URL с его параметрами.

Несколько замечаний, если у вас есть другие библиотеки, такие как Firestore, Analytics, Notifications et c. Вы можете столкнуться с ошибками компоновщика. Они происходят из-за того, что

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.

Ошибка связывания исправлена ​​путем проверки каждого из ваших nuGets и ручной установки соответствующих им nuGets, которые ссылаются на * iOS .Core (> = 6.1.0.1): Например: если вы используете 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";

Я провел неделю, пытаясь устранить эту ошибку, и очень надеюсь, что другие смогут увидеть это и сэкономить ваше драгоценное время.

0 голосов
/ 26 февраля 2020

Чтобы обойти Xamarin.Firebase. iOS .DynamicLinks 3.0.2.1 работает (должно работать и на 2.3.1.1), необходимо, чтобы устройство IOS открыло ссылку в браузере, которая затем перенаправит их вернуться в приложение.

Поток Dynami c ссылка> Приложение [короткая ссылка]> Браузер> Приложение с [длинная ссылка].

Динамические c ссылки имеют формат «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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...