Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Kelola penginstalan Firebase

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Layanan penginstalan Firebase (FIS) menyediakan ID penginstalan Firebase (FID) untuk setiap instance aplikasi Firebase yang diinstal. ID penginstalan Firebase digunakan secara internal oleh layanan Firebase berikut:

Layanan Firebase Fungsi penginstalan Firebase
Perpesanan Cloud Firebase

Firebase Cloud Messaging menggunakan ID penginstalan Firebase untuk menargetkan perangkat untuk pengiriman pesan.

Perpesanan Dalam Aplikasi Firebase

Firebase In-App Messaging menggunakan ID penginstalan Firebase untuk menargetkan perangkat untuk pengiriman pesan.

Pemantauan Kinerja Firebase

Performance Monitoring menggunakan ID penginstalan Firebase untuk menghitung jumlah penginstalan Firebase unik yang mengakses sumber daya jaringan, untuk memastikan bahwa pola akses cukup anonim. Ia juga menggunakan ID penginstalan Firebase dengan Firebase Remote Config untuk mengelola tingkat pelaporan kejadian kinerja.

Konfigurasi Jarak Jauh Firebase

Remote Config menggunakan ID penginstalan Firebase untuk memilih nilai konfigurasi agar dikembalikan ke perangkat pengguna akhir.

Firebase ML

Kredensial yang disebut token autentikasi penginstalan digunakan oleh Firebase ML untuk autentikasi perangkat saat berinteraksi dengan instance aplikasi, misalnya, untuk mendistribusikan model developer ke instance aplikasi.

Penyimpanan Segmentasi Pengguna Firebase

Penyimpanan Segmentasi Pengguna Firebase menyimpan ID penginstalan Firebase serta atribut dan segmen terkait untuk memberikan informasi penargetan ke layanan Firebase lain yang menggunakannya.

Biasanya, layanan Firebase menggunakan layanan penginstalan Firebase tanpa mengharuskan developer untuk berinteraksi langsung dengan FIS API. Namun, ada kasus di mana pengembang aplikasi mungkin ingin langsung memanggil FIS API, seperti:

  • Untuk menghapus penginstalan Firebase dan data yang terkait dengan penginstalan.
  • Untuk mengambil pengidentifikasi (ID penginstalan Firebase) untuk menargetkan penginstalan aplikasi tertentu.
  • Untuk mengambil token autentikasi penginstalan untuk mengautentikasi penginstalan Firebase.

Untuk mulai memanggil FIS API secara langsung, tambahkan SDK ke aplikasi Anda.

Tambahkan SDK penginstalan Firebase ke aplikasi Anda

iOS+

  1. Tambahkan dependensi untuk instalasi Firebase ke Podfile Anda: l10n
    pod 'FirebaseInstallations'
  2. Jalankan pod install dan buka file .xcworkspace yang dibuat.
  3. Impor modul FirebaseCore di UIApplicationDelegate Anda, serta modul Firebase lainnya yang digunakan oleh delegasi aplikasi Anda. Misalnya, untuk menggunakan Cloud Firestore dan Authentication:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Cepat

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  4. Konfigurasikan instance bersama FirebaseApp dalam metode application(_:didFinishLaunchingWithOptions:) delegasi aplikasi Anda:

    SwiftUI

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

    Cepat

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  5. Jika Anda menggunakan SwiftUI, Anda harus membuat delegasi aplikasi dan melampirkannya ke struktur App Anda melalui UIApplicationDelegateAdaptor atau NSApplicationDelegateAdaptor . Anda juga harus menonaktifkan swizzling delegasi aplikasi. Untuk informasi selengkapnya, lihat petunjuk SwiftUI .

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          

Android

Tambahkan dependensi untuk penginstalan Firebase Android SDK ke file Gradle modul (level aplikasi) Anda (biasanya app/build.gradle ):

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

JavaScript

Bergantung pada bagaimana aplikasi web Anda dihosting, konfigurasi Anda mungkin ditangani secara otomatis atau Anda mungkin perlu mengupdate objek konfigurasi Firebase Anda.

