Управление данными идентификатора экземпляра

Идентификаторы экземпляров идентифицируют отдельные установки вашего приложения. Поскольку каждый идентификатор экземпляра уникален для определенного приложения и устройства, они позволяют службам Firebase ссылаться на определенные экземпляры приложения. Например, Cloud Messaging использует идентификаторы экземпляров, чтобы определять, на какие устройства отправлять сообщения.

Некоторые службы Firebase используют идентификаторы экземпляров для обеспечения своих функций:

  • Аналитика
  • Crashlytics
  • Обмен сообщениями в облаке
  • Прогнозы
  • Удаленная конфигурация

Управление данными приложения, связанными с идентификаторами экземпляров

Службы, которые используют идентификаторы экземпляров для идентификации установок, также используют их в качестве ключа для связывания соответствующих данных с этим устройством. Например, Crashlytics использует идентификаторы экземпляров для записи сбоев, происходящих на устройстве, Remote Config использует их для получения конфигураций, а Analytics использует идентификаторы экземпляров для отслеживания определенных аудиторий.

Данные , связанные с Instance идентификаторами , как правило , не лично идентифицирующим, но он все еще может быть полезным , чтобы дать пользователям возможность управлять ею. С этой целью Firebase предлагает два способа управления сбором данных, связанных с идентификатором экземпляра:

  • Удалить идентификаторы экземпляров. Вы можете удалить идентификатор экземпляра с помощью вызова API на стороне сервера или клиента. При удалении идентификатора экземпляра удаляется сам идентификатор и все связанные с ним данные.
  • Отключите службы, генерирующие идентификаторы. Большинство служб Firebase, использующих идентификаторы экземпляров, автоматически генерируют новый идентификатор, если его нет на устройстве при запуске. Чтобы ваше приложение не создавало нежелательных идентификаторов экземпляров, отключите автоматическую инициализацию для этих служб.

Удалить идентификатор экземпляра

Удаление идентификатора экземпляра также удаляет данные, связанные с этим идентификатором, в любой из перечисленных выше служб Firebase. Это делает ID делеции полезный инструмент в клиринг пользовательских данных, а также поставляется с оговоркой: если вы используете несколько услуг , которые полагаются на Instance идентификаторами, Удаление данных ID Очищает от всех из них.

Служба идентификатора экземпляра создает новый идентификатор в течение нескольких дней, если вы не отключите все службы создания идентификатора экземпляра в своем приложении. 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);
  }
}];

Android

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();

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)

Идти

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, указанных выше, для обработки удаления.

Отключить создание идентификатора экземпляра

Службы, использующие идентификаторы экземпляров, автоматически генерируют новый идентификатор при инициализации в приложении, которое в настоящее время его не имеет. Как правило, эти службы также автоматически инициализируются при запуске вашего приложения. Чтобы отключить создание идентификатора экземпляра, необходимо отключить автоинициализацию для служб, которые их используют.

Распространенный подход - предоставить пользователям возможность отказаться от сбора данных: отключить автоматическую инициализацию для служб, использующих идентификаторы экземпляров, реализовать диалоговое окно, предлагающее пользователям дать согласие на сбор данных, и повторно включить службы вручную один раз. у вас есть согласие.

Прочтите приведенные ниже руководства, чтобы узнать, как отключить автоматическую инициализацию для служб, использующих идентификатор экземпляра, и вместо этого инициализировать их вручную: