Google+ SDK для iOS Add Signin button программно

Что касается G + docs здесь: https://developers.google.com/+/mobile/ios/sign-in

Кнопка входа в систему может быть добавлена ​​с помощью XIB или программно в UIViewController.

У меня есть TableViewController, и я собираюсь добавить кнопку G + Signin в качестве вспомогательного представления строки таблицы:

subtitleCell.accessoryView = self.googlePlusSignInButton; 

где кнопка ввода будет инициализирована следующим образом:

 -(void) setGooglePlusButtons { self.googlePlusSignInButton = [[UIButton buttonWithType:UIButtonTypeCustom] retain]; UIImage *backgroundButtonImage = [UIImage imageNamed:@"bt_search_cancel.png"]; googlePlusSignInButton_.frame = CGRectMake(0.0f, 0.0f, backgroundButtonImage.size.width, backgroundButtonImage.size.height); googlePlusSignInButton_.titleLabel.textColor = [UIColor whiteColor]; googlePlusSignInButton_.titleLabel.font = [UIFont boldSystemFontOfSize:11.0f]; googlePlusSignInButton_.titleLabel.numberOfLines = 2; googlePlusSignInButton_.titleLabel.shadowColor = [UIColor darkGrayColor]; googlePlusSignInButton_.titleLabel.shadowOffset = CGSizeMake(0.0f, -1.0f); [googlePlusSignInButton_ setTitle:NSLocalizedString(@"UI_BUTTONS_LOGIN", @"") forState:UIControlStateNormal]; [googlePlusSignInButton_ setBackgroundImage:backgroundButtonImage forState:UIControlStateNormal]; // Make sure the GPPSignInButton class is linked in because references from // xib file doesn't count. [GPPSignInButton class]; GPPSignIn *signIn = [GPPSignIn sharedInstance]; signIn.delegate = self; signIn.shouldFetchGoogleUserEmail = signIn.shouldFetchGoogleUserEmail; signIn.actions = [NSArray arrayWithObjects: @"http://schemas.google.com/ListenActivity", nil]; } 

Кнопка установлена ​​в viewDidLoad:

 - (void)viewDidLoad { [super viewDidLoad]; [self setGooglePlusButtons]; //... 

UIViewControlled имеет интерфейс для делегата signin:

 @interface MXMSettingsTableViewController () <GPPSignInDelegate> @end 

Похоже, что делегат не вызывается или кнопка с общим знаком не связана с экземпляром контроллера:

 // GPPSignInDelegate - (void)finishedWithAuth:(GTMOAuth2Authentication *)auth error:(NSError *)error { ///.... } 

Я предполагаю, что

 // Make sure the GPPSignInButton class is linked in because references from // xib file doesn't count. [GPPSignInButton class]; 

связывает кнопку экземпляра ViewController:

 // The button that handles Google+ sign-in. @property (retain, nonatomic) GPPSignInButton *googlePlusSignInButton; 

но что-то не так в этой реализации, я не могу понять.

2 Solutions collect form web for “Google+ SDK для iOS Add Signin button программно”

Прежде всего, вы должны вызывать метод sign в действии вашего googlePlusSignInButton

Таким образом, код должен быть:

 -(void) setGooglePlusButtons { self.googlePlusSignInButton = [[UIButton buttonWithType:UIButtonTypeCustom] retain]; UIImage *backgroundButtonImage = [UIImage imageNamed:@"bt_search_cancel.png"]; googlePlusSignInButton_.frame = CGRectMake(0.0f, 0.0f, backgroundButtonImage.size.width, backgroundButtonImage.size.height); googlePlusSignInButton_.titleLabel.textColor = [UIColor whiteColor]; googlePlusSignInButton_.titleLabel.font = [UIFont boldSystemFontOfSize:11.0f]; googlePlusSignInButton_.titleLabel.numberOfLines = 2; googlePlusSignInButton_.titleLabel.shadowColor = [UIColor darkGrayColor]; googlePlusSignInButton_.titleLabel.shadowOffset = CGSizeMake(0.0f, -1.0f); [googlePlusSignInButton_ setTitle:NSLocalizedString(@"UI_BUTTONS_LOGIN", @"") forState:UIControlStateNormal]; [googlePlusSignInButton_ setBackgroundImage:backgroundButtonImage forState:UIControlStateNormal]; [googlePlusSignInButton addTarget:self action:@selector(signInGoogle:) forControlEvents:UIControlEventTouchUpInside]; } 

и знак должен быть таким:

 - (void)signInGoogle { GPPSignIn *signIn = [GPPSignIn sharedInstance]; signIn.delegate = self; signIn.shouldFetchGoogleUserEmail = YES; signIn.clientID = kClientID; signIn.scopes = [NSArray arrayWithObjects:kGTLAuthScopePlusLogin,nil]; signIn.actions = [NSArray arrayWithObjects:@"http://schemas.google.com/ListenActivity",nil]; [signIn authenticate]; } 

В вашем коде отсутствовал [signIn authenticate]; вызовите, plust вам нужно также передать в clientID, который в приведенном выше фрагменте является постоянным значением (вам нужно объявить это)

Несмотря на несколько решений, не было никакой возможности заставить silentAuthentication работать

 - (void)initialize { // Read Google+ deep-link data. [GPPDeepLink setDelegate:self]; [GPPDeepLink readDeepLinkAfterInstall]; // Setup Google+ share dialog. [GPPShare sharedInstance].delegate = self; // Setup Google+ signin [GPPSignIn sharedInstance].clientID = APP_GOOGLEPLUS_APPID; [GPPSignIn sharedInstance].delegate = self; [GPPSignIn sharedInstance].shouldFetchGoogleUserEmail = YES; [GPPSignIn sharedInstance].shouldFetchGoogleUserID = YES; [GPPSignIn sharedInstance].actions = [NSArray arrayWithObjects:[self momentSchemaByType:MXMGooglePlusMomentListen], nil]; [GPPSignIn sharedInstance].scopes = [NSArray arrayWithObjects:kGTLAuthScopePlusLogin, nil]; // defined in GTLPlusConstants.h [[GPPSignIn sharedInstance] trySilentAuthentication]; shareAfterLogin= NO; trackIdToShare = nil; if([[MXMLogger sharedLogger] isDebug]) { NSLog(@"MXMGooglePlusManager initialize login %d keychain %d", [self isGooglePlusLoggedin], [GPPSignIn sharedInstance].hasAuthInKeychain); } } 

Странная вещь, брелок имеет аутентификацию в

 2013-09-13 13:01:35.849 musiXmatch[1090:790b] MXMGooglePlusManager initialize login 0 keychain 1 

но учетная запись не вошла в систему.

Что касается документов здесь

https://developers.google.com/+/mobile/ios/api/interface_g_p_p_sign_in

реализация должна быть правильной.

  • Приложение Facebook приглашает приложение iOS SDK v4.1 сбой при нажатии кнопки приглашения
  • заставка с индикатором активности
  • Не работает капоты FireBase Cocoa
  • Тестирование iOS facebook размещало ссылки на приложения до выпуска в магазине приложений
  • UIViewController.view в размере UINavigationController становится 600x600 на iOS 9 и никогда не менялся
  • Как удалить один эмулятор в NSString
  • AVAudioPlayer с событиями дистанционного управления
  • iOS8 разбился на __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__
  • InputAccessoryView выше UITabBar
  • Firebase Crash Reporting - не все загруженные файлы символов
  • Создать папку с помощью Google Диска SDK iOS
  • Interesting Posts

    SDK для GoogleMaps для iOS – SWIFT 3: при скрытии маркера и добавлении отображения карты назад процессор застревает на 100%

    iPad app – + , вызываемый в транзакции, останавливающей приложение

    Не знаю, как предотвратить нарушения

    Различные типы синтаксиса закрытия в swift – какой из них правильный?

    Не удалось испустить предварительно скомпилированный заголовок для объединения заголовка

    UIActivityViewController в Swift Crashes на iPad

    Определите, где UITextView будет обрезать строку

    malloc_history не может проверить процесс xxxxxx, потому что процесс не существует в iOS

    Обработка очень больших чисел быстродействующих классов

    Отобразить просматриваемый вид из AppDelegate на основе поискового запроса Core Spotlight

    iOS живые двоичные файлы: должна ли каждая арка включать бит-код?

    Автоматическое изменение размера UIButton на основе заголовка – AutoLayout ON

    IOSurfaces – Артефакты в видео и неспособные захватить видео поверхности

    Как проверить доступность сети на iOS неблокируемым способом?

    Связать AVPlayerItem с новым AVPlayer в Swift?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.