Integração do SDK da AppsFlyer - iOS

ios.pngVersão do SDK: 4.8.3 (Notas de lançamento)

1. Visão geral

Este guia fornece detalhes sobre como integrar o SDK da AppsFlyer em seu aplicativo do iOS. Você pode acompanhar instalações, atualizações, sessões e eventos adicionais no aplicativo, além de instalações de aplicativos (incluindo compras no aplicativo, níveis de jogos, etc.) para avaliar o ROI e os níveis de engajamento do usuário. O SDK do iOS é compatível com todos os dispositivos iOS (iPhone, iPod, iPad) com a versão 6 do iOS e as mais recentes.

 Observação

O SDK da AppsFlyer está em total conformidade com as redes NAT64/DNS64 com IPv6 da Apple. Para mais informações, clique aqui.

 Importante!

O SDK da AppsFlyer utiliza a classe NSUserDefaults. Limpar todos os valores da NSUserDefaults pode causar problemas de atribuição.

2. Início rápido

2.1 Baixar e adicionar o SDK da AppsFlyer ao Xcode

CocoaPods Carthage Estrutura estática Biblioteca estática
  • Certifique-se de ter baixado e instalado a versão mais recente do CocoaPods.
  • Adicione a linha a seguir ao seu Podfile:
    pod 'AppsFlyerFramework'
  • execute o pod install
  • Certifique-se de usar o arquivo .xcworkspace para abrir seu projeto no Xcode, em vez do arquivo .xcodeproj, daqui em diante.

O SDK da AppsFlyer utiliza as seguintes estruturas nativas:

AdSupport.framework
Essa estrutura é necessária para coletar o IDFA dos dispositivos.
Sem o IDFA você não consegue acompanhar os anúncios do Facebook, Twitter, Google e outras redes.
iAd.framework
Essa estrutura é necessária para acompanhar os Anúncios do Apple Search em seu aplicativo.

2.2 Configurar integração no App Delegate

Abra seu arquivo AppDelegate.m do aplicativo e importe o SDK da AppsFlyer:

Swift Objective-C
importe a AppsFlyerLib

3. Inicialização do SDK

Initialize the SDK in the didFinishLaunchingWithOptions method with your app ID taken from iTunes Connect and your AppsFlyer dev key

Note that you need to set the app ID here with digits only, without the "id" prefix.

Swift Objective-C
AppsFlyerTracker.shared().appsFlyerDevKey = "<your-appsflyer-dev-key>";
AppsFlyerTracker.shared().appleAppID = "123456789"
AppsFlyerTracker.shared().delegate = self
#ifdef DEBUG
AppsFlyerTracker.shared().isDebug = true
#endif

 Observação

Se isDebug=true estiver definido, os logs do SDK da AppsFlyer são mostrados no console do xCode

 

  • Adicione o código a seguir na função applicationDidBecomeActive:
Swift Objective-C
func applicationDidBecomeActive(application: UIApplication) { 
                    // Track Installs, updates & sessions(app opens) (You must include this API to enable tracking) 
                   AppsFlyerTracker.shared().trackAppLaunch() 
                   // your other code here.... }

4. Acompanhamento de eventos no aplicativo

Os eventos no aplicativo fornecem insights sobre o que está acontecendo em seu aplicativo. É aconselhável investir tempo para definir os eventos que deseja avaliar para permitir que o acompanhamento do ROI (Retorno sobre o investimento) e do LTV (Valor de vida útil).

O acompanhamento de eventos no aplicativo é realizado chamando trackEvent com o nome do evento e os parâmetros de valor. Consulte Eventos no aplicativo para mais detalhes.

Um nome de evento no aplicativo não deve ultrapassar 45 caracteres. Nomes de eventos com mais de 45 caracteres não aparecem no painel, mas apenas nos Dados brutos e nas APIs de pull e push.

Exemplo: Evento no aplicativo de nível alcançado

Swift Objective-C
AppsFlyerTracker.shared().trackEvent(AFEventLevelAchieved, withValues: [ 
AFEventParamLevel: 9,
AFEventParamScore : 100
]);

Isso gera um tipo de evento af_level_achieved (usando a constante AFEventLevelAchieved) com os seguintes valores de evento: {af_level: 9 , af_score: 100} 

 Observação

A AppsFlyer suporta caracteres não pertencentes ao Inglês com eventos no aplicativo, ou com qualquer outra API de SDK, começando da versão 4.8.1 do SDK para iOS.

Do not to add any currency symbol or decimal points to the figures, as these are not recognized

 Usage Example

Swift Objective C
AppsFlyerTracker.shared().trackEvent(AFEventPurchase, withValues: [
    AFEventParamRevenue: @"1200",
    AFEventParamCurrency : @"JPY"
    ]); 

5. Acompanhamento de links diretos

 Dica

É altamente recomendável ter links diretos integrados em seu aplicativo.

O iOS9 e superior exigem que seu aplicativo ofereça suporte a Links Universais Para mais detalhes, clique aqui.


Para relatar essas inicializações, adicione o código a seguir à delegação do seu aplicativo:

Swift Objective-C
// Reports app open from a Universal Link for iOS 9 or later
    func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
        AppsFlyerTracker.shared().continue(userActivity, restorationHandler: restorationHandler)
        return true
    }

    // Reports app open from deep link from apps which do not support Universal Links (Twitter) and for iOS8 and below
    func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
        AppsFlyerTracker.shared().handleOpen(url, sourceApplication: sourceApplication, withAnnotation: annotation)
        return true
    }

    // Reports app open from deep link for iOS 10 or later
    func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        AppsFlyerTracker.shared().handleOpen(url, options: options)
        return true
    }

