Идентификаторы экземпляров идентифицируют отдельные установки вашего приложения. Поскольку каждый идентификатор экземпляра уникален для конкретного приложения и устройства, они дают сервисам Firebase возможность ссылаться на определенные экземпляры приложения. Например, Cloud Messaging использует идентификаторы экземпляров, чтобы определить, на какие устройства отправлять сообщения.
Некоторые сервисы Firebase используют идентификаторы экземпляров для реализации своих функций:
- Analytics
- Crashlytics
- Cloud Messaging
- Remote Config
Управление данными приложения, связанными с идентификаторами экземпляров
Службы, которые используют идентификаторы экземпляров для идентификации установок, также используют их в качестве ключа для связи соответствующих данных с этим устройством. Например, Crashlytics использует идентификаторы экземпляров для регистрации сбоев, происходящих на устройстве, Remote Config использует их для получения конфигураций, а Analytics использует идентификаторы экземпляров для отслеживания определенных аудиторий.
Данные, связанные с идентификаторами экземпляров, обычно не идентифицируют личность, но все равно может быть полезно предоставить пользователям возможность управлять ими. С этой целью Firebase предлагает два способа управления сбором данных, связанных с идентификатором экземпляра:
- Удалить идентификаторы экземпляров. Вы можете удалить идентификатор экземпляра с помощью вызова API на стороне сервера или клиента. При удалении идентификатора экземпляра удаляется сам идентификатор и все связанные с ним данные.
- Отключите службы, генерирующие идентификаторы. Большинство сервисов Firebase, использующих идентификаторы экземпляров, автоматически генерируют новый идентификатор, если его нет на устройстве при запуске. Чтобы ваше приложение не создавало нежелательные идентификаторы экземпляров, отключите автоматическую инициализацию для этих служб.
Удаление идентификатора экземпляра
Удаление идентификатора экземпляра также удаляет данные, связанные с этим идентификатором, в любой из служб Firebase, перечисленных выше. Это делает удаление идентификатора полезным инструментом для очистки пользовательских данных, но также имеет одну оговорку: если вы используете несколько сервисов, использующих идентификаторы экземпляров, удаление идентификатора удаляет данные из всех них.
Служба идентификатора экземпляра создает новый идентификатор в течение нескольких дней, если вы не отключите все службы, генерирующие идентификатор экземпляра, в своем приложении. Firebase считает вновь созданный идентификатор совершенно новым экземпляром приложения и никак не связывает его с предыдущим идентификатором.
Удаление идентификатора с помощью вызова клиентского API
Чтобы удалить идентификаторы, сгенерированные службами Firebase, вызовите соответствующий метод из API идентификатора экземпляра Firebase:
Быстрый
InstanceID.instanceID().deleteID { error in
if let error = error {
print("Error deleting instance ID: \(error)")
}
}
Цель-C
[FIRInstanceID instanceID] deleteIDWithHandler:^(NSError *error) {
if error != nil {
NSLog(@"Error deleting instance ID: %@", error);
}
}];
Андроид
FirebaseInstanceId.deleteInstanceId();
Удаление идентификатора с помощью вызова API сервера
Чтобы удалить идентификатор экземпляра с помощью вызовов API сервера, добавьте Firebase Admin SDK на свой сервер , если вы еще этого не сделали.
После добавления удалите идентификаторы, вызвав функцию удаления идентификатора экземпляра на выбранном вами языке:
Node.js
// An Instance ID sent from a client service SDK
const idToDelete = 'INSTANCE_ID';
admin.instanceId().deleteInstanceId(idToDelete);
Ява
// An Instance ID sent from a client service SDK
String idToDelete = "INSTANCE_ID";
FirebaseInstanceId.getInstance().deleteInstanceIdAsync(idToDelete).get();
Питон
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)
Идти
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)
}
Когда вы удаляете идентификатор экземпляра с помощью вызова API сервера, службы Firebase удаляют связанные данные, прекращают принимать новые данные для этого идентификатора и в течение нескольких дней уведомляют клиентское приложение об удалении идентификатора. Пока Firebase не уведомит клиентское приложение, функциональность некоторых сервисов приложения может быть ограничена.
Если вы хотите удалить текущий идентификатор экземпляра и немедленно использовать службы Firebase с новым независимым идентификатором, используйте один из клиентских API, указанных выше, для обработки удаления.
Отключить генерацию идентификатора экземпляра
Службы, использующие идентификаторы экземпляров, автоматически генерируют новый идентификатор при их инициализации в приложении, у которого его в настоящее время нет. Обычно эти службы также автоматически инициализируются при запуске вашего приложения. Чтобы отключить генерацию идентификаторов экземпляров, вам необходимо отключить автоматическую инициализацию для служб, которые их используют.
Распространенный подход заключается в том, чтобы предоставить пользователям возможность согласиться на сбор данных: отключить автоматическую инициализацию для служб, использующих идентификаторы экземпляров, реализовать диалог, который запрашивает у пользователей согласие на сбор данных, и повторно включить службы вручную один раз. у вас есть согласие.
Прочтите приведенные ниже руководства, чтобы узнать, как отключить автоматическую инициализацию для служб, использующих Instance-ID, и вместо этого инициализировать их вручную:
- Cloud Messaging : запретить автоинициализацию (Android) или запретить автоинициализацию (iOS+)
- Crash Reporting : включите возможность создания отчетов
- Analytics : настройка сбора данных аналитики