Rastreamento de desinstalação
Rastreie desinstalações de aplicativos para medir a retenção de usuários e otimizar campanhas de reengajamento integrando o Serviço de Notificação Push da Apple (APNs) com o SDK Singular.
Importante: O rastreamento de desinstalação requer a configuração de APNs em seu aplicativo. Consulte a documentação da Estrutura de UserNotifications da Applepara obter detalhes completos de implementação.
Pré-requisitos
Configurar a Plataforma Singular
Antes de implementar o rastreamento de desinstalação em seu aplicativo, configure seu aplicativo na plataforma Singular seguindo o guia Configurando o rastreamento de desinstalação do iOS.
Requisitos do sistema
O rastreamento de desinstalação requer o Serviço de Notificação por Push da Apple e configurações específicas do dispositivo.
Requisitos de APNs(fonte):
- Versão do iOS: Os dispositivos devem executar o iOS 10.0 ou superior para a estrutura UserNotifications
- Certificado de APNs: Configurar certificados ou tokens de APNs no portal de desenvolvedores da Apple
- Capacidade de envio: Ativar a capacidade de notificações push nas definições do projeto Xcode
- Permissão do utilizador: Solicitar e obter autorização do utilizador para notificações push
Nota: Os utilizadores que recusarem as permissões de notificações push ou utilizarem dispositivos sem suporte para APNs não serão monitorizados para desinstalações.
Etapas de implementação
Etapa 1: ativar as notificações por push
Configure o seu projeto Xcode para suportar notificações push, se ainda não estiver ativado.
- Abra o seu projeto no Xcode
- Selecione o destino da aplicação e vá para Signing & Capabilities
- Clique em + Capacidade e adicione Notificações push
- Certifique-se de que as Notificações remotas estejam marcadas em Modos em segundo plano
Passo 2: Solicitar autorização do utilizador
Solicite a permissão dos utilizadores para receber notificações push utilizando a estrutura 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
Passo 3: Registar o Token de Dispositivo APNs
Recupere o token do dispositivo APNs e envie-o para a Singular para rastrear a desinstalação.
Recuperar e definir o token
Implemente o retorno de chamada didRegisterForRemoteNotificationsWithDeviceToken para capturar o token de 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
}
Prática recomendada: Chame registerDeviceTokenForUninstall imediatamente quando o token for recebido para garantir que o rastreamento de desinstalação seja ativado desde a primeira sessão do aplicativo.
Formato dos dados do token
Passe o token de dispositivo APNs para a Singular em seu formato binário nativo, conforme recebido da Apple.
Importante: O token APNs é um dado binário (NSData/Data). Passe-o diretamente para a Singular sem conversão. Se seu aplicativo precisar converter o token em uma cadeia hexadecimal para outros fins, mantenha o objeto NSData original para o Singular.
Exemplo de formato hexadecimal:b0adf7c9730763f88e1a048e28c68a9f806ed032fb522debff5bfba010a9b052
Método de configuração alternativo
Definir token durante a inicialização
Se tiver o token de APNs disponível antes da inicialização do SDK, configure-o no objeto SingularConfig.
// Get cached token if available
if let cachedToken = getCachedAPNsToken() {
let config = SingularConfig(apiKey: "SDK_KEY", andSecret: "SDK_SECRET")
config?.apnsDeviceToken = cachedToken
Singular.start(config)
}
func getCachedAPNsToken() -> Data? {
// Implement your token caching logic here
return nil
}
// Get cached token if available
NSData *cachedToken = [self getCachedAPNsToken];
if (cachedToken) {
SingularConfig *config = [[SingularConfig alloc]
initWithApiKey:@"SDK_KEY"
andSecret:@"SDK_SECRET"];
config.apnsDeviceToken = cachedToken;
[Singular start:config];
}
- (NSData *)getCachedAPNsToken {
// Implement your token caching logic here
return nil;
}
Assinatura do método:
@property (nonatomic, strong) NSData *apnsDeviceToken;
Verificação e resolução de problemas
Verificar a implementação
Confirme se o acompanhamento da desinstalação está a funcionar corretamente.
- Verificar registos: Verificar se o registo do token APNs aparece nos seus registos
- Teste a geração de tokens: Garantir que os tokens sejam gerados na primeira inicialização do aplicativo
- Monitorar o painel: Verifique o painel do Singular para obter dados de rastreamento de desinstalação após 24-48 horas
- Testar permissões: Verificar se o prompt de autorização de notificação aparece e funciona corretamente
Problemas comuns
- Token não gerado: Verifique se o recurso Notificações por push está ativado no Xcode e se os certificados APNs estão configurados no portal do desenvolvedor da Apple
- Permissões recusadas pelo utilizador: Implemente uma lógica para lidar com permissões de notificação recusadas de forma elegante
- Dados em falta: Certifique-se de que os dispositivos executam o iOS 10.0+ e que os utilizadores concederam permissões de notificação
- Erro de configuração: Confirmar se o rastreamento de desinstalação está ativado nas configurações da plataforma Singular
- Limitações do simulador: Os tokens APNs não estão disponíveis no Simulador iOS; teste em dispositivos físicos
Recursos adicionais: Para uma resolução de problemas detalhada, consulte o Guia de Configuração do Controlo de Desinstalaçãoe a Documentação UserNotifications da Apple.