internal async Task InitMobileService(bool showSettingsPage, bool showLoginDialog) { if (showSettingsPage) { var settingsView = new SettingsView(this); await MainPage.Navigation.PushModalAsync(settingsView); await settingsView.ShowDialog(); } var authHandler = new AuthHandler(); MobileService = new MobileServiceClient(Settings.Current.MobileAppUrl, new LoggingHandler(true), authHandler); authHandler.Client = MobileService; AuthenticatedUser = MobileService.CurrentUser; await InitLocalStoreAsync(LocalDbFilename); InitLocalTables(); IPlatform platform = DependencyService.Get<IPlatform>(); DataFilesPath = await platform.GetDataFilesPath(); #if __DROID__ && PUSH Droid.GcmService.RegisterWithMobilePushNotifications(); #elif __IOS__ && PUSH iOS.AppDelegate.IsAfterLogin = true; await iOS.AppDelegate.RegisterWithMobilePushNotifications(); #elif __WP__ && PUSH ContosoMoments.WinPhone.App.AcquirePushChannel(App.Instance.MobileService); #endif if (showLoginDialog) { await Utils.PopulateDefaultsAsync(); await DoLoginAsync(); Debug.WriteLine("*** DoLoginAsync complete"); MainPage = new NavigationPage(new AlbumsListView()); } else { // user has already chosen an authentication type, so re-authenticate await AuthHandler.DoLoginAsync(Settings.Current.AuthenticationType); MainPage = new NavigationPage(new AlbumsListView()); } }