En esta página: Encuentre respuestas a preguntas comunes acerca de actividades en directo para que pueda implementarlas, enviarlas y solucionarlas con mayor seguridad en sus aplicaciones y campañas de iOS.
Preguntas generales
Una aplicación de iOS puede ejecutar varias instancias de actividad en directo simultáneamente, incluidas varias que utilicen el mismo tipo ActivityAttributes.
Los desarrolladores no imponen ningún límite estricto sobre cuántas instancias de actividad en directo de un tipo de atributo determinado pueden existir. Puede iniciar tantos como requiera la lógica de la aplicación, por ejemplo, uno por envío o recorrido en curso. Sin embargo, iOS aplica un límite de nivel del sistema en cuanto a cuántas instancias de actividad activas pueden estar activas o visibles a la vez.
En la práctica:
-
iOS suele admitir hasta cinco instancias de actividad en directo simultáneas por aplicación.
-
Si supera este número, el sistema puede dejar de mostrar algunas instancias de actividad o finalizar las anteriores para conservar recursos.
-
Cada instancia de actividad en directo tiene un(a)
Activity.idúnico(a), que permite actualizarlo o finalizarlo por separado.
- iOS 16.1+: compatibilidad con actividades básicas en directo
- iOS 17.2+: funcionalidad de push a inicio (inicio remoto sin abrir la aplicación)
- iOS 18+: Compatibilidad con canales de difusión para actividades en directo basadas en audiencias
dismissalDate o llamando explícitamente a activity.end() en su aplicación.Preguntas para desarrolladores
ActivityConfiguration.Más información sobre la configuración del widget
LiveActivityAttributes para actividades Live locales y remotas?Messaging.registerLiveActivity().liveActivityID o channelID inexistente, la solicitud fallará de forma silenciosa en el dispositivo. Asegúrese siempre de rastrear qué instancias de actividad en directo están activas para cada usuario.Sí, puede probar actividades en directo iniciadas localmente y de forma remota en el simulador de iOS.
-
Local: esto incluye crear, actualizar y finalizar una actividad en vivo directamente desde su aplicación usando API de ActivityKit.
-
Remoto: para probar la funcionalidad de la actividad Live de forma remota, integra nuestro SDK de mensajería en tu aplicación y usa las API de ejecución proporcionadas para enviar el inicio, la actualización y el final remotos a tu dispositivo de prueba o simulador de iOS. Es similar a la forma en que se pueden probar las notificaciones push con la integración de SDK de Adobe.
liveActivityID y channelID?liveActivityID: se usa para una actividad en directo individual (unitaria) dirigida a usuarios específicos. Cada ID representa una instancia de actividad en directo única.channelID: se usa para la actividad de difusión en directo enviada a las audiencias. Todos los usuarios de la audiencia reciben las mismas actualizaciones en el mismo canal.
ActivityConfiguration tiene cierres independientes para el contenido de pantalla bloqueada y el contenido de Dynamic Island (expandido, compacto y con estados mínimos), cada uno de los cuales se diseña de forma independiente.Messaging.registerLiveActivity(), SDK recopila y administra automáticamente los tokens push.ActivityKit están sujetos a límites impuestos por el sistema. Si intenta ejecutar varias solicitudes de inicio en sucesión rápida, iOS puede rechazar nuevos inicios debido a cuotas de actividad activas o restricciones presupuestarias. Después de unos 5 intentos de inicio consecutivos, las solicitudes posteriores comienzan a fallar hasta que pasa un breve periodo de reutilización.Apple no especifica un límite numérico exacto para las actualizaciones de actividad en directo de (priority: 10) de alta prioridad. El sistema mantiene un presupuesto interno dinámico que limita la frecuencia con la que se pueden enviar dichas actualizaciones. Si se emiten demasiadas actualizaciones de alta prioridad en un corto intervalo, iOS puede acelerar o retrasar las posteriores.
Para minimizar la restricción:
- Niveles de prioridad de equilibrio: combine actualizaciones estándar
(priority: 5)y altas(priority: 10)según la importancia. - Usar la prioridad alta con moderación: reserve la prioridad alta para actualizaciones en las que el tiempo sea un factor crítico, como el progreso de entrega, el estado del pedido o las puntuaciones deportivas en directo.
- Admitir actualizaciones frecuentes: incluye
NSSupportsLiveActivitiesFrequentUpdatesenInfo.plistde tu aplicación y configúrelo en SÍ si necesitas actualizaciones frecuentes.
Preguntas del experto en marketing
Al iniciar de forma remota una actividad Live a través de las API de ejecución de Adobe:
-
Puede incluir un encabezado
x-request-iden su solicitud. Lo ideal sería que hubiera una relación uno a uno entre cadaliveActivityIDy su correspondientex-request-id. Esto garantiza que si se realizan varias solicitudes con la misma combinación dex-request-idyliveActivityID, solo se iniciará una instancia de actividad en directo en el dispositivo y se omitirán las solicitudes duplicadas. -
Si se omite el encabezado
x-request-id, cada solicitud se trata de forma independiente, lo que puede dar como resultado que se creen varias instancias de actividad Live con el mismoliveActivityID. En estos casos, las actualizaciones futuras pueden fallar o aplicarse solo a una de las instancias activas. -
El valor
x-request-idno se debe reutilizar enliveActivityIDsdiferentes en solicitudes de API independientes.
Preguntas de API
timestamp y dismissal-date?timestamp: la hora de epoch actual en que se produce el evento, necesaria para todos los eventos.dismissal-date: una hora futura en la que la actividad en directo debería descartarse automáticamente, necesaria solo para eventos de “finalización”.
attributes en cada llamada de actualización?Sí, según su clase LiveActivityAttribute.
- Todos los campos del objeto de atributos, incluido
liveActivityData, deben incluirse en cada llamada para el inicio, las actualizaciones o el final. - Solo los campos
content-staterepresentan lo que realmente cambia dinámicamente en una actividad en ejecución. - Incluya también un objeto de alerta para garantizar que la notificación push se trate como una notificación visible para el usuario, no como una notificación en segundo plano silenciosa. Necesario solo para casos de “inicio” y, por lo demás, opcional.
1759937682requestId para varias llamadas a la API?requestId único(a) para garantizar la idempotencia y un seguimiento adecuado. Utilice UUID o identificadores únicos similares.event en la carga útil. Sin embargo, algunas organizaciones prefieren campañas independientes para un mejor seguimiento de los análisis.Preguntas sobre resolución de problemas
Causas frecuentes:
- No coinciden
liveActivityIDochannelIDentre las llamadas de inicio y actualización. content-statecampos no coinciden con su estructuraContentState.- La actividad Live ya ha finalizado.
- Problemas de conectividad de red en el dispositivo.
- La hora de la época utilizada como marca de tiempo no está actualizada.
attributes-type. ¿Qué debería comprobar?- Asegúrese de que el nombre de clase coincida exactamente (con distinción de mayúsculas y minúsculas) con el nombre de estructura de Swift
- Compruebe que la estructura está correctamente definida y registrada
- Compruebe si hay errores tipográficos en la carga útil JSON
- Confirme que la versión de la aplicación instalada tiene la implementación de actividad en directo.
alert es opcional y iOS lo puede suprimir en determinadas condiciones, por ejemplo, en el modo No molestar. Una actividad Live puede actualizarse de forma silenciosa, que a menudo es el comportamiento deseado. El campo de alerta es obligatorio para enviar inicios remotos; de lo contrario, Apple lo trata como una notificación en segundo plano silenciosa.- Verifique que la implementación del widget acceda correctamente a
context.stateycontext.attributes. - Compruebe que los valores predeterminados o los estados de error se gestionan en la interfaz del widget.
- Utilice el protocolo
LiveActivityAssuranceDebuggablepara depurar el esquema. - Realice pruebas con Adobe Assurance para ver si se reciben los datos.