Firebase 설치 관리

Firebase 설치 서비스(FIS)는 Firebase 앱의 설치된 각 인스턴스에 Firebase 설치 ID(FID)를 제공합니다. Firebase 설치 ID는 개발자가 FIS API와 직접 상호작용할 필요 없이 인앱 메시지 또는 원격 구성과 같은 Firebase 서비스에서 내부적으로 사용됩니다. 하지만 앱 개발자가 다음과 같이 FIS API를 직접 호출해야 할 경우도 있습니다.

  • '데이터 초기화' 목적으로 앱 인스턴스와 모든 관련 데이터 및 통계 삭제
  • 특정 앱 설치를 타겟팅하기 위해 식별자(Firebase 설치 ID) 검색
  • Firebase 설치를 인증하기 위해 인증 토큰 검색

FIS API를 직접 호출하여 시작하려면 앱에 SDK를 추가하세요.

앱에 Firebase 설치 SDK 추가

iOS

  1. Podfile에 Firebase 설치 종속 항목을 추가합니다.
    pod 'Firebase/Installations'
  2. pod install을 실행하고 생성된 .xcworkspace 파일을 엽니다.
  3. UIApplicationDelegate에서 Firebase 모듈을 가져옵니다.

    Swift

    import Firebase

    Objective-C

    @import Firebase;
  4. 일반적으로 앱의 application:didFinishLaunchingWithOptions: 메서드에서 FirebaseApp 공유 인스턴스를 구성합니다.

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];

Android

다음과 같이 모듈(앱 수준) Gradle 파일(일반적으로 app/build.gradle)에 Firebase 설치 Android SDK 종속 항목을 추가합니다.

implementation 'com.google.firebase:firebase-installations:16.3.3'

자바스크립트

웹 애플리케이션의 호스팅 방식에 따라 구성이 자동으로 처리되거나 Firebase 구성 객체를 업데이트해야 할 수 있습니다.

예를 들어 종속 항목이 index.html에 추가된 경우 <head> 요소에 종속 항목을 추가합니다.

<script src="/__/firebase/7.19.1/firebase-installations.js"></script>

Firebase 설치 및 관련 데이터 삭제

Firebase 설치와 관련된 데이터는 일반적으로 개인 식별 데이터가 아닙니다. 하지만 사용자에게 이 데이터를 관리 및 삭제할 수 있는 옵션을 제공하면 도움이 될 수 있습니다(법적으로 필요한 경우도 있음). 아래 설명된 삭제 절차를 수행하면 특정 Firebase 설치에 기록된 모든 데이터가 GDPR을 준수하는 방식으로 초기화됩니다.

Firebase 설치 ID는 설치하는 애플리케이션마다 다릅니다. 동일한 기기에 설치된 애플리케이션마다 각각의 Firebase 설치 ID가 있습니다. Firebase 설치 ID를 통해 앱 설치 및 이러한 앱 설치와 관련된 데이터를 식별하고 모든 Firebase 서비스에서 개별 앱 설치와 관련된 데이터를 삭제할 수 있습니다.

설치 ID를 삭제하면 관련 데이터가 모든 Firebase 서비스의 라이브 및 백업 시스템에서 180일 내에 삭제됩니다.

앱에서 모든 FID 생성 서비스를 중지하지 않았다면 FIS에서 며칠 내에 새 ID를 생성합니다. Firebase는 새로 생성된 ID를 새로운 Firebase 설치로 간주하고 어떤 방식으로도 이전 ID 또는 데이터와 연결하지 않습니다.

클라이언트 API 호출로 FID 삭제

Firebase 서비스에서 생성된 FID를 삭제하려면 Firebase 설치 SDK에서 적절한 메서드를 호출합니다.

Swift

func delete(completion: @escaping (Error?) -> Void)

Objective-C

- (void)deleteWithCompletion:(nonnull void (^)(NSError *_Nullable))completion;

자바