Misalnya, jika dependensi Anda ditambahkan di index.html, tambahkan dependensi di elemen <head> :

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

Berdebar

  1. Dari direktori root project Flutter Anda, jalankan perintah berikut untuk menginstal plugin penginstalan Firebase:

    flutter pub add firebase_app_installations
    
  2. Membangun kembali proyek Anda:

    flutter run
    
  3. Impor plugin penginstalan Firebase:

    import 'package:firebase_app_installations/firebase_app_installations.dart';
    

Hapus instalasi Firebase

Data yang terkait dengan penginstalan Firebase umumnya tidak mengidentifikasi secara pribadi. Namun, memberikan opsi kepada pengguna untuk mengelola dan menghapus data ini dapat membantu.

ID penginstalan Firebase berbeda untuk setiap penginstalan setiap aplikasi; aplikasi berbeda pada perangkat yang sama memiliki ID pemasangan Firebase yang berbeda. ID penginstalan Firebase mengidentifikasi penginstalan aplikasi dan data yang terkait dengan penginstalan aplikasi tersebut.

Saat Anda menghapus ID penginstalan, data yang terkait dengan ID penginstalan tersebut akan dihapus dari sistem cadangan dan live dari semua layanan Firebase yang menggunakan ID penginstalan Firebase untuk mengidentifikasi penginstalan dalam 180 hari. Proses ini dijelaskan pada tingkat tinggi dalam pernyataan Google tentang penghapusan dan penyimpanan .

Kecuali jika Anda menonaktifkan semua layanan penghasil FID di aplikasi Anda, FIS akan membuat ID baru dalam beberapa hari. Firebase menganggap ID yang baru dibuat sebagai penginstalan Firebase baru, dan tidak mengaitkannya dengan ID atau data sebelumnya dengan cara apa pun.

Hapus FID dengan panggilan API klien

Untuk menghapus FID yang dihasilkan oleh layanan Firebase, panggil metode yang sesuai dari SDK penginstalan Firebase:

Cepat

Installations.installations().delete { error in
  if let error = error {
    print("Error deleting installation: \(error)")
    return
  }
  print("Installation deleted");
}

Objective-C

[[FIRInstallations installations] deleteWithCompletion:^(NSError *error) {
   if (error != nil) {
     NSLog(@"Error deleting Installation %@", error);
     return;
   }
   NSLog(@"Installation deleted");
}];

Java

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")
    }
}

JavaScript

await firebase.installations().delete();

Dart

await FirebaseInstallations.instance.delete();

Hapus FID dengan panggilan API server

Untuk menghapus FID dengan panggilan API server, tambahkan Firebase Admin SDK ke server Anda , jika Anda belum melakukannya.

Setelah SDK ditambahkan, hapus FID melalui panggilan ke fungsi penghapusan dalam bahasa pilihan Anda (catatan: Kecuali untuk Node.js, metode ini mencerminkan penamaan ID Instance. Namun, semuanya benar-benar menghapus FID saat dipanggil dengan Firebase saat ini SDK).

Node.js

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

admin.installations().deleteInstallation(idToDelete);

Java

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

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

Piton

  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)

Pergi

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)
}

Saat Anda menghapus ID penginstalan Firebase dengan panggilan API server, layanan Firebase memulai proses untuk menghapus data yang terkait dengan ID penginstalan tersebut, berhenti menerima data baru untuk ID tersebut selama 1-2 hari, lalu memberi tahu aplikasi klien bahwa ID telah dihapus. Hingga Firebase memberi tahu aplikasi klien, beberapa layanan aplikasi mungkin masih menargetkan ID—misalnya, penginstalan Firebase mungkin terus menerima notifikasi FCM selama beberapa jam.

Jika Anda ingin menghapus ID penginstalan Firebase saat ini dan segera menggunakan layanan Firebase dengan ID baru yang tidak terkait, gunakan API klien untuk menangani penghapusan.

Ambil pengidentifikasi klien