6. Acompanhamento de receitas

Use the af_revenue (AFInAppEventParameterName.REVENUE) event parameter to count revenue as part of an in-app event. You can populate it with any numeric value, positive or negative.

 Observação

O AFEventParamRevenue (equivalente a usar af_revenue) é o ÚNICO parâmetro de evento que é considerado na AppsFlyer como receita real nos dados brutos e no painel. Para mais detalhes, clique aqui.


Exemplo: evento no aplicativo de receita

Swift Objective-C
AppsFlyerTracker.shared().trackEvent(AFEventPurchase, withValues: [
        AFEventParamContentId:"1234567",
        AFEventParamContentType : "category_a",
        AFEventParamRevenue: 1.99,
        AFEventParamCurrency:"USD"
    ]);

7. Obter dados de conversão

A AppsFlyer permite que você acesse os dados de atribuição de usuário em tempo real para cada nova instalação, diretamente do nível do SDK. Assim, você pode personalizar conteúdos para os usuários ou os direcionar para atividades específicas dentro do aplicativo, o que pode aumentar consideravelmente o engajamento deles em seu aplicativo. 

Para mais informações sobre essa funcionalidade avançada, clique aqui.

8. Identificadores de usuários

Há várias opções para recuperar identificadores de usuários:

Obter ID de dispositivo da AppsFlyer

A identificação de dispositivo única da AppsFlyer é criada para cada nova instalação de um aplicativo. É possível obtê-la utilizando o código a seguir:

Swift Objective-C
let appsflyerId = AppsFlyerTracker.shared().getAppsFlyerUID()

Definir ID de usuário cliente

Definir sua própria identificação de cliente lhe permite fazer uma referência cruzada da sua própria identificação única com a identificação única da AppsFlyer e com as identificações de outros dispositivos. Essa identificação está disponível nos relatórios CSV da AppsFlyer junto com as APIs de postback para referência cruzada com suas identificações internas.

Para definir sua identificação de usuário cliente:

Swift Objective-C
AppsFlyerTracker.shared().customerUserID = "my user id"

 Observação importante

A customerUserID DEVE ser definida antes do trackAppLaunch. Recomenda-se definir sua ID de usuário cliente o quanto antes, pois ela é associada apenas a eventos relatados após sua configuração. A identificação do usuário cliente também pode ser usada para concluir integrações com plataformas analíticas como Mixpanel e Swrve.

Para mais informações sobre ID de usuário cliente, clique aqui .

Definir o e-mail do usuário

A AppsFlyer lhe permite informar um ou mais endereços de e-mail de usuários se você os coletar em seu aplicativo. Os valores de e-mail podem ser criptografados seguindo os métodos de criptografia: Sha1, MD5 e simples.

Exemplo: coleta de e-mail do usuário

Swift Objective-C
AppsFlyerTracker.shared().setUserEmails( ["email1@domain.com", "email2@domain.com"], with: EmailCryptTypeSHA1)

 Observação

Informações de identificação pessoal (PII), como endereços de e-mail, não são retidas pela AppsFlyer, nem são apresentadas em relatórios. O objetivo da coleta dessas informações é apenas para propósitos de postback às fontes de mídia.

IDFA e IDFV

