I'm attempting to use the Google Sign In SDK Component within a Xamarin.Forms application, however, I am unable to get the button click to actually display the Google Sign In SDK Login View.
I've attached the normal iOS sample solution that works [GoogleSignIn.zip]. I've also attached a Forms sample solution that uses a PageRenderer that does not work [GoogleSignInForms.zip]. I created it following this Xamarin Blog post: https://blog.xamarin.com/using-custom-uiviewcontrollers-in-xamarin-forms-on-ios/ that does not work.
The SignIn functionality requires a UIViewController to implement the ISignInUIDelegate interface which is why I am using the PageRenderer.
I'm referencing the documentation included with the component sample and the documentation from Google located here: https://developers.google.com/identity/sign-in/ios/sign-in
Any help is greatly appreciated as I've tried numerous ways to get this working and have been unable to get it to work.
Here's the guts of the PageRenderer:
using Xamarin.Forms;
using CoreGraphics;
using Google.SignIn;
using GoogleSignInForms.Views;
using GoogleSignInForms.iOS.Renderers;
[assembly:ExportRenderer(typeof(GoogleSignInPage), typeof(GoogleSignInPageRenderer))]
namespace GoogleSignInForms.iOS.Renderers
{
public class GoogleSignInPageRenderer : Xamarin.Forms.Platform.iOS.PageRenderer, ISignInUIDelegate
{
private SignInButton signinButton;
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
signinButton = new SignInButton();
signinButton.Frame = new CGRect(20, 100, 150, 44);
View.AddSubview(signinButton);
SignIn.SharedInstance.UIDelegate = this;
SignIn.SharedInstance.SignedIn += (sender, e) => {
// Perform any operations on signed in user here.
if (e.User != null && e.Error == null)
{
}
};
SignIn.SharedInstance.Disconnected += (sender, e) => {
// Perform any operations when the user disconnects from app here.
};
}
}
}