FirebaseInstallations.getInstance().delete()
        .addOnCompleteListener(new OnCompleteListener<Void>() {
    @Override
    public void onComplete(@NonNull Task<Void> task) {
        if (task.isSuccessful()) {
            Log.d("Installations", "Installation deleted");
        } else {
            Log.e("Installations", "Unable to delete Installation");
        }
    }
});

Kotlin+KTX

FirebaseInstallations.getInstance().delete().addOnCompleteListener { task ->
    if (task.isComplete) {
        Log.d("Installations", "Installation deleted")
    }  else {
        Log.e("Installations", "Unable to delete Installation");
    }
}

자바스크립트

await firebase.installations().delete();

서버 API 호출로 FID 삭제

서버 API 호출로 FID를 삭제하려면 서버에 Firebase Admin SDK를 추가합니다(아직 추가하지 않은 경우).

SDK가 추가되었으면 원하는 언어로 삭제 함수를 호출하여 FID를 삭제합니다. 참고: 이 메서드는 인스턴스 ID 이름을 반영하지만 현재 Firebase SDK로 호출되면 실제로는 FID를 삭제합니다.

Node.js

// An FID sent from a client service SDK
const idToDelete = 'eyJhbGciOiJFUzI1N_iIs5';

admin.instanceId().deleteInstanceId(idToDelete);

자바

// An FID sent from a client service SDK
String idToDelete = "eyJhbGciOiJFUzI1N_iIs5";

FirebaseInstanceId.getInstance().deleteInstanceIdAsync(idToDelete).get();

Python

  from firebase_admin import instance_id

  # An FID sent from a client service SDK
  id_to_delete = 'eyJhbGciOiJFUzI1N_iIs5'

  instance_id.delete_instance_id(id_to_delete)

Go

client, err := app.InstanceId(ctx)
if err != nil {
  log.Fatalln("error initializing client", err)
}

iidToDelete := "eyJhbGciOiJFUzI1N_iIs5"
if err := client.DeleteInstanceId(ctx, iidToDelete); err != nil {
  log.Fatalln("error deleting FID", err)
}

서버 API 호출로 Firebase 설치 ID를 삭제하면 Firebase 서비스는 관련 데이터를 삭제하고, 1~2일 동안 ID에 새 데이터를 허용하지 않으며, 클라이언트 앱에 ID가 삭제되었다는 알림을 보냅니다. Firebase에서 클라이언트 앱에 알림을 보내기 전까지 일부 앱 서비스에서 ID를 계속 타겟팅할 수 있습니다. 예를 들어 앱 인스턴스가 몇 시간 동안 계속 FCM 알림을 받을 수 있습니다.

현재 Firebase 설치 ID를 삭제하고 관련 없는 새 ID로 Firebase 서비스를 즉시 사용하려면 클라이언트 API를 사용하여 삭제를 처리합니다.

앱 인스턴스 식별자 검색

앱의 특정 설치를 식별해야 하는 경우 Firebase 설치 ID를 검색하면 됩니다. 예를 들어 Firebase 인앱 메시지 개발 중에 테스트를 수행하려면 Firebase 설치 ID를 사용하여 올바른 테스트 기기를 식별하고 타겟팅하면 됩니다.

Firebase 설치 ID를 검색하려면 다음 단계를 따르세요.

Swift

Installations.installations().installationID { (id, error) in
  if let error = error {
    print("Error fetching id: \(error)")
    return
  }
  guard let id = id else { return }
  print("Installation ID: \(id)")
}

Objective-C

[[FIRInstallations installations] installationIDWithCompletion:^(NSString *identifier, NSError *error) {
  if (error != nil) {
    NSLog(@"Error fetching Installation ID %@", error);
    return;
  }
  NSLog(@"Installation ID: %@", identifier);
}];

자바

