Nesta página: Diagnostique sistematicamente por que suas atividades do Live não aparecem, são atualizadas ou terminam, para que você possa resolver problemas de token de perfil, configuração de campanha, carga e entrega em casos de uso unitários e de difusão.
As atividades online no Adobe Journey Optimizer permitem atualizações dinâmicas e em tempo real nas telas bloqueadas do iOS e nas Ilhas dinâmicas. Eles só podem ser acionados e gerenciados por meio de Campanhas acionadas por API.
Tipos de caso de uso:
- Unitário: direcionado individualmente, transacional (campanhas transacionais acionadas por API)
- Transmissão: entrega em massa direcionada por público-alvo (campanhas de marketing acionadas por API)
Um desafio frequente com atividades Live é quando a chamada da API para acionar ou atualizar uma atividade Live retorna uma resposta bem-sucedida (200 OK), mas a atividade Live não é exibida ou atualizada no dispositivo do usuário. Essa desconexão entre a confirmação da API e o comportamento real do dispositivo pode ocorrer em vários pontos do pipeline de entrega. Este guia fornece uma abordagem sistemática de solução de problemas para identificar onde o delivery está falhando, examinando cada estágio da validação da solicitação de API à renderização do dispositivo.
Problemas mais comuns
Noções básicas sobre os dois casos de uso
Antes de depurar, confirme qual caso de uso se aplica à sua campanha. A causa raiz e o caminho de depuração diferem significativamente entre eles.
recipients[].userIdaudience.idinput-push-channel (por instância de difusão)input-push-channel ao inícioGlossário de terminologia
update e end. Cada instância da atividade Live tem seu próprio token de atualização exclusivo.LiveActivityAttributes do Adobe SDK. Para unitário, contém liveActivityID; para difusão, contém channelID. Deve ser incluído no campo attributes de cargas do evento de início.input-push-channel. Deve corresponder exatamente a liveActivityData.channelID na carga da transmissão.ActivityAttributes. Armazenado como attributeType (camelCase) nos atributos de perfil do AEP e enviado como attributes-type (hifenizado) nas cargas JSON do APS. Estes são o mesmo valor em diferentes representações.appId, platform e attributeType. Deve estar presente e ser válido para que o início remoto funcione.context.requestPayload.aps. Contém o evento de atividade Live, content-state, attributes, e campos de controle.Pré-requisitos
Antes de solucionar problemas, verifique se você tem:
A visualização Atividades ativas no Adobe Experience Platform Assurance valida a configuração do aplicativo, inspeciona eventos de atividade e permite iniciar, atualizar ou encerrar atividades remotamente de uma sessão de teste.
| note important |
|---|
| IMPORTANT |
| As sessões do Assurance são somente para dispositivos de teste e controle de qualidade. Os dispositivos de produção do usuário final não estão conectados ao Assurance. Para diagnósticos de produção, use a seção Avançado: Depuração via consultas do conjunto de dados no final deste guia. |
Exigências
| table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 | |
|---|---|
| Requisito | Detalhes |
| Dispositivo iOS | Dispositivo físico executando o iOS 16.1 ou posterior |
| Simulador Xcode | iOS 16.1 ou posterior somente início local, push remoto via APNs não tem suporte no Simulador |
| Início remoto a partir do Assurance | iOS 17.1 ou posterior, token de push-to-start válido e configuração de canal válida |
| SDK móvel | Adobe Experience Platform Mobile SDK 5.11.0 ou posterior |
| Session | Uma sessão ativa do Assurance |
Três guias
| table 0-row-2 1-row-2 2-row-2 3-row-2 | |
|---|---|
| Tabulação | O que ele mostra |
| Informações do cliente | Dispositivo, perfil e credenciais da App Store. Verificação verde = configurado corretamente; alerta em linha = problema com uma correção sugerida. Mapeia diretamente para as pré-verificações em cada cenário abaixo. |
| Atividades | Atividades em tempo real para o cliente selecionado: tipo (Unitário/Difusão), ID, status e contagem de eventos. Subguias: Visão geral (informações básicas + botão Enviar atualização), Fluxo de atividade (linha do tempo do ciclo de vida com cargas úteis inspecionáveis), Detalhes do evento (inspeção de carga útil completa por evento). |
| Eventos | Todos os eventos do Assurance para o cliente, incluindo eventos de início, atualização e término de atividades Live. |
Início, atualização e término do Assurance
Iniciar Atividade Dinâmica. abre uma caixa de diálogo para escolher o tipo de atividade registrada, escolher Unitário ou Transmissão, inserir uma ID de canal de transmissão (somente difusão) e editar uma carga JSON do APS pré-preenchida. O botão está desativado ou retorna um erro se os requisitos de configuração de token de push-to-start, versão do iOS ou canal não forem atendidos.
Enviar Atualização. na guia Visão geral de uma atividade existente, o envia um evento Atualizar (enviar novo conteúdo) ou Encerrar. Para unitário, o plug-in usa o token de atualização da atividade automaticamente. Para transmissão, ele direciona todos os dispositivos inscritos na mesma ID de canal de transmissão. As cargas devem ser um JSON válido e corresponder ao esquema de atributo da atividade; caso contrário, a solicitação será rejeitada.
Consulte a documentação do Adobe Experience Platform Assurance para obter as etapas de configuração e conexão da sessão.
Navegue até a Campanha acionada pela API no Journey Optimizer e recupere:
- Nome e ID da campanha
- Versão do Campaign (se aplicável)
- Tipo de campanha: Transacional (unitário) ou Marketing (difusão)
- Configuração de superfície: a superfície do aplicativo iOS usada para a atividade Live
- Tipo de atividade: o nome de estrutura
AttributeTypeconfigurado na campanha
Ao fazer a chamada de API para acionar a atividade Live, salve:
- Carga de solicitação de API, incluindo identificadores de perfil e dados de atividade em tempo real
- Resposta da API, incluindo código de status, ID da mensagem, ID da solicitação
- Carimbo de data e hora de quando a API foi chamada
- Ponto de extremidade usado, por exemplo,
/campaign/{CAMPAIGN_ID}/execute
Na solicitação da API, recupere:
- Namespace de perfil, por exemplo, ECID, email, ID do cliente
- ID de perfil usada na chamada de API
Verifique se você pode pesquisar esse perfil no Adobe Experience Platform. Saiba como pesquisar um perfil na documentação do Experience Platform.
Colete o seguinte do seu dispositivo de teste:
- Modelo do dispositivo, por exemplo, iPhone 14 Pro
- Versão do iOS
- Identificador do conjunto de aplicativos
- Token de push de APNs
- Status de conectividade de rede no momento do teste
Cenários comuns
Cenário 1: problemas de perfil ou token de push scenario-1-profile-or-push-token-issues
[Aplica-se a casos de uso unitários e de difusão]{class="badge positive"}
A API retorna HTTP 200, mas a atividade Live não é exibida. Causas comuns:
- O perfil não existe no Adobe Experience Platform.
- O token de push da atividade online não foi sincronizado com o perfil.
- Os detalhes de push da atividade ao vivo estão sincronizados, mas contêm configurações incorretas, por exemplo,
appIdouattributeTypeincorretos.
Observação para casos de uso de difusão: se alguns perfis no seu público-alvo não tiverem tokens, somente eles não receberão a atividade Live. Obtenha amostras de vários perfis do seu público-alvo para diagnosticar problemas de token. Isso se aplica somente a eventos de início remoto, não a eventos de atualização ou término.
Pré-verificações
-
Requisitos do aplicativo iOS:
- iOS 16.1+
NSSupportsLiveActivitiesdefinido comoYESemInfo.plistActivityAttributesimplementado corretamente.
-
Integração do Mobile SDK:
- Adobe Experience Platform Mobile SDK (mensagens do SDK 5.11.0+)
Messaging.registerLiveActivitiesimplementado e chamado com token de push de atividade online.
Etapas de depuração
- No Journey Optimizer, navegue até Cliente
>Perfis. - Pesquisar usando o namespace e o valor de identidade da solicitação de API.
- Se o perfil não for encontrado, ele não existe ou a assimilação não foi concluída. Crie o perfil ou aguarde a assimilação antes de acionar a atividade Live.
- Se o perfil for encontrado, vá para a etapa 2 abaixo para verificar se o token de push está sincronizado.
Você pode usar o Assurance para verificar o registro do token:
- No Assurance, na lista Eventos, filtre ou pesquise eventos
eventType = "liveActivity.pushToStart". - Selecione o Evento e inspecione a carga.
- Verifique se os valores de token, appId e attributeType estão presentes.
- Confirme se o evento foi enviado com êxito.
Também é possível fazer check-in do perfil do Adobe Experience Platform.
- No Adobe Experience Platform, em seu Perfil, acesse a guia Eventos.
- Pesquisar
liveActivity.pushToStarteventos. - Verifique o carimbo de data e hora e a carga do evento.
Se nenhum evento for encontrado, o aplicativo móvel não está chamando Messaging.registerLiveActivity corretamente. Você precisa corrigir a integração do SDK.
-
Em seu Perfil, acesse a guia Atributos.
-
Localizar
liveActivityPushNotificationDetails. -
Verifique a configuração do token:
code language-json { "liveActivityPushNotificationDetails": [ { "appId": "com.example.myapp", "token": "abc123def456...", "platform": "apns", "denylisted": false, "attributeType": "OrderTrackingAttributes", "identity": {} } ] }
Validar cada campo:
| table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 | ||
|---|---|---|
| Campo | Requisito | Problema comum |
appId |
Deve corresponder exatamente ao identificador de conjunto do iOS | Incompatibilidade entre IDs do pacote dev/prod |
attributeType |
Deve corresponder exatamente ao nome de estrutura Swift ActivityAttributes (diferencia maiúsculas de minúsculas) |
Erro de digitação ou nome de estrutura incorreto |
platform |
Deve ser "apns" ou "apnsSandbox" |
Valor de plataforma incorreto |
denylisted |
Deve ser false |
Token marcado como inválido ou usuário recusado |
token |
Token de push de APNs válido | Token expirado ou aplicativo reinstalado |
Se algum campo estiver incorreto: atualize o aplicativo móvel, registre-se novamente usando Messaging.registerLiveActivities, aguarde de 5-10 minutos e verifique novamente.
Se liveActivityPushNotificationDetails estiver ausente: o token ainda não foi sincronizado. Aguarde de 5 a 10 minutos após ver o evento liveActivity.pushToStart no Assurance.
Cenário 2: problemas de configuração de campanha e carga scenario-2-campaign-configuration-and-payload-issues
[Aplica-se a casos de uso unitários e de difusão]{class="badge positive"}
O perfil existe com tokens válidos, mas a atividade Live não é exibida. Isso pode ser causado por:
- Configuração de superfície ou canal incorreta.
- Estrutura de carga de API incorreta.
content-stateeattributesnão correspondem à implementação do iOSActivityAttributes.- Obsoleto
timestamp(crítico para atualização/fim).
Observação para casos de uso de difusão: a campanha deve ser Marketing acionado por API (não Transacional). A carga usa audience em vez de profile individual. Consulte esta seção para obter a estrutura de conteúdo específica para difusão e a documentação do Adobe Developer para obter as especificações completas da API.
Pré-verificações
- A campanha é Transacional acionada por API (unitária) ou a opção Marketing acionado por API (difusão) e Alta Taxa de Transferência deve ser não habilitada, pois é incompatível com a atividade online.
- Verifique se o perfil existe e se os tokens estão sincronizados corretamente usando o cenário acima.
Etapas de depuração
- No Journey Optimizer, abra a Campanha e navegue até o menu Ações.
- Verifique sua configuração de atividade do Live. A superfície deve ser configurada para o aplicativo iOS com um identificador de conjunto que corresponda a
appIdnoliveActivityPushNotificationDetailsdo seu perfil. Por exemplo, se o seu perfil tem"appId": "com.example.myapp", a superfície deve ter como alvo o mesmo aplicativo. - Verifique se o Tipo de atividade na configuração da campanha corresponde exatamente ao
attributeTypenoliveActivityPushNotificationDetailsdo seu perfil. Por exemplo, se o seu perfil tiver"attributeType": "FoodDeliveryLiveActivityAttributes", a campanha deverá especificar esse mesmo tipo de Atividade.
Ao executar a campanha via API, verifique se a carga segue a estrutura correta.
Carga unitária:
| code language-json |
|---|
|
Problemas comuns de carga:
| table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3 | ||
|---|---|---|
| Campo | Requisito | Problema comum |
attributes-type |
Deve corresponder ao tipo de Atividade de campanha e ao perfil attributeType |
Incompatibilidade ou erro de digitação |
campaignId |
Deve corresponder à ID da campanha ativada | ID de campanha incorreta ou ausente |
content-available |
Deve ser 1 |
Valor ausente ou incorreto |
event |
Deve ser "start", "update" ou "end" |
Tipo de evento inválido |
timestamp |
Deve ser sempre o horário atual/mais recente da época do Unix em segundos | Uso do carimbo de data e hora antigo/em cache |
userId / namespace |
Deve corresponder a um perfil existente no AEP | Incompatibilidade do identificador de perfil |
Crítico: sempre usar o carimbo de data/hora mais recente
- O campo
timestampdeve sempre ser o horário atual da época Unix (em segundos) no momento em que cada chamada de API é feita. - Isso se aplica a todos os tipos de evento:
start,updatee especialmenteend. - Impacto nas solicitações de atualizações/término: o uso de um carimbo de data/hora obsoleto ou antigo fará com que as solicitações de atualização e término falhem ou sejam ignoradas pelo dispositivo.
- NÃO reutilize carimbos de data/hora de solicitações anteriores ou use valores em cache.
- Gere um carimbo de data e hora novo para cada chamada de API.
Campos opcionais (todos os tipos de evento):
requestId: Identificador exclusivo para rastreamento (recomendado).alert: Objeto comtitleebodypara notificação (útil para chamar atenção para atualizações).
Sobre dismissal-date:
- Campo opcional que contém o tempo da época Unix (segundos).
- Relevante somente quando
event: "end". - Especifica quando a atividade Live deve ser removida automaticamente do dispositivo.
- Se não for fornecido no evento final, a atividade online permanecerá visível até que o usuário a ignore.
- Deve ser um carimbo de data/hora futuro (posterior a
timestamp).
Verifique se a carga da API corresponde à implementação ActivityAttributes do aplicativo iOS. O protocolo LiveActivityAttributes do Adobe SDK estende o iOS ActivityAttributes e requer uma propriedade liveActivityData.
Validar o mapeamento:
-
Seu
ActivityAttributesdeve implementar o protocoloLiveActivityAttributesda Adobe. Exemplo:code language-swift struct FoodDeliveryLiveActivityAttributes: LiveActivityAttributes { public struct ContentState: Codable, Hashable { var orderStatus: String var estimatedDeliveryTime: String } // Adobe SDK requirement var liveActivityData: LiveActivityData // Your custom attributes var restaurantName: String }Observe que o campo
liveActivityDataé exigido pelo Adobe SDK e deve ser incluído em todas as implementações. -
A carga da API deve refletir a estrutura do iOS:
code language-json { "aps": { "event": "start", "timestamp": 1756984054, "attributes-type": "FoodDeliveryLiveActivityAttributes", "content-state": { "orderStatus": "Preparing", "estimatedDeliveryTime": "20 mins" }, "attributes": { "liveActivityData": { "liveActivityID": "order-12345" }, "restaurantName": "Pizza Palace" } } }
Lista de verificação de validação:
-
Incluir todos os campos
ContentStateemcontent-state(obrigatório para todos os tipos de evento). -
Incluir todos os campos
LiveActivityAttributesemattributes(somente eventos iniciais), incluindo:liveActivityData(obrigatório; geralmente contémliveActivityIDou identificador semelhante)- Todos os campos personalizados da estrutura
-
Corresponder nomes de campo exatamente (diferencia maiúsculas de minúsculas).
-
Corresponder tipos de dados (String, Int, Bool, objetos aninhados).
-
Preserva a estrutura do objeto aninhado.
Erros comuns:
| table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3 7-row-3 | ||
|---|---|---|
| Problema | Impacto | Corrigir |
liveActivityData ausente nos atributos |
A atividade online não iniciará | Sempre incluir objeto liveActivityData no evento inicial |
| Campo obrigatório ausente no evento de início | A atividade online não iniciará | Adicionar todos os campos da estrutura do iOS |
| Nome de campo incorreto (erro de digitação/uso de maiúsculas e minúsculas) | Campo ignorado ou erro de análise | Corresponder exatamente aos nomes de campo do iOS |
| Tipo de dados incorreto | Erro de análise | Corresponder tipos de dados do iOS |
| Objeto aninhado ausente | Dados incompletos | Incluir todas as estruturas aninhadas |
Incluindo attributes em atualização/fim |
Desnecessário, mas geralmente ignorado | Incluir apenas attributes no evento inicial |
| Carimbo de data/hora obsoleto na atualização/término | Atualização/fim ignorado pelo dispositivo | Sempre gerar carimbo de data/hora novo |
Para obter mais exemplos, consulte Criar página de atividade ao vivo.
Verifique a execução da API e o delivery de carga usando o Assurance:
-
Abra sua sessão do Assurance.
-
Execute a chamada de API para acionar a atividade Live.
-
Na Lista de Eventos, verifique se:
- Eventos de execução de campanha.
- Eventos de entrega de atividades online.
- Eventos de erro de validação de carga.
-
Revise as cargas do evento para verificar:
- A carga foi processada corretamente.
- Não ocorreram erros de validação.
- A atividade online foi enviada para APNs.
Cenário 3: falhas de delivery e análise de erros scenario-3-delivery-failures-and-error-analysis
[Aplica-se a casos de uso unitários e de difusão]{class="badge positive"}
Nesse cenário, todas as verificações anteriores foram aprovadas:
- O perfil existe com tokens de push de atividades online válidos
- A campanha está configurada corretamente com a carga adequada
- Os tokens de atualização estão sincronizados (somente para eventos de atualização/término, caso de uso unitário)
Mas a atividade Live ainda não é exibida, atualizada ou encerrada conforme esperado. O problema pode estar no nível do sistema de entrega da Adobe ou com o provedor de serviços de notificação por push (APNs).
Observação para casos de uso de difusão: os relatórios mostram as métricas de todos os membros do público-alvo. Alguns perfis podem ter sucesso, enquanto outros falham.
Pré-verificações
-
Cenários Anteriores Validados:
- O perfil existe com o
liveActivityPushNotificationDetailscorreto - A superfície de campanha e o tipo de atividade estão corretos
- A carga da API é válida com o carimbo de data e hora atual
- Os tokens de atualização são sincronizados (para eventos de atualização/término)
- O perfil existe com o
-
Chamada de API Confirmada:
- A chamada de API retornou HTTP 200 (sucesso)
- A ID da campanha e os detalhes do recipient estão corretos
Etapas de depuração
-
Navegue até a Campanha de atividade ao vivo.
-
Clique no botão Relatórios.
-
Selecione Exibir relatório de todos os tempos.
-
Analise as seguintes seções:
-
Verifique as métricas Estatísticas de envio para entender o sucesso da entrega:
table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 Métrica O que significa O que procurar Direcionado Número de perfis qualificados para o público Deve incluir seu perfil de teste Envios Total de tentativas de notificações por push Deve corresponder às chamadas de API Entregues Entregue com sucesso a dispositivos Compare com Envios para ver a taxa de sucesso Enviar erros Notificações por push que não foram enviadas Números altos Enviar exclusões Perfis excluídos pelo Adobe Journey Optimizer Verifique se o seu perfil foi excluído -
Se Enviar erros > 0, verifique a tabela Motivos de Erro para obter códigos de erro e mensagens específicas:
table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 Erro comum Significado Resolução Token inválido O token de push é inválido ou expirou Registrar novamente os tokens de atividade ao vivo do dispositivo Token não encontrado Nenhum token válido associado ao perfil Verificar se liveActivityPushNotificationDetailsexisteAPNs rejeitadas O serviço de Notificação por push do Apple rejeitou o push Verificar certificado APNs, ID do pacote, ambiente Tempo limite de rede Não é possível acessar APNs Problema transitório; repetir a chamada da API -
Se Enviar exclusões > 0, verifique a tabela Motivos excluídos:
table 0-row-3 1-row-3 2-row-3 3-row-3 Exclusão comum Significado Resolução Perfil recusado O usuário recusou as notificações Verificar status de consentimento do perfil Token alterado Token marcado como inválido Registre o token novamente ou verifique o status do incluo na lista de bloqueios Perfil não qualificado O perfil não atende aos critérios da campanha Revisar regras de público-alvo da campanha
-
Saiba mais na página de relatório de campanha de atividades ao vivo.
-
Navegue até Cliente > Perfis na Journey Optimizer.
-
Procure e abra o perfil.
-
Selecione a guia Eventos.
-
Filtrar ou pesquisar eventos com
eventType = "message.feedback". -
Procure eventos de feedback que correspondam aos tipos
liveActivityIDeeventda atividade Ativa. -
Revise os seguintes campos principais:
table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 Campo Valores possíveis O que significa feedbackStatussent,error,denylistResultado da entrega do provedor de serviços serviceProviderapns/apnsSandboxDeve ser APNs para atividades do iOS Live errorCodeCódigo numérico ou nullCódigo de erro específico de APNs em caso de falha errorMessageDescrição de erro ou nullMensagem de erro legível -
Se
feedbackStatus: "error":- Verifique o
errorCodee oerrorMessagequanto a erros de APNs específicos - Erros comuns de APNs incluem token expirado, certificado inválido, ID de pacote incorreta
- Verifique o
-
Se nenhum evento de feedback for encontrado:
- A notificação por push pode não ter sido tentada
- Verifique se o perfil foi excluído nos Relatórios de campanha, conforme detalhado na Etapa 1 acima.
-
Abra a sessão do Assurance. Ela deve estar ativa durante a chamada de API.
-
Execute a chamada de API (start, update ou end).
-
Na Lista de Eventos, procure por eventos de entrega de atividades online.
-
Procure eventos relacionados à entrega por push de APNs.
-
Verifique os seguintes indicadores:
- Solicitação de push para APNs: confirma que a Adobe enviou o push para os servidores da Apple
- Resposta APNs: mostra se APNs aceitaram ou rejeitaram o push
- Status da entrega: indicação de êxito ou falha
-
Se forem encontrados problemas, consulte os seguintes problemas comuns de delivery de APNs:
table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 Problema Sintoma no Assurance Resolução Certificado APNs expirado Erro de autenticação Renovar e carregar novo certificado APNs Ambiente errado (desenvolvimento vs. produção) Erro de incompatibilidade de token Verifique se o certificado corresponde ao tipo de build do aplicativo Incompatibilidade de ID do pacote Identificador de conjunto inválido Verificar se a ID do conjunto de certificados corresponde ao aplicativo Token expirado Erro InvalidToken de APNs Registrar tokens de atividade ao vivo novamente Limitação de taxa Solicitações demais Reduzir a frequência de chamada da API
-
Verifique as métricas de ciclo de vida de atividade Ativo no Relatório de campanha.
No relatório de campanha, revise a seção Ciclo de vida da atividade em tempo real:
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 Métrica O que verificar Início remoto Deve mostrar a contagem de inicializações acionadas por API Atualizações Deve mostrar a contagem de eventos de atualização Término Deve mostrar a contagem de eventos finais Contagem total Volume geral do evento de atividade Ativa Se essas métricas forem zero ou não corresponderem às chamadas da API, há um problema de delivery entre o Adobe e os APNs.
-
Se o Adobe mostrar entrega bem-sucedida, mas o dispositivo não mostrar a atividade Live:
- Verifique se há erros de atividade ao vivo nos logs de dispositivos do iOS.
- Verifique se o aplicativo está em primeiro ou segundo plano (não finalizado).
- Confirme se o dispositivo tem conectividade de rede.
- Teste em vários dispositivos para descartar problemas específicos do dispositivo.
- Verifique se a versão do iOS é 16.1 ou posterior.
Se você concluiu todas as etapas e o problema permanece não resolvido, entre em contato com o Atendimento ao cliente da Adobe com:
Informações necessárias:
- ID e nome da campanha
- Namespace e ID do perfil
liveActivityIDda carga da API- Carimbos de data e hora de chamadas de API
- Capturas de tela de:
- Relatórios De Campanha (Estatísticas De Envio, Motivos De Erro, Motivos Excluídos)
- Eventos de Perfil (
liveActivity.updateToken,message.feedback) - Sessão do Assurance mostrando eventos de entrega
- Carga de solicitação de API concluída
- Detalhes do certificado APNs (expiração, ambiente, ID do pacote)
Cenários específicos unitários
Cenário 4: token de atualização de atividade online não sincronizado scenario-4-live-activity-update-token-not-synced
A atividade Live é iniciada com êxito no dispositivo, mas as chamadas de API update ou end subsequentes (retornando HTTP 200) não atualizam ou descartam a atividade Live. Isso ocorre quando o token de atualização de atividade em tempo real não é sincronizado corretamente com o sistema da Adobe.
Noções básicas sobre tokens de atualização
Quando uma atividade Live é iniciada em um dispositivo, o iOS gera um token de atualização exclusivo para essa instância de atividade Live específica. Este token é necessário para:
- Envio de atualizações para a atividade Live
- Encerrando a atividade Live remotamente
Cada instância da atividade Live tem seu próprio token de atualização exclusivo. O Adobe precisa desse token para fornecer eventos de atualização e término.
Comportamento esperado
Para que os eventos de atualização e término funcionem, o seguinte deve ocorrer:
- A atividade online é iniciada com sucesso no dispositivo.
- O dispositivo gera um token de atualização para a instância da atividade Live.
- O Mobile SDK captura e envia o token de atualização para a Adobe.
- O token de atualização é sincronizado e armazenado no sistema do Adobe.
- As chamadas de API subsequentes para atualização/fim usam esse token para entrega.
Pré-verificações:
- Permissão de usuário: na primeira vez que uma atividade ao vivo é iniciada em um dispositivo, o iOS exibe um prompt do sistema: “Permitir que o [Nome do aplicativo] forneça atualizações de atividade ao vivo?” O usuário deve tocar em “Permitir” para que os tokens de atualização sejam gerados e sincronizados. Se o usuário tocar em “Não permitir”, nenhum token de atualização será criado e as solicitações de atualização/encerramento falharão. Esta é uma permissão única por aplicativo.
- Validação de Perfil e Campanha: Conclua as verificações do Cenário 1 e do Cenário 2 para garantir que o perfil, os tokens e a configuração da campanha estejam corretos.
Etapas de depuração
-
Abra sua sessão do Assurance.
-
Verifique se a sessão estava ativa quando a atividade Live foi iniciada no dispositivo.
-
Filtrar ou pesquisar eventos com
eventType = "liveActivity.updateToken". -
Selecione o evento e inspecione a carga:
- Verifique se o campo
tokencontém uma cadeia de token de atualização válida. - Verifique se o
liveActivityIDcorresponde à sua instância de atividade do Live. - Confirme se o
activityTypecorresponde ao seuattributes-type.
- Verifique se o campo
-
Se o evento não for encontrado:
- O token de atualização não foi gerado ou capturado pela SDK.
- Verifique se o usuário recebeu permissões de atividade em tempo real.
- Verifique se a atividade Live foi iniciada com êxito no dispositivo.
- Confirme se o SDK para dispositivos móveis está integrado corretamente para capturar tokens de atualização.
-
Se o evento for encontrado, prossiga para a Etapa 2.
-
Navegue até Cliente > Perfis na Journey Optimizer.
-
Procure e abra o perfil.
-
Selecione a guia Eventos.
-
Procurar
liveActivity.updateTokeneventos. -
Verifique os detalhes do evento:
- Verifique se o carimbo de data e hora é recente (corresponde ao início da atividade online).
- Confirme se
tokeneliveActivityIDestão presentes. - Verifique se
activityTypeestá correto.
-
Se o evento não for encontrado no perfil:
- O evento de token de atualização pode não ter sido assimilado no perfil ainda.
- Aguarde de 5 a 10 minutos e verifique novamente.
- Se ainda estiver ausente após 15 minutos, pode haver um problema de assimilação de evento.
-
Se um evento for encontrado, o token de atualização foi sincronizado. Você pode prosseguir para a Etapa 3.
-
Na sessão do Assurance, execute uma chamada de API de atualização ou fim.
-
Na Lista de Eventos, procure por eventos de entrega de atividade (eventos de push APNs).
-
Verificar se há eventos que indicam:
- Notificação por push enviada para APNs.
- Resposta de APNs (sucesso ou erro).
- Confirmação de entrega.
-
Se um evento de delivery APNs estiver presente: a notificação por push foi enviada. Se o dispositivo ainda não for atualizado, o problema pode estar no lado do dispositivo (aplicativo que não lida com push, problemas de rede etc.).
-
Se o evento de entrega APNs estiver ausente: o token de atualização pode não estar armazenado ou associado corretamente ao perfil no sistema do Adobe.
-
Se houver eventos de erro: inspecione os detalhes do erro em busca de motivos específicos de falha (token inválido, APNs rejeitados etc.).
Cenário 5: verificação do status de execução por meio da API scenario-5-checking-execution-status-via-the-api
[Aplica-se somente a casos de uso unitários (1:1)]{class="badge informative"}
Depois de acionar uma atividade Live unitária, a API de Execução de Mensagem GET retorna o estado atual da execução. Use-o para confirmar se uma execução está na fila, em andamento, concluída ou falhou — sem esperar que o evento de feedback chegue ao conjunto de dados.
O executionId é a ID da mensagem retornada na resposta do gatilho. Para execuções unitárias, ele tem o prefixo HUOC-.
Ponto de extremidade e solicitação de exemplo
Ponto de extremidade: GET https://cjm.adobe.io/imp/message/executions/{executionId}
curl --location 'https://cjm.adobe.io/imp/message/executions/HUOC-123456' \
--header 'x-gw-ims-org-id: <IMS_ORG_ID>' \
--header 'Authorization: Bearer <ACCESS_TOKEN>' \
--header 'x-sandbox-name: <SANDBOX_NAME>' \
--header 'x-sandbox-id: <SANDBOX_UUID>' \
--header 'x-api-key: <API_KEY>'
Códigos de resposta HTTP
Valores do status de execução
O campo status em uma resposta 200 indica o progresso da execução:
PENDINGINPROGRESSCOMPLETEDFAILEDA resposta 200 também retorna executionType (unitary ou batch), executionRunMode (default ou test) e um bloco source com metadados (campaignId, journeyId, batchInstanceId, informações de ativos) vinculando a execução de volta à campanha ou jornada de acionamento.
Cenários específicos de transmissão
Cenário 6: configuração da campanha de transmissão e problemas de carga broadcast-config
[Aplicável somente a casos de uso de Difusão]{class="badge informative"}
Esta seção aborda cenários de solução de problemas específicos para atividades de transmissão ao vivo, que exigem abordagens de depuração diferentes das campanhas unitárias.
Quando os perfis têm tokens válidos, mas a atividade Ao vivo não é exibida, atualizada ou se comporta conforme esperado para membros do público-alvo, o problema normalmente resulta de um dos seguintes:
- A campanha não está configurada como Marketing acionado por API.
- A carga da API usa uma estrutura de difusão incorreta (ausente
audienceouinput-push-channel). - Os campos
content-stateeattributesnão correspondem à implementação do iOSActivityAttributes. - O
input-push-channelnão foi criado corretamente no Portal do Desenvolvedor do Apple.
Este cenário de solução de problemas se aplica a todos os eventos de atividade Live em campanhas de difusão: start, update e end.
Pré-verificações:
-
Tipo de campanha:
- Verifique se a campanha foi criada como Marketing acionado por API (necessário para campanhas com base em transmissão/público-alvo).
- Confirme se um público-alvo está definido na configuração da campanha.
-
Validação de Perfil e Token: exemplifique vários perfis do público-alvo para verificar se eles têm um
liveActivityPushNotificationDetailsválido. Para obter etapas de validação detalhadas, siga o Cenário 1.
Etapas de depuração
-
Abra sua Campanha de Marketing Acionado pela API na Journey Optimizer.
-
Navegue até a seção Público-alvo e verifique:
- Um público é selecionado para a campanha.
- A ID de público-alvo corresponde à ID usada na carga da API.
- O público-alvo contém os perfis esperados.
-
Navegue até a seção Ações.
-
Verifique a configuração da atividade online:
- A configuração deve ser definida para o aplicativo iOS com o identificador de pacote correto.
- O tipo de atividade deve corresponder ao
attributes-typena carga da API. Por exemplo, se sua carga contém"attributes-type": "AirplaneTrackingAttributes", a campanha deve especificar esse mesmo tipo de Atividade.
A estrutura de carga da transmissão é diferente das campanhas unitárias. Verifique se a carga segue o formato de transmissão correto.
Campos obrigatórios para difusão:
| code language-json |
|---|
|
Problemas comuns de carga:
| table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3 7-row-3 | ||
|---|---|---|
| Campo | Requisito | Problema comum |
campaignId |
Deve corresponder à ID de campanha de marketing ativada | ID de campanha incorreta ou uso da campanha transacional |
audience.id |
Deve corresponder a um público-alvo existente no AEP | ID de público-alvo ou público-alvo incorreto não existe |
input-push-channel |
Obrigatório para transmissão - Identificador exclusivo para esta instância de transmissão | Ausente ou não corresponde a channelID em liveActivityData |
timestamp |
Deve ser sempre o horário atual/mais recente da época do Unix em segundos | Uso do carimbo de data e hora antigo/em cache |
event |
Deve ser "start", "update" ou "end" |
Tipo de evento inválido |
attributes-type |
Deve corresponder ao tipo de Atividade da campanha | Incompatibilidade ou erro de digitação |
content-available |
Deve ser 1 |
Valor ausente ou incorreto |
Campos críticos específicos da difusão:
-
input-push-channel:- Obrigatório para todas as atividades de transmissão ao vivo.
- Atua como um identificador exclusivo para essa instância de transmissão específica.
- Todos os perfis no público-alvo recebem atividades ao vivo vinculadas a este canal.
- Deve corresponder a
channelIDemliveActivityData.channelID(consulte a Etapa 3). - Deve ser criado para
appIDno Portal do Desenvolvedor do Apple pelo cliente. - Somente os canais criados para o
appIDespecífico podem ser usados para transmitir a atividade em tempo real nesse aplicativo.
-
audience.id:- Deve fazer referência a um segmento de público-alvo válido criado no Adobe Experience Platform.
- Todos os perfis neste público-alvo são direcionados para a atividade Live.
- O público deve ser ativado e conter perfis com
liveActivityPushNotificationDetailsválido.
Sempre usar o carimbo de data/hora mais recente:
- O campo
timestampdeve ser sempre o tempo da época Unix atual (em segundos) para cada chamada de API. - Este requisito se aplica a todos os tipos de evento:
start,updateeend. - Crítico para atualizações/fim: usar carimbos de data/hora obsoletos faz com que as solicitações de atualização e término falhem.
- Gere um carimbo de data e hora novo para cada chamada de API de transmissão.
Campos opcionais:
dismissal-date: Tempo de época Unix para descarte automático (relevante somente paraendeventos)alert: Objeto comtitleebodypara notificação
Consulte a documentação da API de Mensagens do Adobe Journey Optimizer para obter as especificações completas da API.
Verifique se os campos de carga correspondem à implementação ActivityAttributes do aplicativo iOS e se input-push-channel corresponde a channelID em liveActivityData.
- Revise sua definição de Atributos da atividade do iOS.
Sua estrutura ActivityAttributes personalizada deve implementar o protocolo LiveActivityAttributes da Adobe:
| code language-swift |
|---|
|
- Mapeie os campos do iOS para a carga da API de transmissão.
Para todos os eventos, inclua attributes e content-state:
| code language-json |
|---|
|
Crítico: input-push-channel deve corresponder achannelID
- O valor
input-push-channelna raiz deapsdeve corresponder exatamente achannelIDemliveActivityData. - No exemplo acima, ambos os valores são
"FEt0NgvLEfEAAOqA6AXdIQ==". - Isso vincula a instância de transmissão aos dados de atividade Live.
- Uma incompatibilidade causa falhas de delivery.
Pontos principais de validação:
- Incluir todos os campos
ContentStateemcontent-statepara todos os tipos de evento. - Incluir todos os campos personalizados
LiveActivityAttributesemattributessomente para eventos iniciais. - Para eventos de início,
liveActivityData.channelIDdeve corresponder ainput-push-channel. - Os nomes de campos diferenciam maiúsculas de minúsculas e devem corresponder exatamente.
- Os tipos de dados devem corresponder (String, Int, Bool, objetos aninhados etc.).
- Para eventos de atualização/encerramento, use o mesmo
input-push-channelque o evento inicial original.
Erros comuns:
| table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3 7-row-3 | ||
|---|---|---|
| Problema | Impacto | Corrigir |
input-push-channel ausente |
A transmissão não funcionará | Adicionar ID de canal exclusiva para cada transmissão |
input-push-channel não corresponde a channelID |
A atividade online não iniciará | Certifique-se de que ambos os valores sejam idênticos |
Diferente de input-push-channel para atualização/fim |
Atualizar/encerrar não atingirá as atividades Live | Usar a mesma ID de canal no ciclo de vida |
liveActivityData.channelID ausente |
A atividade ao vivo não será vinculada à transmissão | Incluir channelID em atributos para iniciar evento |
| Campo obrigatório ausente no evento de início | A atividade online não iniciará | Adicionar todos os campos da estrutura do iOS |
| Nome de campo incorreto (erro de digitação/uso de maiúsculas e minúsculas) | Campo ignorado ou erro de análise | Corresponder exatamente aos nomes de campo do iOS |
| Carimbo de data/hora obsoleto na atualização/término | Atualização/fim ignorado pelos dispositivos | Sempre gerar carimbo de data/hora novo |
Verifique a execução da API e o delivery de carga usando o Assurance:
-
Abra a sessão do Assurance em um dispositivo de teste que faça parte do público-alvo.
-
Execute a chamada de API de transmissão.
-
Na Lista de Eventos, procure:
- Eventos de execução de campanha.
- Eventos de entrega de atividades online.
- Eventos de erro que indicam falhas de validação de carga.
-
Inspecione as cargas do evento para confirmar:
- A carga foi processada corretamente.
- O
input-push-channelestá presente. - Não ocorreram erros de validação.
- As atividades ativas foram enviadas para APNs para membros do público-alvo.
Cenário 7: perfil que não está no instantâneo de público ou público obsoleto scenario-7-profile-not-in-audience-or-stale-audience-snapshot
Nesse cenário, a campanha e a carga são configuradas corretamente, mas perfis específicos não recebem a atividade Live. Isso normalmente ocorre quando:
- O perfil não é um membro do público vinculado à campanha.
- O público-alvo é um público-alvo em lote e contém um instantâneo desatualizado dos dados do perfil.
- Os tokens de atividade do perfil do Live foram adicionados recentemente, mas ainda não foram refletidos no instantâneo do público-alvo.
Esse cenário de solução de problemas se aplica especificamente a campanhas de transmissão que usam direcionamento baseado em público-alvo.
Noções básicas sobre a avaliação de público-alvo
O Adobe Experience Platform usa diferentes métodos de avaliação de público-alvo que determinam quando as atualizações de perfil são refletidas no público-alvo:
Pré-verificações:
-
Validação de campanha e carga:
- Conclua as verificações em este cenário para garantir que a campanha e a carga estejam corretas.
- Verifique se o
audience.idna carga da API corresponde à configuração da campanha.
-
Perfil Existe: confirme se o perfil existe no AEP com um
liveActivityPushNotificationDetailsválido.
Etapas de depuração
Primeiro, confirme se o perfil que deve receber a atividade Live faz parte do público-alvo.
-
Navegue até Públicos-alvo no Adobe Experience Platform.
-
Procure e abra o público-alvo usando o
audience.idda sua campanha. -
Clique em Procurar ou Perfis de amostra para exibir membros do público-alvo.
-
Procure pelo perfil de teste usando o valor de namespace e identidade.
-
Se o perfil não for encontrado na audiência:
- O perfil não atende aos critérios de público-alvo ou às regras de segmento.
- Revise a definição de público-alvo para entender os requisitos de associação.
- Atualize os dados do perfil ou a definição do público-alvo para incluir o perfil.
- Aguarde a conclusão da avaliação do público-alvo (consulte Etapa 2).
-
Se o perfil for encontrado no público-alvo: Vá para a Etapa 2 para verificar a atualização dos dados.
Identifique se o público-alvo usa avaliação em lote ou por transmissão, pois isso determina a atualização dos dados.
-
Na página Detalhes do público-alvo, verifique o Método de avaliação:
- Lote: avaliado uma vez por dia de acordo com um agendamento.
- Streaming: avaliado em tempo real quando ocorrem atualizações de perfil.
- Edge: avaliado em locais de borda em tempo real.
Siga as etapas apropriadas de solução de problemas com base no método de avaliação:
Se o público-alvo usar a Avaliação em lote:
-
Compreender as limitações de público-alvo em lotes:
- Os públicos-alvo em lote são avaliados uma vez por dia (normalmente durante a noite).
- O instantâneo do público-alvo pode ter até 24 horas.
- Se um perfil registrou tokens de atividade ao vivo recentemente, esses tokens podem não estar no instantâneo atual.
- As atualizações para perfis não serão refletidas até a próxima avaliação do lote.
-
Verificar quando ocorreu a última avaliação:
- Nos detalhes do público, procure pelo carimbo de data e hora Última avaliação.
- Se o
liveActivityPushNotificationDetailsdo perfil foi atualizado após esse carimbo de data/hora, o público-alvo tem dados obsoletos.
-
Resolver dados obsoletos:
-
Opção 1: Aguardar a avaliação agendada do lote
- A próxima avaliação do lote incluirá os dados atualizados do perfil.
- Isso acontece automaticamente uma vez por dia.
- Melhor para cenários não urgentes.
-
Opção 2: acionar avaliação de público-alvo sob demanda
- Navegue até Públicos-alvo no AEP.
- Selecione o público-alvo.
- Clique em Avaliar agora ou Ativar sob demanda.
- Aguarde a conclusão da avaliação (isso pode levar de alguns minutos a horas, dependendo do tamanho do público).
- Verifique se o perfil agora atualizou os dados no instantâneo do público-alvo.
- Tente novamente a chamada da API de transmissão.
-
Se o público-alvo usar a avaliação de Streaming:
-
Entender o comportamento de transmissão de público:
- Os públicos-alvo de transmissão são avaliados em tempo real quando ocorrem atualizações de perfil.
- Novos perfis: qualifique-se logo após a criação se eles atenderem aos critérios de segmento.
- Perfis atualizados: qualifique ou desqualifique logo após ser atualizado.
- Perfis inalterados existentes: não serão reavaliados, a menos que ocorra uma atualização.
-
Identificar o problema:
- Se um perfil já existir e atender aos critérios de segmento, mas nenhuma atualização ocorrer nesse perfil, ele não poderá ser adicionado a um público de transmissão recém-criado.
- O perfil deve receber uma atualização (qualquer alteração de atributo) para acionar a reavaliação.
-
Resolver o problema:
-
Para novos perfis: eles se qualificam automaticamente se os critérios forem atendidos. Nenhuma ação necessária.
-
Para perfis existentes sem atualizações recentes:
- Fazer uma atualização secundária no perfil (por exemplo, atualizar um campo de carimbo de data e hora).
- Isso aciona a avaliação de transmissão e adiciona o perfil ao público-alvo.
- Alternativa: use um público-alvo em lote ou público-alvo de borda para perfis existentes.
-
Avançado: depuração via consultas do conjunto de dados advanced-debugging-via-dataset-queries
Público: desenvolvedores e engenheiros de dados. Requer acesso SQL aos conjuntos de dados do Journey Optimizer por meio do Serviço de consulta da Adobe Experience Platform.
Quando usar: o Assurance está limitado a dispositivos de teste conectados durante uma sessão ativa. Use consultas do conjunto de dados para investigar problemas relatados pelos usuários finais de produção ou para auditar o histórico de entregas após o fato. O conjunto de dados expõe as mesmas informações de ciclo de vida e falha que o plug-in do Assurance.
Localização do conjunto de dados
-
No Journey Optimizer, navegue até Gerenciamento de dados
>Conjuntos de dados. -
Habilite a opção Mostrar conjuntos de dados do sistema e abra o Conjunto de Dados de Eventos de Feedback de Mensagens do AJO.
Observe o nome exato da tabela mostrado na página de detalhes. As consultas abaixo usam ajo_message_feedback_event_dataset, substitua-o pelo nome real da tabela se ele for diferente.
Consulta por ID de atividade online
Use-a quando souber a Live Activity ID (por exemplo, uma UUID de pedido ou uma ID de rastreamento de remessa) e quiser todos os eventos de feedback vinculados a ela por todo o ciclo de vida.
SELECT
timestamp,
identitymap,
_experience.customerJourneyManagement
.messageDeliveryfeedback.feedbackStatus AS status,
_experience.customerJourneyManagement
.messageDeliveryfeedback.messageFailure.reason AS failure_reason,
_experience.customerJourneyManagement
.pushChannelContext.liveActivity.event AS la_event,
_experience.customerJourneyManagement
.messageExecution.campaignID AS campaign_id,
_experience.customerJourneyManagement
.messageExecution.batchInstanceID AS batch_id,
_id
FROM ajo_message_feedback_event_dataset
WHERE
_experience.customerJourneyManagement
.pushChannelContext.liveActivity.liveActivityID
= '<YOUR_LIVE_ACTIVITY_ID>'
AND eventtype = 'message.feedback'
ORDER BY timestamp ASC
Consulta por ECID
Use-a quando a ECID do perfil afetado for conhecida. Substitua <YOUR_ECID> com o valor ECID recuperado do perfil.
SELECT
timestamp,
_experience.customerJourneyManagement
.messageDeliveryfeedback.feedbackStatus AS status,
_experience.customerJourneyManagement
.messageDeliveryfeedback.messageFailure.reason AS failure_reason,
_experience.customerJourneyManagement
.pushChannelContext.liveActivity.event AS la_event,
_experience.customerJourneyManagement
.pushChannelContext.liveActivity.liveActivityID AS la_id,
_experience.customerJourneyManagement
.messageExecution.campaignID AS campaign_id,
_id
FROM ajo_message_feedback_event_dataset
WHERE
identityMap['ECID'][0].id = '<YOUR_ECID>'
AND eventtype = 'message.feedback'
ORDER BY timestamp ASC
identityMap é um tipo MAP estruturado, não uma cadeia de caracteres. Use a sintaxe do acessador array e struct mostrada acima. Funções de cadeia de caracteres como LIKE retornarão um erro DATATYPE_MISMATCH.valores de feedbackStatus
senterrorfailure_reason para obter detalhesexcludedelayla_event, o conjunto de dados registra remotestart, não start, para eventos de entrega iniciais. Filtre de acordo ao consultar por tipo de evento.Interpretação do status enviado
Um feedbackStatus de sent confirma que o Journey Optimizer entregou com êxito a notificação para APNs. Ele confirma não que a atividade Live foi renderizada no dispositivo.
O iOS não fornece retornos de chamada depois que uma notificação deixa APNs. As falhas do lado do dispositivo — como uma restrição do SO, uma queda de rede entre APNs e o dispositivo ou o limite de duração de 8 horas da atividade online que está sendo atingida — não são observáveis no conjunto de dados. Se feedbackStatus for sent, mas nenhuma atividade Live for exibida no dispositivo, o problema está fora do pipeline do Journey Optimizer. Use o plug-in do Assurance ou o registro em nível de aplicativo para diagnosticar o comportamento do lado do dispositivo.