Google is committed to advancing racial equity for Black communities. See how.
หน้านี้ได้รับการแปลโดย Cloud Translation API
Switch to English

จัดการการติดตั้ง Firebase

บริการการติดตั้ง Firebase (FIS) ให้รหัสการติดตั้ง Firebase (FID) สำหรับแต่ละอินสแตนซ์ที่ติดตั้งของแอป Firebase บริการ Firebase จะใช้รหัสการติดตั้ง Firebase ภายในเช่นการรับส่งข้อความในแอปหรือการกำหนดค่าระยะไกลโดยไม่ต้องให้นักพัฒนาโต้ตอบกับ FIS API โดยตรง อย่างไรก็ตามมีบางกรณีที่นักพัฒนาแอปอาจต้องการเรียก FIS API โดยตรงเช่น:

  • ในการลบการติดตั้ง Firebase และข้อมูลที่เชื่อมโยงกับการติดตั้ง
  • ในการดึงข้อมูลตัวระบุ (รหัสการติดตั้ง Firebase) เพื่อกำหนดเป้าหมายการติดตั้งแอปที่เฉพาะเจาะจง
  • ในการดึงโทเค็นการตรวจสอบสิทธิ์การติดตั้งเพื่อตรวจสอบสิทธิ์การติดตั้ง Firebase

ในการเริ่มต้นด้วยการเรียก FIS API โดยตรงให้เพิ่ม SDK ลงในแอปของคุณ

เพิ่ม SDK การติดตั้ง Firebase ในแอปของคุณ

iOS

  1. เพิ่มการอ้างอิงสำหรับการติดตั้ง Firebase ใน Podfile ของคุณ:
    pod 'Firebase/Installations'
  2. เรียกใช้การ pod install และเปิดไฟล์. .xcworkspace สร้างขึ้น
  3. นำเข้าโมดูล Firebase ใน UIApplicationDelegate ของคุณ:

    รวดเร็ว

    import Firebase

    วัตถุประสงค์ -C

    @import Firebase;
  4. กำหนดค่าอินสแตนซ์ที่แชร์ของ FirebaseApp โดยทั่วไปจะอยู่ในแอปพลิเคชันของแอปของคุณ application:didFinishLaunchingWithOptions: method:

    รวดเร็ว

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

    วัตถุประสงค์ -C

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

Android

เพิ่มการอ้างอิงสำหรับการติดตั้ง Firebase Android SDK ในโมดูลของคุณ (ระดับแอป) ไฟล์ Gradle (โดยทั่วไปคือ app/build.gradle ):

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

JavaScript

ขึ้นอยู่กับวิธีการโฮสต์เว็บแอปพลิเคชันของคุณการกำหนดค่าของคุณอาจได้รับการจัดการโดยอัตโนมัติหรือคุณอาจต้องอัปเดต ออบเจ็กต์การกำหนดค่า Firebase

ตัวอย่างเช่นหากการอ้างอิงของคุณถูกเพิ่มใน index.html ให้เพิ่มการอ้างอิงในองค์ประกอบ <head>:

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

ลบการติดตั้ง Firebase

โดยทั่วไปข้อมูลที่เชื่อมโยงกับการติดตั้ง Firebase จะ ไม่ ระบุตัวตน อย่างไรก็ตามการให้ผู้ใช้มีตัวเลือกในการจัดการและลบข้อมูลนี้จะเป็นประโยชน์

รหัสการติดตั้ง Firebase จะแตกต่างกันสำหรับทุกการติดตั้งของทุกแอปพลิเคชัน แอปพลิเคชันที่แตกต่างกันบนอุปกรณ์เดียวกันมีรหัสการติดตั้ง Firebase ที่แตกต่างกัน รหัสการติดตั้ง Firebase ระบุการติดตั้งแอปและข้อมูลที่เชื่อมโยงกับการติดตั้งแอปเหล่านั้น

เมื่อคุณลบรหัสการติดตั้งข้อมูลที่เชื่อมโยงกับรหัสการติดตั้งนั้นจะถูกลบออกจากระบบที่ใช้งานจริงและระบบสำรองของบริการ Firebase ทั้งหมดที่ใช้รหัสการติดตั้ง Firebase เพื่อระบุการติดตั้งภายใน 180 วัน กระบวนการนี้อธิบายไว้ในระดับสูงใน คำชี้แจง ของ Google เกี่ยวกับการลบและการเก็บรักษา

