จัดการการติดตั้ง 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 เพื่อเลือกค่าการกําหนดค่าเพื่อส่งกลับไปยังอุปกรณ์ของผู้ใช้ปลายทาง

Firebase ML

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

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

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

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

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

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

เพิ่ม Firebase installations SDK ลงในแอป

iOS ขึ้นไป

  1. เพิ่มข้อกําหนดของการติดตั้ง 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. กำหนดค่าอินสแตนซ์ที่แชร์ในเมธอด application(_:didFinishLaunchingWithOptions:) ของตัวแทนแอป ดังนี้ FirebaseApp

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

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

JavaScript

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

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

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

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 ใหม่ ระบบจะเรียกใช้การเรียกกลับที่สมัครรับข้อมูล ดังนี้

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 มีข้อดีอย่างมากเมื่อเทียบกับ Instance ID ในด้านความน่าเชื่อถือ ประสิทธิภาพ และความปลอดภัย แอป 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

หากต้องการย้ายข้อมูลจาก 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 สําหรับ 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 ใช้เมธอด Instance ID SDK โดยตรง คุณสามารถแทนที่การใช้งานดังกล่าวด้วยทางเลือกที่เหมือนกันใน Firebase Installations SDK หรือ FCM SDK

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

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

ก่อน

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

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 clients retrieving registration tokens from 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();
            }
        });

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

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

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