services info google ios xcode plist google-signin

ios - info - google sign in sdk



Use la configuraciĆ³n de compilaciĆ³n definida por el usuario en el archivo.plist personalizado (3)

  1. Cree una nueva carpeta (por ejemplo: GoogleServiceInfoPlists ).

  2. Copie allí todos los archivos .plist para cada configuración

por ejemplo:

GoogleService-Info-Debug.plist, GoogleService-Info-Alpha.plist, GoogleService-Info-Beta.plist, GoogleService-Info-Release.plist

  1. Agregue la nueva Run Script Phase al final (Xcode: Target -> Build Phases -> "+" button).

  2. Use el script a continuación para copiar el archivo .plist para el entorno dado al directorio de compilación.

guión:

RESOURCE_PATH=${SRCROOT}/${PRODUCT_NAME}/GoogleServiceInfoPlists/GoogleService-Info-$CONFIGURATION.plist BUILD_APP_DIR=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app echo "Copying ${RESOURCE_PATH} to ${BUILD_APP_DIR}" cp "${RESOURCE_PATH}" "${BUILD_APP_DIR}/GoogleService-Info.plist"

PS: No es necesario agregar el archivo al proyecto. Solo crea una nueva carpeta en el directorio principal.

Tengo diferentes configuraciones de compilación (Debug, Stage, Prod) definidas para mi aplicación y uso configuraciones de compilación definidas por el usuario :

para configurar el inicio de sesión de Facebook y otras cosas en el archivo Info.plist :

En este escenario, la notación $(USER_DEFINED_SETTINGS) funciona.

Cuando intenté configurar Google SignIn , que requiere el uso de un archivo .plist adicional ( GoogleService-Info.plist ), y utilicé la configuración definida por el usuario de la misma manera que lo hago en el archivo Info.plist , no funciona.

¿Cómo puedo usar la configuración definida por el usuario en archivos personalizados de .plist ? Si no puedo, ¿cómo puedo solucionar esto?


Puse dos archivos con el (mismo) nombre GoogleService-Info.plist en mi proyecto.

Uno está en la raíz y el otro está en una carpeta llamada ''staging'', para evitar un conflicto de nombres en el sistema de archivos.

Incluir uno en un objetivo y el otro en otro hace que cada objetivo tenga un archivo plist único con el nombre correcto.


NO es posible usar la configuración definida por el usuario en el archivo .plist personalizado , por lo que debe manejarlo de otra manera.

Sin embargo, puede copiar su archivo .plist personalizado en el lugar correcto:

  1. Cree una nueva carpeta (por ejemplo: GoogleServiceInfoPlists ).
  2. Copie allí todos los archivos .plist para cada entorno (por ejemplo: GoogleService-Info-Debug.plist, GoogleService -Info-Stage.plist y GoogleService -Info-Prod.plist ).
  3. Agregar nueva Run Script Phase (Xcode: Target-> Build Phases -> botón "+" ).
  4. Use el script a continuación para copiar (reemplazar) el archivo .plist para el entorno dado al directorio principal (en su caso es src ):

    cp "${SRCROOT}/src/Resources/GoogleServiceInfoPlists/GoogleService-Info-$CONFIGURATION.plist" "${SRCROOT}/src/GoogleService-Info.plist"

${SRCROOT} - predefinido, apunta a la ubicación de su proyecto.

$CONFIGURATION - predefinida, es su configuración de compilación, en mi caso: Debug , Stage , Prod . Puede cambiar esto en Xcode: Proyecto (¡no objetivo!) -> Información .

Tenga en cuenta que el archivo src/GoogleService-Info.plist debe agregarse al proyecto Xcode ( Build Phases-> Copy Bundle Resource s) mientras que los archivos /src/Resources/GoogleServiceInfoPlists/GoogleService-Info-* no son necesariamente.

ACTUALIZAR:

Recuerde que su nuevo script de ejecución debe colocarse antes de la fase de compilación de Copy Bundle Resources . De lo contrario, no funcionará porque se copiaría demasiado tarde y se usaría la versión predeterminada del archivo .plist.