인스턴스 ID는 앱의 개별 설치를 식별합니다. 각 인스턴스 ID가 특정 앱 및 기기별로 고유하므로 이를 통해 Firebase 서비스에서 특정 앱 인스턴스를 참조할 수 있습니다. 예를 들어 Cloud Messaging은 인스턴스 ID를 사용하여 메시지를 보낼 기기를 확인합니다.
여러 Firebase 서비스가 인스턴스 ID를 사용하여 기능을 강화합니다.
- Analytics
- Crashlytics
- Cloud Messaging
- Remote Config
인스턴스 ID와 연결된 앱 데이터 관리
인스턴스 ID를 사용하여 설치를 식별하는 서비스는 해당 기기의 관련 데이터를 연결하는 데도 인스턴스 ID를 사용합니다. 예를 들어 Crashlytics는 기기에서 발생한 비정상 종료를 기록하는 데, Remote Config은 구성을 가져오는 데, Analytics는 특정 잠재고객을 추적하는 데 각각 인스턴스 ID를 사용합니다.
인스턴스 ID와 연결된 데이터는 대개 개인 식별 데이터가 아니지만 사용자에게 관리 옵션을 제공하면 유용합니다. 이를 위해 Firebase는 인스턴스 ID 관련 데이터 수집을 관리하는 두 가지 방법을 제공합니다.
- 인스턴스 ID 삭제: 서버 또는 클라이언트 측 API 호출로 인스턴스 ID를 삭제할 수 있습니다. 인스턴스 ID를 삭제하면 ID 자체와 해당 ID와 연결된 모든 데이터가 삭제됩니다.
- ID를 생성하는 서비스 사용 중지: 인스턴스 ID를 사용하는 대부분의 Firebase 서비스는 서비스를 시작할 때 기기에 ID가 없으면 자동으로 새 ID를 생성합니다. 앱에서 원치 않는 인스턴스 ID를 생성하지 않도록 하려면 이러한 서비스의 자동 초기화를 사용 중지합니다.
인스턴스 ID 삭제
인스턴스 ID를 삭제하면 위에 나와 있는 Firebase 서비스에서 해당 ID와 연결된 데이터도 삭제됩니다. 따라서 ID 삭제는 사용자 데이터를 삭제하는 데 유용한 도구이지만 유의할 점도 있습니다. 인스턴스 ID를 활용하는 여러 서비스를 사용하고 있다면 ID 삭제 시 이러한 모든 서비스에서 데이터가 삭제됩니다.
앱에서 인스턴스 ID를 생성하는 모든 서비스를 사용 중지하지 않는 한 인스턴스 ID 서비스가 며칠 안에 새 ID를 만듭니다. Firebase는 새로 만든 ID를 새로운 앱 인스턴스로 간주하며 어떠한 방식으로도 이전 ID와 연결하지 않습니다.
클라이언트 API 호출로 ID 삭제
Firebase 서비스에서 생성한 ID를 삭제하려면 Firebase Instance ID API에서 적절한 메소드를 호출합니다.
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();
서버 API 호출로 ID 삭제
서버 API 호출로 인스턴스 ID를 삭제하려면 아직 서버에 Firebase Admin SDK를 추가하지 않은 경우 지금 추가합니다.
추가한 후 원하는 언어로 인스턴스 ID 삭제 함수를 호출하여 ID를 삭제합니다.
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)
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)
}
서버 API 호출로 인스턴스 ID를 삭제하면 Firebase 서비스가 연결된 데이터를 삭제하고 해당 ID에 대한 새로운 데이터를 더 이상 허용하지 않으며 며칠 안에 클라이언트 앱에 ID가 삭제되었다는 알림을 전송합니다. Firebase에서 클라이언트 앱에 알림을 전송하기 전에는 일부 앱 서비스의 기능이 저하될 수 있습니다.
현재 인스턴스 ID를 삭제하고 즉시 새로운 독립 ID로 Firebase 서비스를 사용하려면 위의 클라이언트 API 중 하나를 사용하여 삭제를 처리하세요.
인스턴스 ID 생성 사용 중지
인스턴스 ID를 사용하는 서비스는 현재 ID가 없는 앱에서 초기화될 때 자동으로 새 ID를 생성합니다. 또한 이러한 서비스는 대개 앱을 시작할 때 자동으로 초기화됩니다. 인스턴스 ID 생성을 사용 중지하려면 인스턴스 ID를 사용하는 서비스에서 자동 초기화를 사용 중지해야 합니다.
일반적인 방법은 사용자에게 데이터 수집을 선택하는 옵션을 제공하는 것입니다. 인스턴스 ID를 사용하는 서비스에서 자동 초기화를 사용 중지하고 사용자에게 데이터 수집 동의에 대해 알리는 대화상자를 구현하고 동의를 받은 후 서비스를 직접 다시 사용 설정하면 됩니다.
인스턴스 ID를 사용하는 서비스에서 자동 초기화를 사용 중지하고 직접 초기화하는 방법을 알아보려면 아래 가이드를 읽어보세요.
- Cloud Messaging: 자동 초기화 방지(Android) 또는 자동 초기화 방지(iOS+)
- Crash Reporting: 보고 선택 옵션 사용 설정
- Analytics: 애널리틱스 데이터 수집 구성