Я работаю над приложением Xamarin.Forms, которое использует проверку подлинности Firebase. Чтобы заставить Firebase работать, мне нужно создать два разных файла для конкретной платформы (iOS и Android) для обработки задач аутентификации (таких как CreateNewUser и Login). У меня есть страница Xamarin.Forms под названием «Страница оплаты», которая просит пользователя ввести свой адрес электронной почты и пароль, и отправка этой страницы запускает DependencyService для создания учетной записи пользователя. На странице оплаты у меня также есть небольшое окно, которое появится, если что-то пойдет не так с процессом создания учетной записи (конкретно в этом случае, если в базе данных аутентификации уже существует дубликат электронной почты).
Мой вопрос: если один из файлов зависимостей для iOS или Android перехватывает «ERROR_EMAIL_ALREADY_IN_USE», как я могу настроить отображение диалогового окна ошибки на странице оплаты (другими словами, установить для его свойства «isVisible» значение «true»). Я пробовал несколько вещей, но до сих пор не могу ссылаться на элементы в PaymentPage (страница Xamarin.Forms) со страницы проверки подлинности Xamarin.iOS.
Мой код зависимости выглядит следующим образом:
public void CreateNewUser(string email, string password, System.Collections.Specialized.NameValueCollection userData)
{
Auth.DefaultInstance.CreateUser(email, password, HandleAuthDataResultHandler);
}
async void HandleAuthDataResultHandler(AuthDataResult authResult, Foundation.NSError error)
{
if (error.UserInfo["error_name"].ToString() == "ERROR_EMAIL_ALREADY_IN_USE")
{
//What goes here to modify the Xamarin.Forms page??
}
else { }
}
Если это поможет, вот мой метод CreateNewUser в моей зависимости iOS: } async void HandleAuthDataResultHandler(AuthDataResult authResult, ошибка Foundation.NSError) { if (error.UserInfo["error_name"].ToString() == "ERROR_EMAIL_ALREADY_IN_USE") { //Что здесь происходит?? } еще { }}
О, теперь ваши вопросы имеют больше смысла. MessagingCenter может быть хорошим вариантом docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/…

в вашем коде XAML позади
try {
// call your dependency service
} catch (Exception ex)
{
// update the UI
}
то в вашем методе DependencyService он должен генерировать исключение при возникновении ошибки
MessagingCenter может быть хорошим вариантом https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/messaging-center
Вы можете подписаться на свою модель представления и опубликовать сообщение от обработчика с результатом.
Какой будет синтаксис? Я разместил следующий код на своей странице оплаты, и он выдает ошибку MessagingCenter.Subscribe < DependencyService.Get<IFirebaseAuthenticator>() >
DependencyService.Get<IFirebaseAuthenticator>() вернет экземпляр, а не тип, хотя я никогда не пробовал его с использованием интерфейса, я думаю, это MessagingCenter.Subscribe <IFirebaseAuthenticator> должен работать
Трудно сказать, не видя вашего сервиса, но, вероятно, выход будет заключаться в том, что этот сервис возвращает какой-то результат, где ваша модель представления может отражать эту ситуацию. Таким образом, вы можете разделить обязанности. Ваш сервис говорит, как прошло создание пользователя, и ваша модель представления отражает это в представлении.