Jika Anda memiliki persyaratan untuk mengidentifikasi penginstalan aplikasi tertentu, Anda dapat melakukannya dengan mengambil ID penginstalan Firebase. Misalnya, untuk melakukan pengujian selama pengembangan Firebase In-App Messaging, Anda dapat mengidentifikasi dan menargetkan perangkat pengujian yang tepat menggunakan ID penginstalan Firebase.

Untuk mengambil ID penginstalan Firebase:

Cepat

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);
}];

Java

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")
    }
}

JavaScript

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

Dart

String id = await FirebaseInstallations.instance.getId();

Ambil token autentikasi penginstalan

Layanan Firebase dapat mengautentikasi pemasangan Firebase dengan token autentikasi yang diambil dari FIS. Misalnya, saat merancang pengujian A/B untuk Remote Config, Anda dapat mengautentikasi perangkat pengujian yang ditargetkan menggunakan token autentikasi penginstalan.

Token autentikasi penginstalan adalah token pembawa berumur pendek dalam format token web JSON (JWT) yang berisi informasi berikut untuk penginstalan:

  • ID penginstalan Firebase
  • Proyek terkait ( projectNumber )
  • ID aplikasi Firebase terkait ( appId )
  • Tanggal kedaluwarsa token

Token autentikasi penginstalan tidak dapat dicabut, dan tetap valid hingga tanggal kedaluwarsa. Masa pakai token default adalah satu minggu.

Untuk mengambil token autentikasi penginstalan:

Cepat

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

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]);
}];

Java

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")
        }
    }

JavaScript

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

Dart

String token = await FirebaseInstallations.instance.getToken();

Pantau siklus hidup ID penginstalan Firebase

Selama operasi normal aplikasi, ID penginstalan Firebase (FID) tidak memerlukan pemantauan khusus. Namun, aplikasi yang mengambil dan menggunakan FID secara eksplisit harus menambahkan logika untuk memantau potensi penghapusan atau rotasi FID. Berikut adalah beberapa kasus di mana FID dapat dihapus atau diputar:

  • Mencopot pemasangan atau memasang ulang aplikasi, misalnya saat pengguna akhir memasang di perangkat baru.
  • Pengguna akhir membersihkan cache aplikasi atau perangkat.
  • Penghapusan FID dipicu di backend karena ketidakaktifan aplikasi (saat ini ambang batasnya adalah 270 hari tidak aktif).

Saat aplikasi mengalami rotasi atau penghapusan FID dalam kasus seperti ini, aplikasi diberi FID baru. Selain itu, token autentikasi penginstalan yang terkait dengan FID yang dihapus akan dihapus, terlepas dari jatuh temponya sendiri, dan diganti dengan token autentikasi penginstalan baru.

Aplikasi dapat memantau perubahan ini dan meresponsnya dengan sesuai.

Untuk memantau rotasi FID:

Cepat

installationIDObserver = NotificationCenter.default.addObserver(
        forName: .InstallationIDDidChange,
        object: nil,
        queue: nil
) { (notification) in
  // Fetch new Installation ID
  self.fetchInstallationToken()
}

Objective-C

__weak __auto_type weakSelf = self;
self.installationIDObserver = [[NSNotificationCenter defaultCenter]
        addObserverForName: FIRInstallationIDDidChangeNotification
                    object:nil
                     queue:nil
                usingBlock:^(NSNotification * _Nonnull notification) {
    // Fetch new Installation ID
    [weakSelf fetchInstallationsID];
}];

NSNotification bernama NSNotificationName.InstallationIDDidChange diposting ke NSNotificationCenter default setiap kali FID baru ditetapkan.

Android

Klien Kotlin dan Java harus menambahkan logika coba lagi untuk merespons panggilan yang gagal guna mengambil FID baru.

JavaScript

Aplikasi web dapat berlangganan pengait onIdChange .

Setiap kali FID baru dibuat, panggilan balik langganan dipicu:

await firebase.installations().onIdChange((newId) => {
  console.log(newId);
  // TODO: Handle new installation ID.
});

Dart

FirebaseInstallations.instance.onIdChange.listen((token) {
  print('FID token: $token');
});

