Google SignIn sin CocoaPods

Estoy intentando integrar GoogleSign-In para iOS con la documentation que se encuentra aquí: https://developers.google.com/identity/sign-in/ios/start-integrating

¿Cómo puedo hacer esto sin usar cocoapods?

He intentado usar las bibliotecas y encabezados que Cocoapods descarga directamente, pero esto generó muchos problemas. ¿Alguien ha convertido con éxito un Cocoapod en una biblioteca / marco independiente?

El SDK autónomo está disponible aquí ahora: https://developers.google.com/identity/sign-in/ios/sdk/

Como lo mencionan otros carteles, debe agregar los siguientes frameworks dependientes:

  • AddressBook.framework
  • StoreKit.framework
  • SystemConfiguration.framework

También es posible que necesite configurar Other Linker Flags: -ObjC en los pasos de compilation de su proyecto.

Después de una semana de lidiar con esta bestia, quiero actualizar esta respuesta para la versión de Google Sign-In SDK 4.0.0 . Las instrucciones en

https://developers.google.com/identity/sign-in/ios/sdk/

Parece que está mal para la versión 4.0.0. Dicen que solo necesitas vincular

  • GoogleSignIn.framework
  • GoogleSignIn.bundle

(junto con AddressBook.framework , StoreKit.framework y SystemConfiguration.framework por supuesto). Sin embargo, obtendrás mucha desconcertante

Símbolos no definidos para architecture x86_64

errores si eso es todo lo que incluye. El file CHANGELOG.md te acerca a la verdad con esta statement:

Para los usuarios de la distribución de zip individual, ahora se proporcionan múltiples frameworks y todos deben agregarse a un proyecto. Esta descomposition permite más flexibilidad en caso de dependencies duplicadas.

Entonces, en realidad, también debes include:

  • GoogleAppUtilities.framework
  • GoogleAuthUtilities.framework
  • GoogleNetworkingUtilities.framework
  • GoogleSymbolUtilities.framework
  • GoogleUtilities.framework

Entonces, ahora deberías estar dorado, ¿verdad? Como dicen todos los buenos informativos …

¡Pero espera hay mas!

También debe include

  • libz.tbd

Esta respuesta dio la key para include esa biblioteca también. Sin eso, obtendrás el error

selector no reconocido enviado a instancia

pero solo en esta línea de código

 GIDSignIn.shanetworkingInstance().clientID = "MyClientID" 

Si comenta esa línea, el código funcionará bien, incluso con este código todavía allí

 GIDSignIn.shanetworkingInstance().delegate = self 

Para mí, esta fue la parte más engañosa. La mayoría de las respuestas en la web para ese error dirán que necesita establecer OtherLinkerFlag en -ObjC , y estoy seguro de que es una causa común de problemas si no está configurado correctamente o en absoluto, pero en mi caso estaba claramente establecido derecha, además de que la configuration del delegado funcionó, lo que significó que se podrían establecer otras properties de GIDSignIn , ¿por qué no el ID de cliente? Pensé que tal vez mi ID de cliente estaba equivocado de alguna manera y perdí mucho time persiguiendo esa pista falsa.

Todo este dolor de cabeza se puede evitar simplemente usando CocoaPod, pero en mi caso, realmente quería que funcione sin agregar la complejidad que trae CocoaPods, porque también incluyo el SDK de Facebook.

PS encontré este tutorial

http://www.appcoda.com/google-sign-in-how-to/

para estar mucho mejor escrito que el tutorial de Google, especialmente el recordatorio de que necesita usar una UIView y no un UIB para el button de inicio de session de Google. Pasé algún time confundido sobre por qué no pude configurar la class del button en GIDSignInButton hasta que encontré este tutorial. Solo tenga en count que necesitará vincular las bibliotecas de la manera que describí anteriormente en lugar de la forma en que dice el tutorial, ya que es diferente ahora.

También asegúrese de vincular los frameworks dependientes.

  • AddressBook.framework
  • StoreKit.framework
  • SystemConfiguration.framework

Ver relacionados La actualización de Google Sign-In SDK 1.0.0 a 2.0.1 no se puede comstackr en las references de SKStore .