Solución de problemas del SDK de iOS
Importante
Visual Studio App Center está programado para la retirada el 31 de marzo de 2025. Aunque puede seguir usando Visual Studio App Center hasta que se retire por completo, hay varias alternativas recomendadas a las que puede considerar la posibilidad de migrar.
Obtenga más información sobre las escalas de tiempo de soporte técnico y las alternativas.
Problemas durante la instalación
- En la consola, busque un registro Assert con el mensaje "Sdk de App Center configurado correctamente". El mensaje implica que el SDK se ha configurado correctamente.
- Si usa Cocoapods para integrar App Center en la aplicación iOS y se produce un error con el mensaje :
CocoaPods - Unable to find a specification for AppCenter
, ejecutepod repo update
para actualizar el repositorio local de Cocoapods y, a continuación, vuelva a ejecutar.pod install
- Si usa CocoaPods para integrar App Center en la aplicación de iOS y mientras la compilación del proyecto se produce un error con el mensaje ;
framework not found AppCenter.xcframework
debe actualizar (reinstalar) Cocoapods a la versión tardía mediante la ejecución[sudo] gem install cocoapods
de . - Si va a integrar manualmente los archivos binarios del SDK, asegúrese de que tiene los módulos habilitados para el proyecto.
Los datos de análisis no se muestran en el portal
Asegúrese de que ha integrado correctamente los módulos del SDK.
Asegúrese de que se incluye el secreto de aplicación correcto junto con la llamada al
start:withServices:
método. Para copiar el código exactostart:withServices:
, abra la aplicación en el portal y vaya a Introducción página.Si desea ver los registros que se envían al back-end, cambie el nivel de registro a Detallado en la aplicación. A continuación, el SDK imprimirá los registros en la consola. Inserte la siguiente llamada antes de que se inicie el SDK:
[MSACAppCenter setLogLevel:MSACLogLevelVerbose]
AppCenter.logLevel = .verbose
Asegúrese de que "El SDK de App Center se ha configurado correctamente" aparece en los registros (en el nivel de registro info ), compruebe si ve los registros de solicitudes HTTPS.
Asegúrese de que el dispositivo está en línea.
A veces, los registros pueden tardar unos minutos en aparecer en el portal. Espere un tiempo si ese es el caso.
Para comprobar si el back-end de App Center ha recibido los datos, vaya a la sección Flujo de registro del servicio Analytics . Los eventos deben aparecer una vez enviados.
Los bloqueos no se muestran en el portal
Asegúrese de que ha integrado correctamente los módulos del SDK.
Asegúrese de que se incluye el secreto de aplicación correcto junto con la llamada al
start:withServices:
método. Para copiar el código exactostart:withServices:
, abra la aplicación en el portal y vaya a Introducción página.Los bloqueos de App Center reenviarán el registro de bloqueos solo después de reiniciar la aplicación. Además, el SDK no reenviará ningún registro de bloqueo si está asociado al depurador. Asegúrese de que el depurador no está asociado al bloquear la aplicación.
Si desea ver los registros que se envían al back-end, cambie el nivel de registro a Detallado en la aplicación. A continuación, el SDK imprimirá los registros en la consola. Inserte la siguiente llamada antes de que se inicie el SDK:
[MSACAppCenter setLogLevel:MSACLogLevelVerbose]
AppCenter.logLevel = .verbose
Asegúrese de que "El SDK de App Center se ha configurado correctamente" aparece en los registros (en el nivel de registro info ), compruebe si ve los registros de solicitudes HTTPS.
No use ninguna otra biblioteca que proporcione funcionalidad de informes de bloqueos. Solo puede tener un SDK de informes de bloqueos integrado en la aplicación.
Asegúrese de que el dispositivo está en línea.
En ocasiones, los registros pueden tardar unos minutos en aparecer en el portal. Espere un tiempo si ese es el caso.
Compruebe si el SDK detectó el bloqueo en el siguiente inicio de la aplicación. Puede llamar a la API para comprobar si la aplicación se bloqueó en la última sesión y muestra una alerta. O bien, puede ampliar la devolución de llamada de bloqueo
didSucceedSendingErrorReport
para ver si se envió correctamente al servidor.Para comprobar si el back-end de App Center recibió el bloqueo, vaya a la sección Flujo de registro del servicio Analytics. Los bloqueos deben aparecer allí, una vez enviados.
La alerta que solicita a los usuarios una actualización no contiene cadenas, sino solo las claves para ellos.
Esto significa que AppCenterDistributeResources.bundle
no se agregó al proyecto. Asegúrese de que ha quitado el archivo en el proyecto de Xcode y aparece en la fase de compilación del destino de Copy Bundle Resources
la aplicación. Debería aparecer allí si agregó el archivo a través de arrastrar y colocar: Xcode lo hace automáticamente. Si falta el archivo en la fase de compilación, agréguelo para que se compile en el paquete de la aplicación.
Si usa Cocoapods, se encarga de los recursos automáticamente. Intente volver a instalar el pod.
Verá mensajes en la consola que indican que no se pudo abrir la base de datos.
A partir de la versión 0.11.0 del SDK de iOS, App Center usa SQLite para conservar los registros antes de enviarlos al back-end. Si va a agrupar la aplicación con su propia biblioteca de SQLite en lugar de usar la proporcionada por el sistema operativo, es posible que vea errores como este en la consola [AppCenter] ERROR: -[MSACDBStorage executeSelectionQuery:]/147 Failed to open database
y no verá ninguna información de análisis o bloqueo en el back-end. Actualice el SDK a la versión 0.13.0 o posterior.
Distribuir y actualizaciones dentro de la aplicación bloquean mis pruebas automatizadas de IU
Si las actualizaciones en la aplicación están habilitadas, bloquearán las pruebas automatizadas de iu. El proceso de actualización intentará autenticarse en el back-end de App Center. Se recomienda no habilitar App Center Distribute para el destino de prueba de iu.
Por qué el SDK se distribuye como una "biblioteca estática"
Los objetivos de diseño principales del SDK de App Center son tener un impacto mínimo en la aplicación mediante App Center y tener un SDK modular. Esto daría lugar a que el SDK se distribuya como varias bibliotecas compartidas vinculadas dinámicas.
Históricamente, iOS no admitía bibliotecas compartidas vinculadas dinámicas, pero se agregó en iOS 8, como se explica en esta entrada de blog de Landon Fuller.
Sin embargo, App Center se distribuye como una biblioteca compartida vinculada estáticamente que se ajusta en un marco falso "fat". Esto significa que el SDK está vinculado en tiempo de compilación y no en tiempo de inicio para mejorar el rendimiento. La carga de varias bibliotecas compartidas vinculadas dinámicas tarda tiempo.
Apple recomienda optimizar el inicio de la aplicación para que no tarde más de 400 ms en una sesión WWDC. En concreto, recomiendan bibliotecas compartidas estáticas sobre las compartidas dinámicas para lograr este objetivo. La distribución del SDK de App Center para iOS como una biblioteca compartida vinculada estáticamente sigue la recomendación de Apple para proporcionar el mejor rendimiento y un impacto mínimo en la aplicación que incluye el SDK.
Para más información sobre las bibliotecas compartidas vinculadas estáticamente frente a las bibliotecas compartidas vinculadas dinámicas, se recomienda la documentación general de Apple sobre el tema.
¿Por qué los archivos binarios del SDK son tan grandes? Me preocupa el tamaño de mi aplicación
Los archivos binarios de AppCenter se distribuyen como marcos "fat" que contienen segmentos para todas las arquitecturas de iPhone y para el simulador de iPhone. Por este motivo, por ejemplo , AppCenter.framework es de 10,5 MB para descargar.
El tamaño compilado de los archivos binarios del SDK será mucho menor que el .framework
que agregue a la aplicación en Xcode. Tenga en cuenta también que las compilaciones de versión serán más pequeñas que las compilaciones de depuración.
Para ilustrar esto, hemos creado una aplicación Objective-C vacía con Xcode 9.2, hemos agregado los archivos binarios de App Center a la aplicación y compilaciones de versión distribuidas en un iPhone 7 que ejecuta iOS 11.3.
Ejecutamos las pruebas sin Bitcode habilitado y no usamos App Thinning. Puedes usar esas técnicas para reducir aún más el tamaño binario de la aplicación.
Los números siguientes pueden variar y depender de la configuración de compilación, por lo que puede considerarlos una guía aproximada. Dicho esto, agregar el SDK de App Center a la aplicación tiene un impacto mínimo en el tamaño del archivo binario de la aplicación.
Módulos de App Center usados | Tamaño de IPA exportado | Tamaño de instalación |
---|---|---|
Ninguno (aplicación en blanco) | 24 KB | 132 KB |
App Center Analytics | 120 KB | 377 KB |
Bloqueo de App Center | 239 KB | 705 KB |
Distribución de App Center | 163 KB | 528 KB |
Todos los módulos de App Center | 314 KB | 930 KB |
Protección del valor del secreto de App Center
app_secret
es un identificador de la aplicación, es necesario saber a qué aplicación se aplica el tráfico y no se puede usar para recuperar o editar datos existentes. app_secret
Si se expone, el mayor riesgo es enviar datos incorrectos a la aplicación, pero no tendrá ningún efecto en la seguridad de los datos.
Para recuperar datos confidenciales, debe proporcionar un token de aplicación o usuario, que se genera en el lado del cliente. No hay ninguna manera de proteger completamente los datos en el lado del cliente.
Puede mejorar la seguridad de la aplicación mediante una variable de entorno para insertar el secreto de la aplicación en el código. De este modo, el secreto no es visible en el código.