Edit: progetto di esempio che illustra incidente può essere trovato qui: https://github.com/rringham/brokenazurexamforms - è necessario impostare il proprio Azure App Servizio URL:Perché Navigation.PushAsync si arresta in modo anomalo dopo Azure MobileServiceClient LoginAsync()?
- src/BrokenAzureForms/Droid/Servizi/utente/DroidUserService cs
- src/BrokenAzureForms/iOS/Servizi/utente/IosUserService.cs
Sto riscontrando l'arresto di Xamarin Forms Navigation.PushAsync()
su Android quando tento di usarlo dopo l' di autenticazione con Azure MobileServiceClient
. Questo crash è isolato su Android - non succede su iOS.
Ecco la messa a punto - ho una base NavigationPage
come la mia pagina applicazione principale:
MainPage = new NavigationPage(new LoginPage());
Sul mio LoginPage
, ho l'autenticazione utilizzando una classe -injected DependencyService
che esegue l'autenticazione nel mio progetto Android:
private async void OnMicrosoftAccountTapped(object sender, EventArgs args)
{
IUserService userService = DependencyService.Get<IUserService>();
bool authenticated = await userService.LoginWithAzureAD();
if (authenticated)
{
await Navigation.PushAsync(new HomePage(), false);
}
}
Nel mio Android attuazione IUserService
, faccio questo (più o meno esattamente quali forme Azure/Xamarin tutorial mostrano):
public async Task<bool> LoginWithAzureAD()
{
try
{
_user = await _client.LoginAsync(Xamarin.Forms.Forms.Context, MobileServiceAuthenticationProvider.WindowsAzureActiveDirectory);
}
catch (Exception)
{
return false;
}
return true;
}
Ecco dove le cose vanno a pezzi. Al termine di LoginWithAzureAD()
, il controllo riprende in OnMicrosoftAccountTapped()
; poi andiamo a chiamare Navigation.PushAsync()
, e del braccio - l'applicazione si blocca, con dettagli molto poco per andare avanti:
Tutto quello che posso pensare è che Azure MobileServiceClient
sta facendo qualcosa piuttosto funky con Xamarin.Forms.Forms.Context
internamente, perché se Rimuovere la chiamata a await userService.LoginWithAzureAD()
, la chiamata a Navigation.PushAsync()
funziona senza problemi. Qualcosa in MobileServiceClient è rotto o sta rompendo qualcosa in Xamarin Forms.
Qualcuno vede qualcosa di simile?
Ciao @ Rob Ringham, siete riusciti a ottenere questo risolto in fine? Questo è esattamente il problema che sto affrontando in questo momento e l'ho inchiodato alla stessa chiamata che avevi. Grazie. –