เว้นแต่คุณจะปิดใช้งานบริการที่สร้าง FID ทั้งหมดในแอปของคุณ FIS จะสร้าง ID ใหม่ภายในสองสามวัน Firebase ถือว่า ID ที่สร้างขึ้นใหม่เป็นการติดตั้ง Firebase ใหม่และจะไม่เชื่อมโยงกับ ID หรือข้อมูลก่อนหน้านี้ แต่อย่างใด

ลบ FID ด้วยการเรียกไคลเอนต์ API

หากต้องการลบ FID ที่สร้างโดยบริการ Firebase ให้เรียกใช้วิธีการที่เหมาะสมจาก SDK การติดตั้ง Firebase:

รวดเร็ว

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

วัตถุประสงค์ -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");
        }
    }
});

โคตรลิน + 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();

ลบ FID ด้วยการเรียกใช้เซิร์ฟเวอร์ API

หากต้องการลบ FID ด้วยการเรียก API ของเซิร์ฟเวอร์ให้ เพิ่ม Firebase Admin SDK ลงในเซิร์ฟเวอร์ของคุณ หากคุณยังไม่ได้ดำเนินการ

เมื่อเพิ่ม SDK แล้วให้ลบ FID ผ่านการเรียกใช้ฟังก์ชันการลบในภาษาที่คุณเลือก (หมายเหตุ: แม้ว่าวิธีการเหล่านี้จะแสดงถึงการตั้งชื่อรหัสอินสแตนซ์ แต่จริงๆแล้วจะลบ FID เมื่อเรียกด้วย Firebase SDK ปัจจุบัน)

โหนด js

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

admin.instanceId().deleteInstanceId(idToDelete);

Java

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

ไป

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

เมื่อคุณลบรหัสการติดตั้ง Firebase ด้วยการเรียก API เซิร์ฟเวอร์บริการ Firebase จะเริ่มกระบวนการลบข้อมูลที่เชื่อมโยงกับรหัสการติดตั้งนั้นหยุดรับข้อมูลใหม่สำหรับรหัสนั้นในช่วง 1-2 วันจากนั้นแจ้งแอปไคลเอ็นต์ ว่า ID ถูกลบ จนกว่า Firebase จะแจ้งแอปไคลเอ็นต์บริการบางอย่างของแอปอาจยังคงกำหนดเป้าหมายรหัสเช่นการติดตั้ง Firebase อาจได้รับการแจ้งเตือน FCM ต่อไปอีกสองสามชั่วโมง

หากคุณต้องการลบรหัสการติดตั้ง Firebase ปัจจุบันและใช้บริการ Firebase ทันทีด้วยรหัสใหม่ที่ไม่เกี่ยวข้องให้ใช้ API ไคลเอ็นต์เพื่อจัดการการลบ

ดึงข้อมูลตัวระบุไคลเอ็นต์

หากคุณมีข้อกำหนดในการระบุการติดตั้งแอปของคุณคุณสามารถทำได้โดยดึงรหัสการติดตั้ง Firebase ตัวอย่างเช่นในการทดสอบระหว่างการพัฒนา Firebase In-App Messaging คุณสามารถระบุและกำหนดเป้าหมายอุปกรณ์ทดสอบที่ถูกต้องโดยใช้รหัสการติดตั้ง Firebase

ในการดึงรหัสการติดตั้ง Firebase:

รวดเร็ว

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

วัตถุประสงค์ -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");
        }
    }
});

โคตรลิน + 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);

ดึงข้อมูลโทเค็นการตรวจสอบสิทธิ์การติดตั้ง

บริการ Firebase สามารถตรวจสอบสิทธิ์การติดตั้ง Firebase ด้วยโทเค็นการตรวจสอบสิทธิ์ที่ดึงมาจาก FIS ตัวอย่างเช่นเมื่อออกแบบการทดสอบ A / B สำหรับ Remote Config คุณสามารถรับรองความถูกต้องของอุปกรณ์ทดสอบเป้าหมายโดยใช้โทเค็นการตรวจสอบสิทธิ์การติดตั้ง

