Notas de la versión del SDK de Acceso con Google para iOS y macOS

No publicado

  • Se corrigió una falla que se producía cuando una respuesta de error del servidor incluía un valor que no era una cadena en su clave error. El controlador de errores de EMM envió -hasPrefix: a cualquier valor que estuviera presente, lo que generó una excepción de selector no reconocido en un número, array u objeto.
  • Se corrigió un problema por el que se descartaban un nonce personalizado y un token claims solicitado cuando se continuaba con un acceso después de reiniciar la app de política de dispositivo.
  • Se agregó compatibilidad con Swift Package Manager para AppCheckCore 12.x, lo que habilita la compatibilidad con Firebase 13. Las instalaciones de CocoaPods siguen restringidas a AppCheckCore 11.x. (#626)
  • Se corrigió un error por el que una preparación fallida de la Verificación de aplicaciones se registraba como exitosa, lo que hacía que las llamadas posteriores a -[GIDSignIn configureWithCompletion:] informaran un resultado exitoso sin volver a intentarlo. (#626)
  • Con AppCheckCore 11.x (incluidas todas las instalaciones de CocoaPods), un proveedor personalizado de Verificación de aplicaciones que no devuelve un token ni un error ahora se trata como un éxito en lugar de fallar con kGIDAppCheckUnexpectedError. (#626)
  • Se corrigió una condición de carrera de datos en los tokens de GIDGoogleUser. Las actualizaciones simultáneas de tokens podrían escribir los tokens de acceso, actualización y de ID desde diferentes subprocesos a la vez, y los lectores podrían observar un conjunto actualizado parcialmente. Los tres tokens ahora se publican juntos como una instantánea.
  • accessToken, refreshToken y idToken de GIDGoogleUser ahora se derivan de esa instantánea, por lo que los observadores de par clave-valor de cualquiera de ellos reciben una notificación cada vez que cambia alguno de ellos, no solo cuando cambia el valor de esa propiedad.
  • Los observadores de par clave-valor de esas propiedades reciben notificaciones mientras GIDGoogleUser mantiene su bloqueo interno. Llamar de nuevo al mismo usuario desde el observador está bien, pero un observador no debe esperar de forma síncrona (por ejemplo, con dispatch_sync) en otro subproceso que esté actualizando al mismo usuario.
  • Se corrigió un problema por el que se suprimían los diálogos de corrección de EMM durante el resto de la vida útil de la app después de que se producía un solo error mientras no había ninguna ventana clave disponible. La marca pending-dialog ahora se borra en cada ruta de salida, y su escritura de borrado se sincroniza para que coincida con la lectura.
  • Se corrigió un problema por el que, a veces, una solicitud de token que fallaba con un error de EMM se informaba con el error de OAuth subyacente en lugar de kGIDSignInErrorCodeEMM cuando no se podía presentar un diálogo de solución.
  • Se corrigió un error de EMM que se producía cuando ya se mostraba un diálogo de solución y se informaba como kGIDSignInErrorCodeUnknown (o como el error de OAuth subyacente, para una solicitud de token) en lugar de kGIDSignInErrorCodeEMM. No se muestra un segundo diálogo.

10.0.0

  • CAMBIO IMPORTANTE: Se actualizó a AppAuth 3.0.0 y GTMAppAuth 6.0.0, lo que aumenta los objetivos de implementación mínimos a iOS 15.0 y macOS 12.0, amplía la dependencia GTMSessionFetcher para permitir 4.x y 5.x, y cambia el nombre del manifiesto de Swift Package Manager específico de la versión a Package@swift-5.7.swift. Los proyectos que deben seguir admitiendo versiones anteriores del SO deben permanecer en GoogleSignIn 9.2.0. (#628)
  • Se agregó GIDSignIn.wrapperIdentifier para que los SDKs que incorporan Acceso con Google puedan identificarse en los registros de diagnóstico de Google a través de un nuevo parámetro gidwrapper. Es opcional y el comportamiento preexistente no cambia. (#625)
  • Se actualizó el ícono del botón de acceso a la G de Google con gradiente (#633).
  • Se fijaron los nombres de Swift de los métodos de fábrica de GIDClaim con anotaciones NS_SWIFT_NAME explícitas; los nombres de Swift importados no se modificaron (#627).
  • Usa NSURLComponents para codificar tokens de forma correcta (#618).
  • Se corrigió una falla en additionalTokenRefreshParameters cuando emmSupport es nil (#608).
  • Interno
    • Se consolidaron los parámetros de registro del SDK para prepararse para los nuevos (#616).
    • Se corrigió swift-button-functional-test (#614).
    • Se corrigió la importación de SignInSample y se agregó la muestra a la CI (#632).
    • Se agregaron trabajos de vista previa de Xcode 27 sin bloqueo a la CI (#629).
    • Aumenta los destinos de implementación del Podfile de muestra para Xcode 27 (#634)
    • Se aumentaron las dependencias del grupo de bundler (#594, #630).

9.2.0

  • Expone la fecha de vencimiento del token de actualización (#577).
  • Se agregó compatibilidad para solicitar la reclamación amr (referencias de métodos de autenticación) (#600).
  • Se quitaron las entradas del llavero en una instalación nueva (#567).
  • Se actualizó la dependencia mínima de AppAuth-iOS a la versión 2.1.0 (#603).
  • Se corrigió el manejo de paquetes opcionales para cadenas localizadas (#373).
  • Incluye todos los encabezados públicos de forma incondicional en el encabezado general (#595)
  • Se movió la importación de GIDSignInButton fuera de la compilación condicional (#591).
  • Interno
    • Se corrigieron las advertencias de baja de Swift Package Manager (#579).
    • Se mejoró el comentario del documento para GIDSignInButtonStyle (#204).
    • Resuelve la advertencia de contenido secundario sin asignar en el catálogo de activos de AppIcon (#348)
    • Refactoriza el flujo de trabajo de GitHub Actions (#580)
    • Se actualizaron las acciones de GitHub a las versiones más recientes para que sean compatibles con Node 24 (#592, #593).

9.1.0

  • Permite solicitar claims (actualmente, solo auth_time) a través de los métodos de acceso (#550, #552, #553 y #569).
  • Se actualizaron los métodos addScopes: en GIDSignIn para incluir el claims solicitado anteriormente (#557).
  • Interno
    • Se asigna a keychainStore lo antes posible en el inicializador (#540).
    • Se agregó compatibilidad con Swift 6 (#543, #544 y #546).
    • Se actualizaron los flujos de trabajo de GitHub Actions (#545, #570).
    • Actualiza la app de ejemplo de DaysUntilBirthday para que admita la reclamación de auth_time (#555)
    • Se cambió el nombre de tokenClaims a claims en todo el código (#568).

9.0.0

  • Se permite proporcionar un nonce personalizado a través de GSI a AppAuth (#402, #476).
  • Se corrigió el código de error no válido en GIDSignIn (#472).
  • Se agregó compatibilidad con GTMAppAuth 5 en macOS (#522).
  • Se corrigieron errores de migración de protección de datos (#533).
  • Interno
    • Se agregó AppAuthCore como dependencia explícita (#470).
    • Se actualizó el simulador de iPhone de la versión 14 a la 15 (#494).
    • Se corrigió la prueba de integración del botón de Swift (#497).
    • Actualiza el ejecutor a macos-13 (#498)
    • Se actualizó scorecards.yml para usar upload-artifact@v4.6.2 (#516).
    • Se actualizaron las dependencias de AppAuth y GTMAppAuth (#517, #521).
    • Se corrigieron las pruebas de integración de Swift para un usuario recurrente (#518).
    • Se actualizó .gitignore para incluir .build y Package.resolved (#520).
    • Se actualizó GIDSignInTest para configurar y anular correctamente NSUserDefaults (#527).

8.0.0

  • Versión general que agrega compatibilidad con la Verificación de aplicaciones de Firebase para establecer la integridad de tu aplicación cuando accedes con Google
  • Se actualizó la compatibilidad mínima con iOS a iOS 12 (#445).
  • Interno
    • Se actualizó la dependencia de AppCheckCore a la versión 11.0 (#454).
    • Se agregó el retorno de instancetype al ayudante de pruebas (#393).
    • Se quitó la importación modular de GTMSessionFetcher (#403).
    • Se actualizó activesupport de la versión 5.2.5 a la 5.2.8.1 en el grupo de bundler (#429).
    • Quitar el ejecutor macos-11 obsoleto (#447)
    • Se actualizó el uso de la API de archivado obsoleta en las pruebas (#449).

7.1.0-fac-beta-1.1.0

  • Versión beta que admite tokens de Verificación de aplicaciones de Firebase que se usan para establecer la integridad de tu aplicación cuando se accede con Google
  • Se agregó compatibilidad con el manifiesto de privacidad lanzado en la v7.1.0.
  • Interno

7.1.0

  • Se actualizó a Swift 5.0 en el pod GoogleSignInSwiftSupport (#317).
  • Actualizaciones de la documentación (#351, #372)
  • Agrega un manifiesto de privacidad (#382)
  • Interno
    • Se corrigió un error de ortografía en SFSafariViewController (#291).
    • Se corrigió el uso de OCMock en la prueba de unidades (#298).
    • Usa el nuevo protocolo de delegado de GTMAppAuth 4.0.0 (#299).
    • Asegúrate de que completion no sea nulo antes de llamar a -[GIDSignIn restorePreviousSignIn:] (#301).
    • Se quitó el ejecutor macos-11 en los flujos de trabajo de GitHub (#302).
    • Se actualizó la referencia del nombre del botón para que se aprueben las pruebas de automatización de la IU (#308).

7.1.0-fac-beta-1.0.0

  • Versión beta que admite tokens de Verificación de aplicaciones de Firebase que se usan para establecer la integridad de tu aplicación cuando se accede con Google
  • Interno
    • Se actualizó la versión mínima de iOS del Podfile de SignInSample (#355).
    • Se actualizó el destino de la prueba de unidades de AppCheckExample para que se apruebe durante la integración continua (#356).

7.1.0-fac-eap-1.0.0

  • Versión del Programa de acceso anticipado (EAP) que admite tokens de Verificación de aplicaciones de Firebase que se usan para establecer la integridad de tu aplicación cuando accedes con Google
  • Interno
    • Se corrigió un error de ortografía en SFSafariViewController (#291).
    • Se quitó el ejecutor macos-11 en los flujos de trabajo de GitHub (#302).
    • Se actualizó la referencia del nombre del botón para que se aprueben las pruebas de automatización de la IU (#308).
    • Asegúrate de que completion no sea nulo antes de llamar a -[GIDSignIn restorePreviousSignIn:] (#301).
    • Usa el nuevo protocolo de delegado de GTMAppAuth 4.0.0 (#299)

7.0.0

  • Ahora, toda la configuración se puede proporcionar a través de tu archivo Info.plist. (#228)
    • Usa las siguientes claves en pares <key>KEY</key><string>VALUE</string> para configurar el SDK:
      • GIDClientID (obligatorio)
      • GIDServerClientID (opcional)
      • GIDHostedDomain (opcional)
      • GIDOpenIDRealm (opcional)
  • Compatibilidad con la simultaneidad de Swift. (#187)
  • Mejoras en la plataforma de la API (#249, #228, #187)
    • GIDSignIn
      • Nueva propiedad configuration
      • Se quitaron los argumentos Configuration: de los métodos signIn:.
      • Se quitó addScopes: y se agregó a GIDGoogleUser.
      • Se cambiaron los nombres de los argumentos callback: a completion: para los métodos asíncronos que toman bloques.
    • GIDGoogleUser
      • Nueva propiedad configuration.
      • Se movió el nuevo método addScopes: de GIDSignIn.
      • Se quitó la propiedad authentication y se reemplazó por lo siguiente:
        • Nueva propiedad accessToken.
        • Nueva propiedad refreshToken
        • Nueva propiedad idToken
        • Nueva propiedad fetcherAuthorizer.
        • Nuevo método refreshTokensIfNeededWithCompletion:
    • Se agregó la nueva clase GIDToken para representar los tokens de acceso, actualización y de ID en GIDGoogleUser.
    • Se agregó la nueva clase GIDSignInResult para representar el resultado de un flujo signIn o addScopes exitoso.
    • Se quitaron las definiciones de tipo de bloque GIDSignInCallback, GIDDisconnectCallback y GIDAuthenticationAction.

6.2.4

  • Se actualizó la dependencia GTMSessionFetcher para permitir las versiones 2.x. (#207)

6.2.3

  • Se corrigió la carga de recursos en GoogleSignInSwift con use_frameworks! de CocoaPods. (#197)
  • Se evitaron los errores de compilación de GoogleSignInSwift en ciertas situaciones cuando se usa Swift Package Manager. (#166)

6.2.2

  • Se evitaron los errores de compilación de GoogleSignInSwift cuando se usa Swift Package Manager. (#157)
  • Se evita un error de compilación en Xcode 12 y versiones anteriores. (#158)

6.2.1

  • Usa GoogleSignInSwiftSupport como el nombre del CocoaPod de compatibilidad con Swift. (#137)

6.2.0

  • Compatibilidad con macOS (#104)
  • Se agregó un botón "Acceder con Google" de SwiftUI. (#103)
  • Se agregó la capacidad de solicitar permisos adicionales en el momento de acceso. (#30)
  • Se corrigieron varios problemas. (#87, #106)

6.1.0

  • Nueva app de ejemplo de Swift que demuestra el uso de SwiftUI (#63)
  • Compatibilidad con Mac Catalyst
  • Se realizaron mejoras en la implementación de addScopes. (#68, #70)

6.0.2

  • Asegúrate de que las importaciones de módulos se puedan usar cuando se compilen como una biblioteca. (#53)

6.0.1

  • Se corrigieron las devoluciones de llamada anidadas que no se llamaban para los métodos signIn y addScopes. (#29)

6.0.0

  • El Acceso con Google para iOS ahora es de código abierto.
  • Compatibilidad con Swift Package Manager
  • Se agregó compatibilidad con Simulator en Macs con M1.
  • Actualizaciones de la plataforma de la API
    • GIDSignIn
      • sharedInstance ahora es una propiedad de clase.
      • signIn ahora es signInWithConfiguration:presentingViewController:callback: y siempre solicita permisos de perfil básicos.
      • addScopes:presentingViewController:callback: es la nueva forma de agregar permisos más allá del perfil básico a un usuario que accedió a su cuenta.
      • restorePreviousSignIn ahora es restorePreviousSignInWithCallback:
      • disconnect ahora es disconnectWithCallback:
      • Se quitó el protocolo GIDSignInDelegate para dar prioridad a los bloques GIDSignInCallback y GIDDisconnectCallback.
      • Todas las propiedades de configuración del flujo de acceso se movieron a GIDConfiguration.
    • Se agregó la clase GIDConfiguration para representar la configuración necesaria para que un usuario acceda.
    • GIDAuthentication
      • getTokensWithHandler: ahora es doWithFreshTokens:
      • Se cambió el nombre de la definición de tipo GIDAuthenticationHandler a GIDAuthenticationAction.
      • Se quitó refreshTokensWithHandler:. En su lugar, usa doWithFreshTokens:.
    • GIDSignInButton ya no realiza llamadas a GIDSignIn de forma interna y deberá conectarse a un IBAction o similar para que puedas llamar a signInWithConfiguration:presentingViewController:callback: para iniciar un flujo de acceso.

5.0.2

  • Se corrigió el código de error incorrecto que se enviaba a signIn:didSignInForUser:withError: cuando el usuario cancelaba el cuadro de diálogo de consentimiento de iOS durante el flujo de acceso.

5.0.1

  • Se solucionó un problema por el que el flujo de acceso no se podía iniciar correctamente en iOS 13.
  • La distribución ZIP requiere Xcode 11 o una versión posterior.

5.0.0

  • Cambios en GIDSignIn
    • Se reemplazó uiDelegate por presentingViewController.
    • Se reemplazó hasAuthInKeychain por hasPreviousSignIn.
    • Se reemplazó signInSilently por restorePreviousSignIn.
    • Se quitó el código de error kGIDSignInErrorCodeNoSignInHandlersInstalled obsoleto.
  • Cambios en GIDAuthentication
    • Se quitaron los métodos obsoletos getAccessTokenWithHandler: y refreshAccessTokenWithHandler:.
  • Cambios en GIDGoogleUser
    • Se quitó la propiedad obsoleta accessibleScopes. En su lugar, usa grantedScopes.
  • Agrega dependencias en AppAuth y GTMAppAuth.
  • Se quitó la dependencia de GoogleToolboxForMac.
  • Se quita la compatibilidad con iOS 7.

4.4.0

  • Se quita la dependencia de GTM OAuth 2.

4.3.0

  • Admite la administración de movilidad empresarial de Google.

4.2.0

  • Agrega grantedScopes a GIDGoogleUser, lo que permite confirmar qué permisos se otorgaron después de un acceso correcto.
  • Deja de estar disponible accessibleScopes en GIDGoogleUser. Usa grantedScopes en su lugar.
  • Localiza GIDSignInButton para hi (hindi) y fr-CA (francés [Canadá]).
  • Agrega la dependencia al framework LocalAuthentication del sistema.

4.1.2

  • Agrega compatibilidad con pod try para el CocoaPod de GoogleSignIn.

4.1.1

  • Se corrigió un problema por el que no se llamaba a signInWillDispatch:error: de GIDSignInUIDelegate en iOS 11. Ten en cuenta que no se llama a signIn:presentViewController: ni a signIn:dismissViewController: en iOS 11 porque el controlador de vista de la app no presenta SFAuthenticationSession.

4.1.0

  • Usa SFAuthenticationSession en iOS 11.

4.0.2

  • Ya no depende de GoogleAppUtilities.

4.0.1

  • Cambia a las dependencias de Pod de código abierto.
  • La apariencia del botón de acceso ya no depende de los permisos solicitados.

4.0.0

  • El Pod de GoogleSignIn ahora tiene la forma de un framework estático. Importa con #import <GoogleSignIn/GoogleSignIn.h> en Objective-C.
  • Agrega compatibilidad con módulos. También puedes usar @import GoogleSignIn; en Objective-C, si el módulo está habilitado, y import GoogleSignIn en Swift sin usar un encabezado de puente.
  • Para los usuarios de la distribución ZIP independiente, ahora se proporcionan varios frameworks, y todos deben agregarse a un proyecto. Esta descomposición permite una mayor flexibilidad en caso de dependencias duplicadas.
  • Se quitó el método obsoleto checkGoogleSignInAppInstalled de GIDSignIn.
  • Se quitaron las propiedades allowsSignInWithBrowser y allowsSignInWithWebView de GIDSignIn.
  • Ya no es necesario agregar el ID del paquete como un esquema de URL compatible con la app.

3.0.0

  • Proporciona las propiedades givenName y familyName en GIDProfileData.
  • Permite establecer la propiedad loginHint en GIDSignIn para completar previamente el ID o la dirección de correo electrónico del usuario en el flujo de acceso.
  • Se quitaron la categoría UIViewController(SignIn) y la propiedad delegate de GIDSignInButton.
  • Requiere que uiDelegate se haya configurado correctamente en GIDSignIn y que se haya vinculado el framework de SafariServices.
  • Quita la dependencia de StoreKit.
  • Proporciona compatibilidad con bitcode.
  • Requiere Xcode 7.0 o una versión posterior debido a incompatibilidades de bitcode con Xcode 6.

2.4.0

  • Se actualizó el botón de acceso con el nuevo logotipo de Google.
  • Admite la restricción de dominio para el acceso.
  • Permite actualizar los tokens de ID.

2.3.2

  • Ya no se requiere Xcode 7.

2.3.1

  • Se corrigió una falla en imageURLWithDimension: de GIDProfileData.

2.3.0

  • Se requiere Xcode 7.0 o una versión posterior.
  • Usa SFSafariViewController para acceder en iOS 9. Se debe configurar uiDelegate para que esto funcione.
  • Optimiza la recuperación del perfil de usuario.
  • Se agregó compatibilidad con GTMFetcherAuthorizationProtocol en GIDAuthentication.

2.2.0

  • Compatible con iOS 9 (beta). Ten en cuenta que esta versión del SDK de Acceso no incluye bitcode, por lo que debes establecer ENABLE_BITCODE en NO en tu proyecto si usas Xcode 7.
  • Agrega identificadores descriptivos para las restricciones de diseño automático de GIDSignInButton.
  • signInSilently ya no requiere que se configure uiDelegate.

2.1.0

  • Se corrigieron los problemas de diseño automático con GIDSignInButton.
  • Se agregó la API para actualizar el token de acceso en GIDAuthentication.
  • Se mejoró la descripción de la excepción para el clientID sin asignar en GIDSignIn.
  • Se corrigieron otros errores menores.

2.0.1

  • Correcciones de errores

2.0.0

  • Admite el acceso a través de UIWebView en lugar de cambiar de app a un navegador, configurable con la nueva propiedad allowsSignInWithWebView.
  • Ahora, las apps que inhabilitaron el cambio de app a un navegador a través de la propiedad allowsSignInWithBrowser y la vista web integrada en la app a través de la propiedad allowsSignInWithWebView tienen la opción de mostrar un mensaje que indique al usuario que descargue la app de Google desde la tienda de aplicaciones.
  • Se solucionó el problema de tamaño del botón de acceso cuando el diseño automático está habilitado.
  • signInSilently ahora llama al delegado con un error cuando hasAuthInKeychain es NO, como se indica en la documentación.
  • Otras correcciones de errores menores

1.0.0

  • Nuevo SDK centrado en el acceso con una API renovada
  • Botón de acceso renderizado de forma dinámica con desarrollo de la marca contextual
  • Compatibilidad con perfiles básicos
  • Se agregó la propiedad allowsSignInWithBrowser