Как обрабатывать настраиваемую схему URL-адресов в Xamarin Forms

У меня есть приложение Xamarin Forms Shell, но в данный момент я сосредоточен на платформе ios.

Пример пользовательского URL: myawesomeapp:report?id=22

В iOS я добавил пользовательскую схему URL-адресов «myawesomeapp» в info.plist. И теперь нажатие на пользовательский URL-адрес успешно запускает мое приложение, и OpenUrl в AppDelegate получает удар.

введите здесь описание изображения

Но как я могу обработать id=22, чтобы перейти к этой конкретной записи?

Моя структура приложения использует AppShell. У меня есть ItemsPage.xaml, в котором перечислены отчеты, и выбор одного из них приведет к появлению этого отчета в ItemDetailPage.xaml. Это поток, который я хочу имитировать при переходе по пользовательскому URL-адресу.

Заранее спасибо.


person Steven Manuel    schedule 21.07.2020    source источник


Ответы (1)


Идеальным подходом было бы создание метода в вашем App.xaml.cs, который будет принимать данный запрос, а затем вы можете вызвать этот метод из OpenUrl.

Вот пример:

App.xaml.cs

public void ParseAndPerformNavigation(string query)
{
   //Do string operation and get the parameter
   //Perform Navigation
}

Ваш обновленный OpenUrl должен выглядеть примерно так:

public override bool OpenUrl(UIApplication app, NSUrl url, NSDictionary options)
{
   var App = (App)Xamarin.Forms.Application.Current;
   App.ParseAndPerformNavigation(url.AbsoluteString);
   return false;
}
person Dishant    schedule 21.07.2020
comment
спасибо, это работает для меня. Что касается OpenUrl и HandleOpenURL, для меня все наоборот. VS говорит, что не используйте HandleOpenURL, потому что он устарел. - person Steven Manuel; 22.07.2020
comment
Да, ты прав. На самом деле существует две версии OpenURL. Это-› developer.apple.com/documentation/uikit/uiapplication/ версия устарела. Так что тот, который вы используете, правильный. - person Dishant; 22.07.2020