โทเค็นการตรวจสอบสิทธิ์การติดตั้งเป็นโทเค็นผู้ถืออายุสั้นในรูปแบบโทเค็นเว็บ JSON (JWT) ที่มีข้อมูลต่อไปนี้สำหรับการติดตั้ง

  • รหัสการติดตั้ง Firebase
  • โครงการที่เกี่ยวข้อง ( projectNumber )
  • รหัสแอปพลิเคชัน Firebase ที่เกี่ยวข้อง ( appId )
  • วันหมดอายุของโทเค็น

ไม่สามารถเพิกถอนโทเค็นการตรวจสอบสิทธิ์การติดตั้งและยังคงใช้ได้จนถึงวันหมดอายุ อายุการใช้งานโทเค็นเริ่มต้นคือหนึ่งสัปดาห์

ในการดึงโทเค็นการตรวจสอบสิทธิ์การติดตั้ง:

รวดเร็ว

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

วัตถุประสงค์ -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");
        }
    }
});

โคตรลิน + 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);

ตรวจสอบวงจรการใช้งานรหัสการติดตั้ง Firebase

ในระหว่างการทำงานปกติของแอปรหัสการติดตั้ง Firebase (FID) ไม่จำเป็นต้องมีการตรวจสอบพิเศษ อย่างไรก็ตามแอปที่ดึงข้อมูลและใช้ FID อย่างชัดเจนควรเพิ่มตรรกะเพื่อตรวจสอบการลบหรือการหมุนเวียน FID ที่อาจเกิดขึ้น ต่อไปนี้เป็นบางกรณีที่สามารถลบหรือหมุนเวียน FID ได้:

  • การถอนการติดตั้งหรือการติดตั้งแอปใหม่เช่นเมื่อผู้ใช้ปลายทางติดตั้งบนอุปกรณ์ใหม่
  • ผู้ใช้จะล้างแคชของแอปหรืออุปกรณ์
  • การลบ FID จะถูกทริกเกอร์ในแบ็กเอนด์เนื่องจากไม่มีการใช้งานแอพ (ปัจจุบันเกณฑ์นี้คือไม่มีการใช้งาน 270 วัน)

เมื่อแอปพบการหมุนเวียนหรือการลบ FID ในกรณีประเภทนี้แอปจะได้รับการกำหนด FID ใหม่ นอกจากนี้โทเค็นการตรวจสอบสิทธิ์การติดตั้งที่เชื่อมโยงกับ FID ที่ถูกลบจะถูกลบออกโดยไม่คำนึงถึงอายุของตัวเองและจะถูกแทนที่ด้วยโทเค็นการตรวจสอบสิทธิ์การติดตั้งใหม่

แอปสามารถตรวจสอบการเปลี่ยนแปลงเหล่านี้และตอบสนองตามนั้น

ในการตรวจสอบการหมุนเวียนของ FID:

รวดเร็ว

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

วัตถุประสงค์ -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 ชื่อ NSNotificationName.InstallationIDDidChange ถูกโพสต์ไปยัง NSNotificationCenter เริ่มต้นเมื่อใดก็ตามที่มีการกำหนด FID ใหม่

Android

ไคลเอ็นต์ Kotlin และ Java ควรเพิ่มตรรกะการลองใหม่เพื่อตอบสนองการโทรที่ล้มเหลวเพื่อดึงข้อมูล FID ใหม่

JavaScript

เว็บแอปสามารถสมัครใช้งาน onIdChange hook

เมื่อใดก็ตามที่สร้าง FID ใหม่การโทรกลับที่สมัครรับข้อมูลจะถูกทริกเกอร์:

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

ย้ายข้อมูลจาก Instance ID ไปยังการติดตั้ง Firebase

ก่อนที่จะเปิดตัวการติดตั้ง Firebase Firebase อาศัย Instance ID SDK สำหรับตัวระบุการติดตั้งแอป การติดตั้ง Firebase มอบข้อได้เปรียบที่สำคัญเหนือรหัสอินสแตนซ์ในด้านความน่าเชื่อถือประสิทธิภาพและความปลอดภัย แอป Firebase ที่ขึ้นอยู่กับ Instance ID SDK ควรย้ายไปยังการติดตั้ง Firebase

