Testar integração
Antes de começar
Para concluir com êxito o teste neste documento, você deve:
Testar a integração do SDK do iOS
O teste consiste em:
- Simular um clique no anúncio e instalar o aplicativo:
- Se você implementar a ATT, siga estas instruções.
- Se você não implementar a ATT, siga estas instruções.
- Inspecione os dados de conversão da instalação.
Apps that implement ATT
Siga estas instruções se você implementar a transparência de rastreamento de aplicativos (ATT) em seu aplicativo.
A atribuição ocorrerá por meio de correspondência de ID se as seguintes condições forem atendidas:
- The attribution link contains the
idfa
parameter - A ATT é implementada e:
requestTrackingAuthorization
is called beforestart
(by utilizingwaitForATTUserAuthorization
)- O consentimento do usuário é dado.
Etapa 1: simular o clique no anúncio
Simule um clique no anúncio por meio de um link de atribuição. Estruture o link de atribuição da seguinte forma:
https://app.appsflyer.com/<app_id>?pid=<media_source>
&idfa=<registered_device_idfa>
Onde:
app_id
is your AppsFlyer app ID (includingid
suffix)pid
é a fonte de mídia à qual a instalação deve ser atribuídaidfa
é o IDFA do dispositivo registrado.
Exemplo
If your app ID is id123456789
, the attribution link might look like this:
https://app.appsflyer.com/id123456789?pid=conversionTest1&idfa=1A2B3C4D-9128-4597-1234-
04E23D654321
Etapa 2: instalar o aplicativo
Ative o modo de depuração e instale o aplicativo em um dispositivo de teste registrado.
Etapa 3: executar o teste
Continue inspecionando os dados de conversão.
Apps that don't implement ATT
Etapa 1: simular um clique no anúncio
Simule um clique no anúncio por meio de um link de atribuição. Estruture o link de atribuição da seguinte forma:
https://app.appsflyer.com/<app_id>?pid=<media_source>
Onde:
app_id
is your AppsFlyer app ID (includingid
prefix)pid
é a fonte de mídia à qual a instalação deve ser atribuída.
Exemplo
If your app ID is id123456789
, the attribution link might look like this:
https://app.appsflyer.com/id123456789?pid=conversionTest1
Etapa 2: instalar o aplicativo
Ative o modo de depuração e instale o aplicativo em qualquer dispositivo. Como o IDFA usado para registrar o dispositivo não está disponível, o registro do dispositivo não tem efeito nesse caso.
Etapa 3: executar o teste
Continue inspecionando os dados de conversão.
Dica
Na maioria das vezes, os testes usando links de atribuição são realizados mais de uma vez. É por isso que é recomendável usar um dos parâmetros de atribuição para "versionar" seus testes. Isso facilita a compreensão de qual link acionou qual conversão.
In the above example, the value of
pid
isconversionTest1
. In consecutive tests, increment the value ofpid
toconversionTest2
,conversionTest3
, and so on.
Inspect conversion data
Depois de simular um clique no anúncio e instalar o aplicativo, siga estas etapas para inspecionar os dados de conversão da instalação.
Etapa 1: recupere o UID de instalação
Once the app is installed, In the Xcode terminal, search for conversions.appsflyer
. Look for the uid
parameter and copy its value.