A AppsFlyer coleta automaticamente o IDFA (identificador para anunciantes) e o IDFV (identificador para fornecedores) se AdSupport.framework estiver incluído no aplicativo.

9. Recursos opcionais

Acompanhamento de desinstalações

Para o Acompanhamento de desinstalações, ative as notificações remotas por push em seu aplicativo. Consulte o Guia de programação de notificação remota da Apple para mais detalhes.

Siga as instruções de integração do SDK do iOS para concluir a configuração do recurso de desinstalação.

Acompanhamento das notificações por push

Para ativar o acompanhamento de inicializações de aplicativos em notificações por push, adicione o código a seguir à delegação do seu aplicativo:

Swift Objective-C
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
AppsFlyerTracker.shared().handlePushNotification(userInfo)
}

A mensagem por push deve ter um parâmetro af com os parâmetros de acompanhamento da AppsFlyer.

Exemplo de mensagem:}

{
"aps": {
"alert": "Push text",
"sound": "default",
"category": "REMINDER_CATEGORY"
},
"_p": 123456,
"payloadKey": "payloadValue"
"af": {
"pid": "swrve_int",
"is_retargeting": true,
"c": "test_campaign"
}
}

Acompanhamento de promoções cruzadas

A AppsFlyer permite que você acompanhe e atribua instalações originadas de uma promoção cruzada de um de seus aplicativos dentro do aplicativo atual do usuário.  Aplicativos de promoções cruzadas podem ser um importante fator de crescimento para impulsionar novas instalações para seus aplicativos.

Para mais detalhes, consulte o artigo Acompanhamento de promoções cruzadas aqui.

Acompanhamento de convites de usuários

A AppsFlyer permite que você acompanhe e atribua instalações originadas de convites de usuários dentro do seu aplicativo. Permitir que seus usuários existentes convidem amigos e contatos como novos usuários do seu aplicativo pode ser um fator de crescimento fundamental para o seu aplicativo. 
 
Para mais detalhes, consulte o artigo Acompanhamento de convites de usuários aqui.

Definir código de moeda

Você pode definir um código de moeda global usando a API abaixo, além de códigos de moeda específicos que podem ser usados como parte de cada evento no aplicativo enviado para a AppsFlyer. O código de moeda global é usado quando AFEventParamCurrency não é enviado como parte de um evento no aplicativo.

USD é o valor padrão. Você pode encontrar códigos de moeda ISO aceitáveis aqui.

Use a seguinte API para definir o código de moeda:

public void currencyCode(String currencyCode);

Exemplo de uso:

Swift Objective-C
AppsFlyerTracker.shared().currencyCode = "USD"

Validação de instalações no aplicativo

 Observação

Essa função oferece suporte para o iOS7 e superior.

O SDK da AppsFlyer pode oferecer verificação do servidor de compras no aplicativo. Para configurar o acompanhamento de validação de recebimento, é necessário chamar o método validateAndTrackInAppPurchase dentro do SKStoreKit’s completeTransaction: retorno de chamada. Essa chamada automaticamente gera um evento af_purchase no aplicativo.

- (void) validateAndTrackInAppPurchase:(NSString *) productIdentifier
price:(NSString *) price
currency:(NSString *) currency
transactionId:(NSString *) tranactionId
additionalParameters:(NSDictionary *) params
success:(void (^)(NSDictionary *response)) successBlock
failure:(void (^)(NSError *error, id reponse)) failedBlock;

 Observação

O parâmetro de preço deve conter a receita total associada ao evento de compra validado.


Essa chamada tem dois blocos de callback: um para "sucesso" e outro para "falha" (por qualquer motivo, incluindo falha na validação). Em caso de sucesso, um dicionário é retornado com os dados de validação do recebimento fornecidos pelos servidores da Apple. 

 Importante

Para fins de teste, recomendamos definir o sinalizador useReceiptValidationSandbox para Sim, pois isso redireciona as solicitações para os servidores da área restrita da Apple.

#ifdef DEBUG
    [AppsFlyerTracker sharedTracker].useReceiptValidationSandbox = YES;
#endif

 

 Exemplo

Objective-C Swift
[[AppsFlyerTracker sharedTracker] validateAndTrackInAppPurchase:product.productIdentifier price:product.price.stringValue
currency:@"USD"
transactionId:trans.transactionIdentifier
additionalParameters:@{@"test": @"val" , @"test1" : @"val 1"}
success:^(NSDictionary *result){
  NSLog(@"Purchase succeeded And verified!!! response: %@", result[@"receipt"]);
} failure:^(NSError *error, id response) {
  NSLog(@"response = %@", response);
}];

