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

บริการการติดตั้ง Firebase (FIS) จะให้Firebaseรหัสการติดตั้ง (FID) สำหรับอินสแตนซ์ที่ติดตั้งแต่ละรายการของแอป Firebase บริการ Firebase ต่อไปนี้ใช้รหัสการติดตั้ง Firebase ภายใน

บริการ Firebase ฟังก์ชันการทำงานของการติดตั้ง Firebase
Firebase Cloud Messaging

Firebase Cloud Messaging ใช้ Firebase รหัสการติดตั้งเพื่อกำหนดเป้าหมายอุปกรณ์สำหรับการนำส่งข้อความ

Firebase Crashlytics

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

Firebase In-App Messaging

Firebase In-App Messaging ใช้ Firebase รหัสการติดตั้งเพื่อกำหนดเป้าหมายอุปกรณ์สำหรับการนำส่งข้อความ

Firebase Performance Monitoring

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

Firebase Remote Config

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

Firebase ML

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

ที่เก็บข้อมูลการแบ่งกลุ่มผู้ใช้ Firebase

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

โดยปกติแล้ว บริการ Firebase จะใช้Firebaseบริการการติดตั้งโดยไม่ กำหนดให้นักพัฒนาแอปโต้ตอบกับ FIS API โดยตรง อย่างไรก็ตาม มีบางกรณีที่นักพัฒนาแอปอาจต้องการเรียกใช้ FIS API โดยตรง เช่น

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

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

เพิ่ม FirebaseSDK การติดตั้งลงในแอป

iOS+

  1. เพิ่มทรัพยากร Dependency สำหรับการติดตั้ง Firebase ลงใน Podfile ดังนี้
    pod 'FirebaseInstallations'
  2. เรียกใช้ pod install แล้วเปิดไฟล์ .xcworkspace ที่สร้างขึ้น
  3. นำเข้าโมดูล FirebaseCore ใน UIApplicationDelegate รวมถึงโมดูล Firebase อื่นๆ ที่ตัวแทนแอปของคุณใช้ เช่น หากต้องการใช้ Cloud Firestore และ Authentication ให้ทำดังนี้

    SwiftUI

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

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  4. กำหนดค่า FirebaseApp อินสแตนซ์ที่แชร์ใน application(_:didFinishLaunchingWithOptions:) ของตัวแทนแอป

    SwiftUI

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

    Swift

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  5. หากใช้ SwiftUI คุณต้องสร้างตัวแทนแอปพลิเคชันและแนบไปกับโครงสร้าง App ผ่าน UIApplicationDelegateAdaptor หรือ NSApplicationDelegateAdaptor นอกจากนี้ คุณยังต้องปิดใช้การสลับแทนของตัวแทนแอปด้วย ดูข้อมูลเพิ่มเติมได้ที่วิธีการสำหรับ 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

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

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

JavaScript

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

เช่น หากเพิ่มการอ้างอิงใน index.html ให้เพิ่มการอ้างอิงในองค์ประกอบ <head> ดังนี้

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

Flutter

  1. จากไดเรกทอรีรากของโปรเจ็กต์ Flutter ให้เรียกใช้คำสั่งต่อไปนี้ เพื่อติดตั้งปลั๊กอินการติดตั้ง Firebase

    flutter pub add firebase_app_installations
    
  2. สร้างโปรเจ็กต์ใหม่

    flutter run
    
  3. นำเข้าปลั๊กอินการติดตั้ง Firebase โดยทำดังนี้

    import 'package:firebase_app_installations/firebase_app_installations.dart';
    

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

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

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

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

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

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

หากต้องการลบ FID ที่บริการของ Firebase สร้างขึ้น ให้เรียกใช้เมธอดที่เหมาะสมจาก FirebaseSDK การติดตั้ง

Swift

do {
  try await Installations.installations().delete()
  print("Installation deleted");
} catch {
  print("Error deleting installation: \(error)")
}

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

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

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

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

เมื่อเพิ่ม SDK แล้ว ให้ลบ FID ผ่านการเรียกฟังก์ชันการลบในภาษาที่คุณเลือก (หมายเหตุ: ยกเว้น Node.js วิธีการเหล่านี้จะแสดงการตั้งชื่อรหัสอินสแตนซ์) แต่จริงๆ แล้วฟังก์ชันเหล่านี้จะลบ FID เมื่อเรียกใช้ด้วย Firebase 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();

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

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

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

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

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

วิธีดึงข้อมูลรหัสการติดตั้ง Firebase

Swift

do {
  let id = try await Installations.installations().installationID()
  print("Installation ID: \(id)")
} catch {
  print("Error fetching id: \(error)")
}

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

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

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

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

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

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

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

วิธีดึงโทเค็นการให้สิทธิ์การติดตั้ง

Swift

do {
  let result = try await Installations.installations()
    .authTokenForcingRefresh(true)
  print("Installation auth token: \(result.authToken)")
} catch {
  print("Error fetching token: \(error)")
}

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

val forceRefresh = true
FirebaseInstallations.getInstance().getToken(forceRefresh)
    .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();

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

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

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

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

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

วิธีตรวจสอบการหมุนเวียน FID

Swift

installationIDObserver = NotificationCenter.default.addObserver(
        forName: .InstallationIDDidChange,
        object: nil,
        queue: nil
) { (notification) in
  // Fetch new Installation ID
  Task {
    await 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 ที่ชื่อ NSNotificationName.InstallationIDDidChange ไปยัง NSNotificationCenter เริ่มต้นทุกครั้งที่มีการกำหนด FID ใหม่

Android

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

JavaScript

เว็บแอปสามารถสมัครใช้ Hook ของ onIdChange ได้

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

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

Dart

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

ย้ายข้อมูลจากรหัสอินสแตนซ์ไปยังการติดตั้ง Firebase

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

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

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

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

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

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

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

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

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

Firebase SDK เวอร์ชัน Android ขั้นต่ำ เวอร์ชัน iOS ขั้นต่ำ
Firebase Cloud Messaging v20.3.0 v6.34.0
การกำหนดค่าระยะไกล v19.2.0 v6.24.0
Google Analytics สำหรับ Firebase \ (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
ML Kit v22.1.2 v6.28.0

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

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

การดึงข้อมูลตัวระบุ

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

ก่อน

Swift

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

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];
    // display message
    NSLog(@"%@", 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

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

หลัง

Swift

do {
  let id = try await Installations.installations().installationID()
  print("Installation ID: \(id)")
} catch {
  print("Error fetching id: \(error)")
}

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

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รหัสการติดตั้ง เช่น

ก่อน

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

หลัง

Swift

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

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

การดึงโทเค็นการลงทะเบียน FCM

ก่อนที่จะมีการเปิดตัวการติดตั้ง Firebase FCMไคลเอ็นต์ จะดึงโทเค็นการลงทะเบียนจากรหัสอินสแตนซ์ ตอนนี้ 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();
            }
        });

Kotlin

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

Swift

InstanceID.instanceID().instanceID { result, error in
  if let error = error {
    print("Error fetching instance ID: \(error)")
  } else if let result = result {
    print("Instance ID token: \(result.token)")
  }
}

Objective-C

[[FIRInstanceID instanceID] instanceIDWithHandler:^(FIRInstanceIDResult * _Nullable result,
                                                    NSError * _Nullable error) {
  if (error != nil) {
    NSLog(@"Error fetching instance ID: %@", error);
  } else {
    NSLog(@"Instance ID token: %@", result.token);
  }
}];

หลัง

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

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

Swift

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

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];
    // display message
    NSLog(@"%@", message);
  }
}];