FirebaseInstallations.getInstance().getId()
        .addOnCompleteListener(new OnCompleteListener<String>() {
    @Override
    public void onComplete(@NonNull Task<String> task) {
        if (task.isSuccessful()) {
            Log.d("Installations", "Installation ID: " + task.getResult());
        } else {
            Log.e("Installations", "Unable to get Installation ID");
        }
    }
});

Kotlin+KTX

FirebaseInstallations.getInstance().id.addOnCompleteListener { task ->
    if (task.isSuccessful) {
        Log.d("Installations", "Installation ID: " + task.result)
    } else {
        Log.e("Installations", "Unable to get Installation ID");
    }
}

자바스크립트

const installationId = await firebase.installations().getId();
console.log(installationId);

FIS 인증 토큰 검색

Firebase 서비스는 FIS에서 가져온 인증 토큰을 사용하여 Firebase 설치를 인증할 수 있습니다. 예를 들어 원격 구성의 A/B 테스트를 설계할 때 FIS 인증 토큰을 사용하여 타겟팅된 테스트 기기를 인증할 수 있습니다.

FIS 인증 토큰은 JSON 웹 토큰(JWT) 형식의 단기 Bearer 토큰이며 설치에 관한 다음 정보를 포함합니다.

  • Firebase 설치 ID
  • 연결된 프로젝트(projectNumber)
  • 연결된 Firebase 애플리케이션 ID(appId)
  • 토큰의 만료일

FIS 인증 토큰은 취소할 수 없으며 만료일까지 유효합니다. 기본 토큰 수명은 1주일입니다.

FIS 인증 토큰을 검색하려면 다음 안내를 따르세요.

Swift

Installations.installations().authTokenForcingRefresh(true, completion: { (token, error) in
  if let error = error {
    print("Error fetching token: \(error)")
    return
  }
  guard let token = token else { return }
  print("Installation auth token: \(token)")
})

Objective-C

[[FIRInstallations installations] authTokenForcingRefresh:true
                                               completion:^(FIRInstallationsAuthTokenResult *result, NSError *error) {
  if (error != nil) {
    NSLog(@"Error fetching Installation token %@", error);
    return;
  }
  NSLog(@"Installation auth token: %@", [result authToken]);
}];

자바

FirebaseInstallations.getInstance().getToken(/* forceRefresh */true)
        .addOnCompleteListener(new OnCompleteListener<InstallationTokenResult>() {
    @Override
    public void onComplete(@NonNull Task<InstallationTokenResult> task) {
        if (task.isSuccessful() && task.getResult() != null) {
            Log.d("Installations", "Installation auth token: " + task.getResult().getToken());
        } else {
            Log.e("Installations", "Unable to get Installation auth token");
        }
    }
});

Kotlin+KTX

FirebaseInstallations.getInstance().getToken(/* forceRefresh */ true)
    .addOnCompleteListener {task ->
        if (task.isSuccessful) {
            Log.d("Installations", "Installation auth token: " + task.result?.token)
        } else {
            Log.e("Installations", "Unable to get Installation auth token");
        }
    }

자바스크립트

const installationToken = await firebase.installations()
    .getToken(/* forceRefresh */ true);
console.log(installationToken);

Firebase 설치 및 인스턴스 ID

데이터 초기화 및 내부적으로 사용 시 FIS는 기존 식별자인 Firebase 인스턴스 ID와 호환됩니다. IID 삭제는 다음 Firebase SDK로 데이터를 초기화하는 또 다른 방법입니다.

  • iOS 6.14.0 이하
  • 2020년 2월 27일 이전의 Android SDK

최신 iOS 및 Android SDK로 데이터를 초기화하려면 FIS를 사용하도록 코드를 업데이트하는 것이 좋지만 필수는 아닙니다.

현재 앱이 ID를 검색하는 데 간접 종속 항목을 통해 인스턴스 ID SDK를 사용하는 경우, 대신 Firebase 설치를 사용하도록 코드를 업데이트하거나 인스턴스 ID SDK에 직접 종속 항목을 추가하도록 애플리케이션을 업데이트할 수 있습니다.