Bermigrasi dari Instance ID ke penginstalan Firebase

Sebelum pengenalan penginstalan Firebase, Firebase mengandalkan Instance ID SDK untuk pengidentifikasi penginstalan aplikasi. Penginstalan Firebase memberikan keuntungan yang signifikan dibandingkan Instance ID dalam hal keandalan, performa, dan keamanan. Aplikasi Firebase yang bergantung pada Instance ID SDK harus bermigrasi ke penginstalan Firebase.

Proses migrasi berbeda berdasarkan aplikasi Anda:

  • Aplikasi yang tidak memanggil Instance ID API secara langsung dapat bermigrasi dengan memperbarui versi SDK- nya . Sebagian besar aplikasi Firebase termasuk dalam kategori ini.

  • Aplikasi yang secara eksplisit melakukan panggilan API ke ID Instance harus mengupdate versi SDK dan membuat perubahan kode untuk mengganti metode ID Instance dengan penginstalan Firebase atau yang setara dengan FCM. Jika aplikasi Anda menggunakan ID Instance untuk mengambil token pendaftaran FCM atau secara eksplisit menggunakan ID Instance untuk menargetkan instance aplikasi atau untuk tujuan lain, Anda harus mengupdate kode aplikasi.

Saat ini, FIS kompatibel mundur dengan ID Instance Firebase pengenal lama. Menghapus IID adalah metode alternatif untuk meminta penghapusan data dengan Firebase SDK berikut:

  • iOS 6.14.0 dan lebih rendah
  • Android SDK lebih awal dari 27 Februari 2020

Artinya, aplikasi tidak diharuskan bermigrasi ke instalasi Firebase; Namun, hal itu sangat dianjurkan.

Mengupgrade ke versi SDK minimum untuk penginstalan Firebase

Untuk bermigrasi dari penginstalan Instance ID ke Firebase, pastikan aplikasi Anda menggunakan setidaknya nomor versi minimum yang tercantum dari Firebase SDK berikut:

SDK Firebase Versi Android minimal Versi iOS minimal
Perpesanan Cloud Firebase v20.3.0 v6.34.0
Konfigurasi Jarak Jauh v19.2.0 v6.24.0
Google Analytics untuk Firebase \ (SDK Pengukuran) v17.4.4 v6.18.0
Perpesanan Dalam Aplikasi v19.0.7 v6.24.0
Pemantauan Kinerja v19.0.8 v6.21.0
Crashlytics v17.2.1 v6.23.0
Kit ML v22.1.2 v6.28.0

Memperbarui kode yang secara eksplisit memanggil Instance ID API

Jika aplikasi Android atau Apple Anda secara langsung menggunakan metode Instance ID SDK, Anda dapat mengganti penggunaan tersebut dengan alternatif yang identik di SDK penginstalan Firebase atau FCM SDK.

Mengambil pengenal

Metode untuk mendapatkan Instance ID diganti dengan metode untuk mendapatkan ID penginstalan. Sebagai contoh:

Sebelum

Cepat

Messaging.messaging().token { token, error in
  if let error = error {
    print("Error fetching remote FCM registration token: \(error)")
  } else if let token = token {
    print("Remote instance ID token: \(token)")
    self.remoteFCMTokenMessage.text = "Remote FCM registration token: \(token)"
  }
}

Objective-C

[[FIRMessaging messaging] tokenWithCompletion:^(NSString * _Nullable token, NSError * _Nullable error) {
   if (error != nil) {
     NSLog(@"Error fetching the remote FCM registration token: %@", error);
   } else {
     NSLog(@"Remote FCM registration token: %@", token);
     NSString* message =
       [NSString stringWithFormat:@"FCM registration token: %@", token];
     self.remoteFCMTokenMessage.text = message;
   }
 }];

Java

FirebaseInstanceId.getInstance().getInstanceId()
        .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
            @Override
            public void onComplete(@NonNull Task<InstanceIdResult> task) {
                Log.d("IID_TOKEN", task.getResult().getToken());
            }
        });

