จัดการการติดตั้งและรหัส Firebase

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

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

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

Firebase Crashlytics

Firebase Crashlytics จะหมุนเวียน UUID การติดตั้ง Crashlytics ตามการเปลี่ยนแปลงรหัสการติดตั้ง 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 เพื่อเลือกค่าการกำหนดค่าที่จะแสดงผลไปยังอุปกรณ์ของผู้ใช้ปลายทาง ฟีเจอร์การปรับเปลี่ยนในแบบของคุณของ Remote Config ใช้รหัสการติดตั้ง Firebase เพื่อเชื่อมโยงข้อมูลเหตุการณ์ของแอปกับการติดตั้ง Firebase เพื่อคาดการณ์และแสดงผลค่าการกำหนดค่าที่เหมาะสมที่สุดไปยังอุปกรณ์ของผู้ใช้ปลายทาง

Firebase ML

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

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

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

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

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

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

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

iOS+

  1. เพิ่มทรัพยากร Dependency สำหรับการติดตั้ง Firebase ลงใน Podfile ดังนี้
    pod 'FirebaseInstallations'
  2. เรียกใช้ pod install และเปิดไฟล์ .xcworkspace ที่สร้างขึ้น
  3. นำเข้าโมดูล FirebaseCore ใน UIApplicationDelegate รวมถึงโมดูล Firebase อื่นๆ ที่ App Delegate ของคุณใช้ ตัวอย่างเช่น หากต้องการใช้ 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:) ของ App Delegate ดังนี้

    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 สำหรับ Android SDK ของการติดตั้ง Firebase ลงในไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติคือ app/build.gradle)

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

JavaScript

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

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

<script src="/__/firebase/13.0.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 ให้เรียกใช้เมธอดที่เหมาะสมจาก SDK การติดตั้ง Firebase ดังนี้

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 ทันทีด้วยรหัสใหม่ที่ไม่เกี่ยวข้อง ให้ใช้ 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 คุณสามารถตรวจสอบสิทธิ์อุปกรณ์ทดสอบเป้าหมายโดยใช้โทเค็นการตรวจสอบสิทธิ์การติดตั้ง

โทเค็นการตรวจสอบสิทธิ์การติดตั้งคือโทเค็นสำหรับผู้ถือที่มีอายุสั้นในรูปแบบโทเค็นเว็บ 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

เว็บแอปสามารถสมัครรับข้อมูลจากฮุก onIdChange ได้

เมื่อใดก็ตามที่มีการสร้าง FID ใหม่ ระบบจะเรียกใช้ Callback ที่สมัครไว้

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 ที่ใช้ Instance ID 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
Performance Monitoring 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 ของคุณใช้เมธอด Instance ID 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 Installations ไคลเอ็นต์ FCM จะดึงโทเค็นการลงทะเบียนจากรหัสอินสแตนซ์ ตอนนี้ SDK ของ FCM มีเมธอดในการดึงข้อมูลโทเค็นการลงทะเบียน

ก่อน

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