Rastreamento de desinstalação
Faça o rastreamento de desinstalações do app para medir a retenção de usuários e otimizar campanhas de reengajamento, integrando o Apple Push Notification Service (APNs) ao SDK do Singular.
Importante: O rastreamento de desinstalação requer a configuração do APNs no seu app. Consulte a documentação do framework UserNotifications da Apple para obter os detalhes completos de implementação.
Pré-requisitos
Configurar a plataforma Singular
Antes de implementar o rastreamento de desinstalação no seu app, configure seu app na plataforma Singular seguindo o guia Configuração do rastreamento de desinstalação no iOS .
Requisitos do sistema
O rastreamento de desinstalação requer o Apple Push Notification Service e configurações específicas do dispositivo.
Requisitos do APNs ( fonte ):
- Versão do iOS: Os dispositivos devem executar o iOS 10.0 ou superior para o framework UserNotifications
- Certificado APNs: Configure certificados ou tokens APNs no portal Apple Developer
- Capacidade de push: Habilite a capability Push Notifications nas configurações do projeto no Xcode
- Permissão do usuário: Solicite e obtenha a autorização do usuário para notificações push
Observação: Usuários que recusarem a permissão de notificações push ou que utilizarem dispositivos sem suporte ao APNs não serão incluídos no rastreamento de desinstalações.
Etapas de implementação
Etapa 1: Habilitar notificações push
Configure seu projeto no Xcode para oferecer suporte a notificações push, caso ainda não esteja habilitado.
- Abra seu projeto no Xcode
- Selecione o target do seu app e vá para Signing & Capabilities
- Clique em + Capability e adicione Push Notifications
- Certifique-se de que Remote notifications esteja marcado em Background Modes
Etapa 2: Solicitar autorização do usuário
Solicite permissão dos usuários para receber notificações push usando o framework UserNotifications.
import UIKit
import UserNotifications
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Set notification delegate
UNUserNotificationCenter.current().delegate = self
// Request authorization for notifications
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(options: authOptions) { granted, error in
if let error = error {
print("Notification authorization error: \(error.localizedDescription)")
}
if granted {
// Register for remote notifications on main thread
DispatchQueue.main.async {
application.registerForRemoteNotifications()
}
}
}
return true
}
}
#import <UIKit/UIKit.h>
#import <UserNotifications/UserNotifications.h>
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Set notification delegate
[UNUserNotificationCenter currentNotificationCenter].delegate = self;
// Request authorization for notifications
UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert |
UNAuthorizationOptionBadge |
UNAuthorizationOptionSound;
[[UNUserNotificationCenter currentNotificationCenter]
requestAuthorizationWithOptions:authOptions
completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (error) {
NSLog(@"Notification authorization error: %@", error.localizedDescription);
}
if (granted) {
// Register for remote notifications on main thread
dispatch_async(dispatch_get_main_queue(), ^{
[application registerForRemoteNotifications];
});
}
}];
return YES;
}
@end
Etapa 3: Registrar o token do dispositivo APNs
Recupere o token do dispositivo APNs e envie-o ao Singular para o rastreamento de desinstalação.
Recuperar e definir o token
Implemente o callback
didRegisterForRemoteNotificationsWithDeviceToken
para capturar o token APNs e registrá-lo no Singular.
import Singular
func application(_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
// Register the device token with Singular for uninstall tracking
Singular.registerDeviceToken(forUninstall: deviceToken)
print("APNs device token registered with Singular")
// Also send to your server if needed for your own push notifications
sendTokenToServer(deviceToken)
}
func application(_ application: UIApplication,
didFailToRegisterForRemoteNotificationsWithError error: Error) {
print("Failed to register for remote notifications: \(error.localizedDescription)")
}
private func sendTokenToServer(_ deviceToken: Data) {
// Implement your server communication logic here
}
#import <Singular/Singular.h>
- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
// Register the device token with Singular for uninstall tracking
[Singular registerDeviceTokenForUninstall:deviceToken];
NSLog(@"APNs device token registered with Singular");
// Also send to your server if needed for your own push notifications
[self sendTokenToServer:deviceToken];
}
- (void)application:(UIApplication *)application
didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
NSLog(@"Failed to register for remote notifications: %@", error.localizedDescription);
}
- (void)sendTokenToServer:(NSData *)deviceToken {
// Implement your server communication logic here
}
Melhor prática:
Chame
registerDeviceTokenForUninstall
imediatamente quando o token for recebido para garantir que o rastreamento
de desinstalação esteja habilitado desde a primeira sessão do app.
Formato dos dados do token
Passe o token do dispositivo APNs para o Singular em seu formato binário nativo, conforme recebido da Apple.
Importante: O token APNs são dados binários (NSData/Data). Passe-o diretamente para o Singular sem conversão. Se seu app precisar converter o token em uma string hexadecimal para outros fins, mantenha o objeto NSData original para o Singular.
Exemplo de formato hexadecimal:
b0adf7c9730763f88e1a048e28c68a9f806ed032fb522debff5bfba010a9b052
Verificação e solução de problemas
Verificar a implementação
Confirme se o rastreamento de desinstalação está funcionando corretamente.
- Verifique os logs: Confirme que o registro do token APNs aparece nos seus logs
- Teste a geração do token: Garanta que os tokens sejam gerados na primeira execução do app
- Monitore o dashboard: Verifique no dashboard do Singular os dados de rastreamento de desinstalação após 24-48 horas
- Teste as permissões: Confirme que o aviso de autorização de notificações é exibido e funciona corretamente
Problemas comuns
- Token não gerado: Confirme se a capability Push Notifications está habilitada no Xcode e se os certificados APNs estão configurados no portal Apple Developer
- Usuário recusou as permissões: Implemente uma lógica para lidar adequadamente com permissões de notificação recusadas
- Dados ausentes: Certifique-se de que os dispositivos executem iOS 10.0 ou superior e que os usuários tenham concedido as permissões de notificação
- Erro de configuração: Confirme se o rastreamento de desinstalação está habilitado nas configurações da plataforma Singular
- Limitações do simulador: Os tokens APNs não estão disponíveis no simulador do iOS; teste em dispositivos físicos
Recursos adicionais: Para uma solução de problemas detalhada, consulte o Guia de configuração do rastreamento de desinstalação e a documentação do UserNotifications da Apple .