Kotlin+KTX

FirebaseInstanceId.getInstance().instanceId
        .addOnSuccessListener { result ->
            Log.d("IID_TOKEN", result.token)
        }

Setelah

Cepat

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);
}];

Java

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")
    }
}

Menghapus pengenal

Metode untuk menghapus ID Instance diganti dengan metode untuk menghapus ID penginstalan Firebase. Sebagai contoh:

Sebelum

Cepat

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

Setelah

Cepat

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

Objective-C

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

Java

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")
    }
}

Mengambil token pendaftaran FCM

Sebelum pengenalan Pemasangan Firebase, klien FCM mengambil token pendaftaran dari ID Instance. Sekarang, FCM SDK menyediakan metode untuk mengambil token pendaftaran.

Sebelum

Java

FirebaseInstanceId.getInstance().getInstanceId()
        .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
            @Override
            public void onComplete(@NonNull Task<InstanceIdResult> task) {
                if (!task.isSuccessful()) {
                    Log.w(TAG, "getInstanceId failed", task.getException());
                    return;
                }

                // Get new Instance ID token
                String token = task.getResult().getToken();

                // Log and toast
                String msg = getString(R.string.msg_token_fmt, token);
                Log.d(TAG, msg);
                Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
            }
        });

Kotlin+KTX

FirebaseInstanceId.getInstance().instanceId
        .addOnCompleteListener(OnCompleteListener { task ->
            if (!task.isSuccessful) {
                Log.w(TAG, "getInstanceId failed", task.exception)
                return@OnCompleteListener
            }

            // Get new Instance ID token
            val token = task.result?.token

            // Log and toast
            val msg = getString(R.string.msg_token_fmt, token)
            Log.d(TAG, msg)
            Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
        })

Cepat

Messaging.messaging().token { token, error in
  if let error = error {
    print("Error fetching remote FCM registration token: \(error)")
  } else if let token = token {
    print("Remote instance ID token: \(token)")
    self.remoteFCMTokenMessage.text = "Remote FCM registration token: \(token)"
  }
}

Objective-C

[[FIRMessaging messaging] tokenWithCompletion:^(NSString * _Nullable token, NSError * _Nullable error) {
   if (error != nil) {
     NSLog(@"Error fetching the remote FCM registration token: %@", error);
   } else {
     NSLog(@"Remote FCM registration token: %@", token);
     NSString* message =
       [NSString stringWithFormat:@"FCM registration token: %@", token];
     self.remoteFCMTokenMessage.text = message;
   }
 }];

Setelah

Java

FirebaseMessaging.getInstance().getToken()
    .addOnCompleteListener(new OnCompleteListener<String>() {
        @Override
        public void onComplete(@NonNull Task<String> task) {
          if (!task.isSuccessful()) {
            Log.w(TAG, "Fetching FCM registration token failed", task.getException());
            return;
          }

          // Get new FCM registration token
          String token = task.getResult();

          // Log and toast
          String msg = getString(R.string.msg_token_fmt, token);
          Log.d(TAG, msg);
          Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
        }
    });

Kotlin+KTX

FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
    if (!task.isSuccessful) {
        Log.w(TAG, "Fetching FCM registration token failed", task.exception)
        return@OnCompleteListener
    }

    // Get new FCM registration token
    val token = task.result

    // Log and toast
    val msg = getString(R.string.msg_token_fmt, token)
    Log.d(TAG, msg)
    Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
})

Cepat

Messaging.messaging().token { token, error in
  if let error = error {
    print("Error fetching FCM registration token: \(error)")
  } else if let token = token {
    print("FCM registration token: \(token)")
    self.fcmRegTokenMessage.text  = "Remote FCM registration token: \(token)"
  }
}

Objective-C

[[FIRMessaging messaging] tokenWithCompletion:^(NSString *token, NSError *error) {
  if (error != nil) {
    NSLog(@"Error getting FCM registration token: %@", error);
  } else {
    NSLog(@"FCM registration token: %@", token);
    self.fcmRegTokenMessage.text = token;
  }
}];