🚚

Firebase Instance IDの非推奨とInstallation IDへの移行

に公開

はじめに

Firebaseを長年利用している開発者にとって、Firebase Instance ID (IID) は馴染み深いものでした。しかし、このInstance IDは現在非推奨となり、Firebase Installation ID (FID) への移行が推奨されています。

本記事では、この変更の背景と、具体的な移行方法について解説します。

Firebase Installation ID (FID) とは何か

Firebase Installation ID (FID) は、Firebase Installationsサービスによって提供される、Firebaseアプリのインストールインスタンスごとに一意のIDです。Instance IDと同様に、特定のアプリインストールを識別するために使用されますが、よりプライバシーを重視し、現代のアプリ開発の要件に合わせて設計されています。

Instance IDがデバイス全体で共有される可能性があったのに対し、FIDはアプリのインストール単位で独立している点が大きな違いです。

なぜ移行が必要になったのか

Instance ID APIの非推奨化は、主に以下の理由によるものです。

  1. プライバシーの強化: ユーザーのプライバシー保護に関する要求が高まる中、より限定的なスコープでIDを管理する必要が出てきました。
  2. APIの簡素化: Firebase全体のAPIサーフェスを整理し、開発者がより直感的に利用できるようにする目的があります。
  3. 将来の拡張性: 新しいプラットフォームやデバイスへの対応を見据え、より柔軟なID管理の仕組みが必要とされました。

移行方法

多くのアプリでは、Firebase関連のSDKを最新バージョンに更新するだけで、自動的にInstallation IDが使用されるようになります。明示的にInstance ID APIを呼び出していない場合は、特別な対応は不要です。

しかし、FCMの登録トークン取得などで、以下のように FirebaseInstanceId を直接参照しているコードがある場合は、修正が必要です。

修正が必要なコードの例 (Android/Kotlin)

// 修正前のコード
FirebaseInstanceId.getInstance().instanceId
    .addOnCompleteListener { task ->
        if (!task.isSuccessful) {
            // エラー処理
            return@addOnCompleteListener
        }
        val token = task.result?.token
        // トークンを利用する処理
    }

修正後のコードの例 (Android/Kotlin)

FCMの登録トークンは FirebaseMessaging を介して取得するのが現在の推奨方法です。

// 修正後のコード
FirebaseMessaging.getInstance().token
    .addOnCompleteListener { task ->
        if (!task.isSuccessful) {
            // エラー処理
            return@addOnCompleteListener
        }
        val token = task.result
        // トークンを利用する処理
    }

iOSやFlutterなど、他のプラットフォームでも同様に、FirebaseMessaging を介してトークンを取得するようにコードを修正する必要があります。

まとめ

Firebase Instance IDからInstallation IDへの移行は、プライバシーとAPIの近代化を目的とした重要な変更です。ほとんどの場合はSDKのアップデートで対応可能ですが、Instance ID APIを直接利用している箇所はコードの修正が必要となります。

Firebaseの公式ドキュメントを確認し、自身のプロジェクトが正しく対応できているか、この機会に一度確認してみることをお勧めします。

Discussion