Os códigos de instância identificam instalações individuais do seu aplicativo. Como cada código de instância é exclusivo para um aplicativo e dispositivo específicos, eles oferecem aos serviços do Firebase uma forma de se referir a instâncias de aplicativos específicos. Por exemplo, o Cloud Messaging usa IDs de instância para determinar para quais dispositivos enviar mensagens.
Vários serviços do Firebase usam IDs de instância para controlar os recursos:
- Analytics
- Crashlytics
- Cloud Messaging
- Remote Config
Gerenciar dados de apps associados a IDs de instância
Os serviços que usam IDs de instância para identificar instalações também os utilizam como chave para associar dados relevantes a esse dispositivo. Por exemplo, o Crashlytics usa IDs de instância para registrar falhas no dispositivo, o Remote Config os usa para buscar configurações e o Analytics usa IDs de instância para rastrear determinados públicos.
Os dados associados aos IDs de instância geralmente não são de identificação pessoal, mas fornecem aos usuários uma opção para gerenciar esses dados. O Firebase oferece duas maneiras de gerenciar a coleta de dados relacionados aos IDs de instância:
- Excluir IDs de instância. Você pode excluir um ID com uma chamada de API do lado do servidor ou do cliente. A exclusão do ID remove todos os dados associados a ele.
- Desativar serviços que geram IDs. A maioria dos serviços do Firebase que usam IDs de instância gera automaticamente um novo ID se não houver um no dispositivo quando eles forem iniciados. Para garantir que seu app não crie códigos de instância indesejados, desative a inicialização automática desses serviços.
Excluir um ID de instância
A exclusão de um ID de instância também remove os dados associados a ele em qualquer um dos serviços do Firebase listados acima. Isso faz com que a exclusão de IDs seja uma ferramenta útil na limpeza de dados do usuário, mas esse procedimento tem uma desvantagem: se você usar vários serviços que dependem dos IDs, a exclusão de um ID remove os dados de todos os outros.
O serviço do ID de instância cria um novo ID em alguns dias, a menos que você desative todos os serviços de geração de IDs de instância no seu aplicativo. O Firebase considera o ID recém-criado como uma nova instância do aplicativo e não o associa ao ID anterior de forma alguma.
Excluir um ID com uma chamada de API do cliente
Para excluir os IDs gerados pelos serviços do Firebase, chame o método apropriado da API Firebase Instance ID:
Swift
InstanceID.instanceID().deleteID { error in
if let error = error {
print("Error deleting instance ID: \(error)")
}
}
Objective-C
[FIRInstanceID instanceID] deleteIDWithHandler:^(NSError *error) {
if error != nil {
NSLog(@"Error deleting instance ID: %@", error);
}
}];
Android
FirebaseInstanceId.deleteInstanceId();
Excluir um ID com uma chamada de API do servidor
Para excluir um ID de instância com chamadas de API do servidor, adicione o SDK Admin do Firebase ao seu servidor se ainda não tiver feito isso.
Depois de adicionar o SDK, exclua os IDs chamando a função de exclusão de ID de instância na linguagem de sua escolha:
Node.js
// An Instance ID sent from a client service SDK
const idToDelete = 'INSTANCE_ID';
admin.instanceId().deleteInstanceId(idToDelete);
Java
// An Instance ID sent from a client service SDK
String idToDelete = "INSTANCE_ID";
FirebaseInstanceId.getInstance().deleteInstanceIdAsync(idToDelete).get();
Python
from firebase_admin import instance_id
# An Instance ID sent from a client service SDK
id_to_delete = 'INSTANCE_ID'
instance_id.delete_instance_id(id_to_delete)
Go
client, err := app.InstanceId(ctx)
if err != nil {
log.Fatalln("error initializing client", err)
}
iidToDelete := "INSTANCE_ID"
if err := client.DeleteInstanceId(ctx, iidToDelete); err != nil {
log.Fatalln("error deleting iid", err)
}
Quando você exclui um ID de instância com uma chamada de API do servidor, os serviços do Firebase excluem os dados associados, deixam de aceitar novos dados para esse ID e, após alguns dias, notificam o app cliente sobre a exclusão. Até que o Firebase notifique o app cliente, alguns dos serviços do app podem ter a funcionalidade reduzida.
Se você quiser excluir o ID de instância atual e usar imediatamente os serviços do Firebase com um ID novo e independente, efetue a exclusão utilizando uma das APIs de cliente acima.
Desativar a geração de IDs de instância
Os serviços que usam IDs de instância geram automaticamente um novo ID quando são inicializados em um app que não contém um. Normalmente, esses serviços também são inicializados automaticamente quando o app é inicializado. Para desativar a geração de IDs, é necessário desativar a inicialização automática dos serviços que os utilizam.
Uma abordagem comum é oferecer aos usuários a opção de aceitar a coleta de dados. Para isso, desative a inicialização automática dos serviços que usam IDs de instância, implemente uma caixa de diálogo que solicita o consentimento para a coleta de dados e reative os serviços manualmente assim que você receber a autorização.
Leia os guias abaixo para descobrir como desativar a inicialização automática de serviços geradores de IDs de instância e como inicializá-los manualmente:
- Cloud Messaging: impedir a inicialização automática para Android ou para iOS+
- Crash Reporting: ativar a permissão para geração de relatórios
- Analytics: configurar a coleta de dados do Analytics