ios - info - google sign in sdk
Use la configuraciĆ³n de compilaciĆ³n definida por el usuario en el archivo.plist personalizado (3)
Cree una nueva carpeta (por ejemplo:
GoogleServiceInfoPlists
).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
Agregue la nueva
Run Script Phase
al final (Xcode: Target -> Build Phases -> "+" button).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:
- Cree una nueva carpeta (por ejemplo: GoogleServiceInfoPlists ).
- Copie allí todos los archivos .plist para cada entorno (por ejemplo: GoogleService-Info-Debug.plist, GoogleService -Info-Stage.plist y GoogleService -Info-Prod.plist ).
- Agregar nueva
Run Script Phase
(Xcode: Target-> Build Phases -> botón "+" ). 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.