Para uma lista dos possíveis valores de retorno para validação dos recebimentos, consulte a documentação da Apple aqui.

Anonimizar

A AppsFlyer fornece um método para anonimizar identificadores de usuários específicos em suas análises. Esse método está em conformidade com os requisitos de privacidade mais recentes e cumpre as políticas de privacidade e dados do Facebook. O padrão é NÃO, ou seja, a anonimização não está habilitada por padrão.

Use esta API durante a inicialização do SDK para anonimizar explicitamente as instalações, eventos e sessões de um usuário:

Swift Objective-C
AppsFlyerTracker.shared().deviceTrackingDisabled = true

O acompanhamento pode ser reiniciado ao chamar deviceTrackingDisabled novamente definido como falso.

 Aviso

A anonimização de usuários afeta GRAVEMENTE suas informações de atribuição.
Use essa opção APENAS em regiões que legalmente impedem você de coletar informações de seus usuários.

Personalizar o tempo entre sessões

Para que a AppsFlyer contabilize duas sessões separadas, o tempo padrão entre cada sessão deve ser de, no mínimo, 5 segundos.  A sessão começa quando o usuário abre o aplicativo.  Se você quiser configurar um tempo diferente entre as sessões, use a seguinte API:

Swift Objective-C
AppsFlyerTracker.shared().minTimeBetweenSessions = <your_custom_time_in_seconds>

Sessões em segundo plano para aplicativos utilitários

Indisponível no iOS. 
 

Extensões de aplicativos do iOS e WatchKit

A extensão do aplicativo exige permissões para usar a Internet:

  1. Acesse o arquivo info.plist da extensão do seu aplicativo.
  2. Em NSExtension / NSExtensionAttributes defina o sinalizador RequestsOpenAccess para SIM.

Adicione o código a seguir ao UIViewController viewDidLoad da extensão do aplicativo:

Swift Objective-C
override func viewDidLoad() {    
        super.viewDidLoad()
        AppsFlyerTracker.shared().appsFlyerDevKey = "MY_APPSFLYER_KEY"

        // MY_APP_ID below stands for you app ID on iTunes Connect. Should be 9 or 10 digits.
        AppsFlyerTracker.shared().appleAppID = "MY_APP_ID"
                
        AppsFlyerTracker.sharedTracker().trackAppLaunch()
    }

Para receber dados de atribuição na extensão do aplicativo, siga as instruções contidas aqui e implemente-as no UIViewController do seu aplicativo em vez do AppDelegate.

Exclusão

Em alguns casos extremos você pode querer encerrar todos os acompanhamentos do SDK devido à conformidade legal e de privacidade. Você pode fazer isso com a API isStopTracking. Após a execução desta API, nosso SDK não se comunicará mais com nossos servidores e parará de funcionar.

Swift Objective-C
AppsFlyerTracker.shared().isStopTracking = true

Coletar nome do dispositivo

O SDK da AppsFlyer permite que você colete o nome do dispositivo para análise interna. Por padrão, este recurso está desativado. Para ativá-lo, use a seguinte API:

Swift Objective-C
AppsFlyerTracker.shared().shouldCollectDeviceName = false`

 Importante

O nome do dispositivo pode ser considerado um dado pessoal em certas regiões. Colete essa informação somente se estiver legalmente autorizado e tiver recebido o consentimento explícito do usuário para fazê-lo.

Setting Additional Data

The setAdditionalData API is required to integrate on the SDK level with several external partner platforms, including Segment, Adobe and Urban Airship. Use this API only if the integration article of the platform specifically states setAdditionalData API is needed.
The following is a code example for implementing setAdditionalData on iOS for Objective-C or Swift

Ojective-C Swift
NSDictionary* CustomDataMap = [[NSDictionary alloc] initWithObjectsAndKeys:@"value_of_param_1", @"custom_param_1", nil];
    
[[AppsFlyerTracker sharedTracker] setAdditionalData:CustomDataMap];

10. Testando sua integração

Para mais detalhes sobre como testar sua integração, clique aqui.

11. Enviar seu aplicativo para a Loja de aplicativos

Você pode encontrar as instruções sobre como enviar seu aplicativo para a Loja de aplicativos aqui.

mostrar
Esse artigo foi útil?
Usuários que acharam isso útil: 8 de 12

Comentários

0 comentário

Por favor, entrar para comentar.