กระบวนการย้ายข้อมูลจะแตกต่างกันไปตามแอปของคุณ:

  • แอปที่ไม่เรียก Instance ID API โดยตรงสามารถย้ายข้อมูลได้โดย อัปเดตเวอร์ชัน SDK แอป Firebase ส่วนใหญ่อยู่ในหมวดหมู่นี้

  • แอปที่เรียก API ไปยังรหัสอินสแตนซ์อย่างชัดเจนต้องอัปเดตเวอร์ชัน SDK และ ทำการเปลี่ยนแปลงโค้ด เพื่อแทนที่เมธอด Instance ID ด้วยการติดตั้ง Firebase หรือเทียบเท่า FCM หากแอปของคุณใช้รหัสอินสแตนซ์เพื่อดึงข้อมูลโทเค็นการลงทะเบียน FCM หรือใช้รหัสอินสแตนซ์อย่างชัดเจนเพื่อกำหนดเป้าหมายอินสแตนซ์ของแอปหรือเพื่อวัตถุประสงค์อื่นใดคุณจะต้องอัปเดตรหัสแอปพลิเคชันของคุณ

ปัจจุบัน FIS สามารถใช้งานร่วมกับรหัสอินสแตนซ์ Firebase ตัวระบุเดิมได้ การลบ IID เป็นอีกทางเลือกหนึ่งในการขอลบข้อมูลด้วย Firebase SDK เหล่านี้:

  • iOS 6.14.0 และต่ำกว่า
  • Android SDK ก่อนวันที่ 27 กุมภาพันธ์ 2020

ซึ่งหมายความว่าไม่ จำเป็นต้อง ย้ายแอปไปยังการติดตั้ง Firebase อย่างไรก็ตามขอแนะนำให้ทำเช่นนั้น

การอัปเกรดเป็นเวอร์ชัน SDK ขั้นต่ำสำหรับการติดตั้ง Firebase

ในการย้ายข้อมูลจาก Instance ID ไปยังการติดตั้ง Firebase ตรวจสอบให้แน่ใจว่าแอปพลิเคชันของคุณใช้อย่างน้อยตามรายการเวอร์ชันขั้นต่ำของ Firebase SDK ต่อไปนี้:

Firebase SDK เวอร์ชันขั้นต่ำของ Android เวอร์ชัน iOS ขั้นต่ำ
Firebase Cloud Messaging v20.3.0 v6.34.0
การกำหนดค่าระยะไกล v19.2.0 v6.24.0
Google Analytics \ (การวัดผล SDK) v17.4.4 v6.18.0
การส่งข้อความในแอป v19.0.7 v6.24.0
การตรวจสอบประสิทธิภาพ v19.0.8 v6.21.0
Crashlytics v17.2.1 v6.23.0
มล. กิจ v22.1.2 v6.28.0

การอัปเดตโค้ดที่เรียกใช้ Instance ID API อย่างชัดเจน

หากแอป Android หรือ iOS ของคุณใช้เมธอด Instance ID SDK โดยตรงคุณสามารถแทนที่การใช้งานนั้นด้วยทางเลือกที่เหมือนกันใน SDK การติดตั้ง Firebase หรือ FCM SDK

การเรียกข้อมูลตัวระบุ

วิธีการรับรหัสอินสแตนซ์จะถูกแทนที่ด้วยเมธอดในการรับ ID การติดตั้ง ตัวอย่างเช่น:

ก่อน

รวดเร็ว

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

วัตถุประสงค์ -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());
            }
        });

โคตรลิน + KTX

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

หลังจาก

รวดเร็ว

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

วัตถุประสงค์ -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");
        }
    }
});

โคตรลิน + 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")
    }
}

การลบตัวระบุ

วิธีลบรหัสอินสแตนซ์จะถูกแทนที่ด้วยวิธีการลบรหัสการติดตั้ง 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();

หลังจาก

รวดเร็ว

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

วัตถุประสงค์ -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");
        }
    }
});

โคตรลิน + KTX

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

การเรียกข้อมูลโทเค็นการลงทะเบียน FCM

ก่อนที่จะเปิดตัวการติดตั้ง Firebase ไคลเอนต์ FCM จะดึงโทเค็นการลงทะเบียนจาก Instance ID ตอนนี้ FCM SDK มีวิธีการดึงโทเค็นการลงทะเบียน

ก่อน

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

โคตรลิน + 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()
        })

รวดเร็ว

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

วัตถุประสงค์ -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

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

โคตรลิน + 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()
})

รวดเร็ว

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

วัตถุประสงค์ -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;
  }
}];