Etapa 2: inspecionar os dados de conversão
Vá para a API de teste de dados de conversão e preencha os campos obrigatórios:
app-id
: o ID do seu aplicativodevice_id
: paste the value ofuid
from step 1.af_request_epoch_ms
- Carimbo de data/hora da época atual. Você pode obtê-lo aqui- The
af_sig
é criado concatenando os valores dos seguintes campos:
Concatene o valor deaf_request_epoch_ms
comdevice_id
andapp_id
, separado por um caractere invisível\u2063
.
(ex.: 1661969117203 1591184059153-1591377216180180185 com.zzkko)Observação: para iOS, certifique-se de que o ID do aplicativo seja completo, ou seja, começa com
id
O HMAC é gerado usando SHA256 e usa a DevKey como a chave secreta da assinatura. Para recuperar a DevKey, no painel da AppsFlyer, acesse Configuração > Configurações do aplicativo.
Você pode encontrar aqui uma calculadora HMAC para ajudar no cálculo desse token.
Em seguida, clique em Experimentar! para executar o teste.
Resultados esperados
Se o ATT for implementado e o consentimento do usuário for fornecido, o resultado será uma resposta 200 semelhante a (truncada para facilitar a leitura):
{
...
"af_status" = "Non-organic";
...
"match_type" = id_matching;
"media_source" = conversionTest1;
...
}
Caso contrário, a atribuição ocorre probabilisticamente e o resultado é uma resposta 200 semelhante a (truncada para facilitar a leitura):
{
...
"af_status" = "Non-organic";
...
"match_type" = probabilistic;
"media_source" = conversionTest1;
...
}
Se a instalação não for atribuída, o resultado será uma resposta 200 com o seguinte payload:
{
"af_message" = "organic install";
"af_status" = Organic;
"install_time" = "2021-08-23 06:59:51.194";
"is_first_launch" = 1;
}
Observação
Pode levar até 30 minutos para que as instalações apareçam no painel.
Solução de problemas da integração do SDK do iOS
Instalações e eventos não são registrados
Pode haver várias razões pelas quais instalações e eventos não são registrados:
-
Formato de ID de aplicativo incorreto: se você especificar uma ID de aplicativo no formato errado, instalações e eventos não serão registrados. Ao definir a ID do aplicativo no arquivo delegado, certifique-se de que ele compreenda apenas números. Caso a ID do aplicativo esteja no formato incorreto, o registro exibe o seguinte erro:
\[ERROR\] AppsFlyer: -\[AppsFlyerTracker validateAppID\] AppsFlyer Error: appleAppID should be a number!
-
ID de aplicativo incorreta: se você especificar uma ID de aplicativo que não existe em sua conta, a instalação e os eventos não serão registrados. O registro mostra o seguinte erro:
AppsFlyer: -[AppsFlyerHTTPClient sendRequestEventToServer:isRequestFromCache:appID:isDebug: completionHandler:]_block_invoke sent information to server, status = 404
The 404
error indicates that the SDK is unable to find the app in your account.
-
Chave do desenvolvedor incorreta: se você especificar uma chave do desenvolvedor incorreta, as instalações e os eventos não serão registrados. O registro mostra o seguinte erro:
AppsFlyer: -[AppsFlyerHTTPClient sendRequestEventToServer:isRequestFromCache:appID:isDebug:completionHandler:] _block_invoke sent information to server, status = 400
O erro 400 indica que o SDK não consegue autenticar a solicitação para registrar instalações e eventos. Verifique se a chave do desenvolvedor é a correta. Além disso, certifique-se de que a chave do desenvolvedor contém apenas caracteres alfanuméricos.
Correto:
[AppsFlyerLib shared].appleAppID = @"340954503";
Incorreto:
[AppsFlyerLib shared].appleAppID = @"id340954503";
Incorreto:
[AppsFlyerLib shared].appleAppID = @"com.appslyer.sampleapp";
A ID do aplicativo e a chave do desenvolvedor estão corretas, mas a instalação não é registrada
Cenário
O aplicativo possui a ID do aplicativo e a chave do desenvolvedor corretas, mas as instalações não são registradas.
Possíveis causas
The SDK is not initiated correctly. Make sure to call the start
method in applicationDidBecomeActive
:
- (void)applicationDidBecomeActive:(UIApplication *)application {
[[AppsFlyerLib shared] start];
}
func applicationDidBecomeActive(application: UIApplication) {
AppsFlyerLib.shared().start()
}
O registro mostra "A chave do desenvolvedor da AppsFlyer está faltando ou está vazia. Suspendendo"
Cenário
Você está tentando ver as instalações e os eventos in-app no registro. O registro mostra "A chave do desenvolvedor do AppsFlyer está faltando ou está vazia. Suspendendo".
Possíveis causas
The dev key is not set. Make sure to set it in appDelegate in the didFinishLaunchingWithOptions
method:
[AppsFlyerLib shared].appsFlyerDevKey = @"<AF_DEV_KEY>";
AppsFlyerLib.shared().appsFlyerDevKey = "<AF_DEV_KEY>"
Instalação sempre atribuída a orgânica
Cenário
Você está testando a atribuição usando links de atribuição. Você implementou o ouvinte de conversão do SDK, mas o registro sempre mostra que a instalação é orgânica. Além disso, nenhuma instalação não orgânica é registrada no painel.
Possíveis causas
- O link de atribuição que você está usando está incorreto. Veja o nosso guia sobre links de atribuição.
- Certifique-se de que o dispositivo no qual você está testando está registrado.
A receita não é registrada corretamente
Cenário
Você está testando eventos in-app com receita. Os eventos aparecem no painel, mas a receita não foi registrada.
Possíveis causas
O parâmetro da receita não foi formatado corretamente. NÃO formate o valor de receita de forma alguma. Ele não deve conter separadores de vírgula, símbolo de moeda ou texto. Um evento de receita deve ser semelhante a 1234,56, por exemplo.
Estou recebendo um 404 em Gravação de instalações ou eventos
Cenário
Você está testando instalações e eventos in-app para ver se eles foram atribuídos à fonte de mídia correta. No entanto, a resposta 404 aparece tanto para instalações quanto para eventos in-app. Nem as instalações nem os eventos in-app aparecem no painel.
Possíveis causas
A resposta 404 indica que o ID do aplicativo está incorreto. Ver Instalações e Eventos não são gravados.
Recebo resposta 400 em Gravação de instalações ou eventos
Cenário
Você está tentando testar eventos in-app no registro. Ao acionar eventos, você vê a resposta 400 nos registros.
Possíveis causas
Isso pode indicar um problema com a chave do desenvolvedor. Verifique se a chave do desenvolvedor é a correta. Além do mais, certifique-se de que a chave do desenvolvedor contém somente caracteres alfanuméricos. Ver Instalações e Eventos não são gravados.
Recebo resposta 403 em Gravação de instalações ou eventos
Cenário
Você está tentando testar instalações e outros eventos de conversão no log. Ao disparar esses eventos, você verá a resposta 403 (proibido) nos logs.
Possíveis causas
This might be because you have the Zero package, which does not include attribution data; only data on clicks and impressions. To start receiving attribution data, learn more about the different AppsFlyer packages, and update as needed. You can also contact our customer engagement team at [email protected] if you have questions about our packages.
Criando um aplicativo de depuração do iOS
OPCIONAL
Você pode usar os recursos de configuração de compilação do Xcode para configurar um aplicativo de depuração fácil de usar. Ele permitirá que você alterne entre seus aplicativos de depuração e produção tocando nas condições de compilação ativas do Xcode.
Observação
Se você não se importa em misturar dados de produção com tráfego de teste, pode pular para o teste da integração. Todos os testes podem ser realizados para aplicativos de produção e depuração.
This is achieved by configuring a User-Defined Setting in your project's Build Settings and exposing it via an info.plist
property.
Etapa 1: adicione um aplicativo de depuração à AppsFlyer
Adicione um novo aplicativo iOS pendente à AppsFlyer ou peça a um membro da equipe com acesso ao painel para adicioná-lo. Escolha qualquer ID de aplicativo disponível—você precisará disso na etapa 3.
Etapa 2: adicione uma configuração definida pelo usuário
- No Xcode, na visualização do navegador de arquivos, selecione a raiz do projeto e vá para Configurações de Construção.
- Click + in the toolbar and select Add User-Defined Setting. In this case, we name it
AF_APP_ID
. - Expanda a Configuração Definida pelo Usuário que você acaba de criar:
- Defina a Configuração Condicional de Depuração para a ID do aplicativo de teste (mencionado na etapa 1)
- Defina a Configuração Condicional de Lançamento para a ID do aplicativo de produção.

Etapa 3: exponha IDs de aplicativos via info.plist
Go to the project's info.plist
and add a new property (called AFAppID
in this case). Set its value to $(AF_APP_ID)
(based on the User-Defined Setting name in step 2).

Etapa 4: recupere e defina o ID do aplicativo
To access and use app ID during SDK initialization, add the following code to didFinishLaunchingWithOptions
No seu AppDelegate
:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// ...
guard let appID : String = Bundle.main.object(forInfoDictionaryKey: "AFAppID") as? String else {
fatalError("Cannot find app ID")
}
AppsFlyerLib.shared().appleAppID = appID
// ...
return true
}
Etapa 5: execute o aplicativo usando a configuração de compilação de depuração
Para alterar a configuração de construção ativa:
- vá para Produto > Esquema > Editar Esquema....
- Selecione Executar e altere a Configuração de criação para Depurar ou Liberar, conforme necessário.

Agora, quando você usar a configuração de depuração para criar seu aplicativo, o Xcode usará a ID do aplicativo de depuração que você configurou na etapa 2.
Atualizado 2 meses atrás