Я пытаюсь реализовать вход Google с помощью этого компонента для xamarin.ios: Вход Google для iOS< /а>
Он отлично работает на эмуляторе, но когда дело доходит до реального устройства, он падает, когда я нажимаю кнопку входа. (iOS 10.2 - эмулятор также использует ту же ОС) У меня есть пользовательская кнопка, которая вызывает метод SignInUser в SignIn.SharedInstance
Сбой с ошибкой ниже (только когда приложение развернуто на устройстве)
Вызвано исключение Objective-C. Имя: NSInvalidArgumentException Причина: uiDelegate должен быть либо |UIViewController| или реализовать |signIn:presentViewController:| и |signIn:dismissViewController:| методы из |GIDSignInUIDelegate|.
Я вызываю функцию ниже, чтобы инициализировать GoogleSignIn в методе FinishedLaunching AppDelegate.cs.
public void Configure()
{
NSError configureError;
Context.SharedInstance.Configure(out configureError);
if (configureError != null)
{
// If something went wrong, assign the clientID manually
Console.WriteLine("Error configuring the Google context: {0}", configureError);
SignIn.SharedInstance.ClientID = googleClientId;
}
SignIn.SharedInstance.Delegate = this;
SignIn.SharedInstance.UIDelegate = new GoogleSignInUIDelegate();
}
Вот моя реализация ISignInUIDelegate():
class GoogleSignInUIDelegate : SignInUIDelegate
{
public override void WillDispatch(SignIn signIn, NSError error)
{
}
public override void PresentViewController(SignIn signIn, UIViewController viewController)
{
UIApplication.SharedApplication.KeyWindow.RootViewController.PresentViewController(viewController, true, null);
}
public override void DismissViewController(SignIn signIn, UIViewController viewController)
{
UIApplication.SharedApplication.KeyWindow.RootViewController.DismissViewController(true, null);
}
}
Таким образом, эмулятор, похоже, знает, что методы реализованы, но не устройство. Любая идея, что я делаю неправильно здесь?