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

บริการติดตั้ง Firebase (FIS) มอบ รหัสการติดตั้ง (FID) Firebase สำหรับอินสแตนซ์ที่ติดตั้งแต่ละรายการ ของแอป 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 ลงในแอป

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

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 คุณต้องปิดใช้ SWizzing ที่มอบสิทธิ์ของแอปด้วย สำหรับ สำหรับข้อมูลเพิ่มเติม โปรดดูวิธีการของ 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:18.0.0'

JavaScript

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

ตัวอย่างเช่น ถ้ามีการเพิ่มทรัพยากร Dependency ใน 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 วัน กระบวนการนี้มีการอธิบายในภาพรวมใน ข้อความเกี่ยวกับการลบและการเก็บรักษา

เว้นแต่คุณจะปิดใช้งานบริการสร้าง FID ทั้งหมดใน FIS จะสร้างรหัสใหม่ภายใน 2-3 วัน 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+KTX

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

JavaScript

await firebase.installations().delete();

Dart

await FirebaseInstallations.instance.delete();

ลบ 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 ตัวอย่างเช่น หากต้องการสร้าง กลุ่มของการติดตั้งแอปสำหรับการนำเข้า BiqQuery หรือเพื่อดำเนินการ ในระหว่างการพัฒนา 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+KTX

FirebaseInstallations.getInstance().id.addOnCompleteListener { task ->
    if (task.isSuccessful) {
        Log.d("Installations", "Installation ID: " + task.result)
    } else {
        Log.e("Installations", "Unable to get Installation ID")
    }
}

JavaScript

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

Dart

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

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

บริการ 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+KTX

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 ครั้ง มีข้อได้เปรียบที่สำคัญเหนือกว่ารหัสอินสแตนซ์ในแง่ความน่าเชื่อถือ ประสิทธิภาพ และความปลอดภัย แอป Firebase ที่ต้องใช้ SDK ของรหัสอินสแตนซ์ควรย้ายข้อมูล ถึง Firebase ครั้ง

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

  • แอปที่ไม่ได้เรียกใช้ 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 เวอร์ชัน 20.3.0 v6.34.0
การกำหนดค่าระยะไกล เวอร์ชัน 19.2.0 v6.24.0
Google Analytics สำหรับ Firebase \ (Measurement SDK) v17.4.4 เวอร์ชัน 6.18.0
การรับส่งข้อความในแอป v19.0.7 v6.24.0
การตรวจสอบประสิทธิภาพ v19.0.8 v6.21.0
Crashlytics v17.2.1 เวอร์ชัน 6.23.0
ML Kit v22.1.2 เวอร์ชัน 6.28.0

การอัปเดตโค้ดที่เรียกใช้ API ของรหัสอินสแตนซ์อย่างชัดเจน

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

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

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

ก่อน

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+KTX

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+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 เช่น

ก่อน

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+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 เรียกดูโทเค็นการลงทะเบียนจากรหัสอินสแตนซ์แล้ว ตอนนี้ 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+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()
        })

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

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