บริการติดตั้ง Firebase (FIS) จะให้รหัสการติดตั้ง Firebase (FID) สำหรับแต่ละอินสแตนซ์ที่ติดตั้งของแอป Firebase โดยบริการ Firebase ต่อไปนี้จะใช้รหัสการติดตั้ง Firebase เป็นการภายใน
บริการ Firebase | ฟังก์ชันการติดตั้ง Firebase |
---|---|
Firebase Cloud Messaging |
Firebase Cloud Messaging ใช้รหัสการติดตั้ง Firebase เพื่อกำหนดเป้าหมายอุปกรณ์สำหรับการส่งข้อความ |
Firebase Crashlytics |
Firebase Crashlytics จะหมุนเวียน UUID การติดตั้ง Crashlytics ตามการเปลี่ยนแปลงรหัสการติดตั้ง Firebase ของอินสแตนซ์แอป ในอนาคต ระบบอาจใช้รหัสการติดตั้งเพื่อเปิดใช้ฟีเจอร์ที่เพิ่มประสิทธิภาพบริการรายงานข้อขัดข้องและการจัดการข้อขัดข้อง |
การรับส่งข้อความในแอป Firebase |
การรับส่งข้อความในแอปของ Firebase ใช้รหัสการติดตั้ง Firebase เพื่อกำหนดเป้าหมายอุปกรณ์สำหรับการส่งข้อความ |
การตรวจสอบประสิทธิภาพ Firebase |
การตรวจสอบประสิทธิภาพใช้รหัสการติดตั้ง Firebase เพื่อคํานวณจํานวนการติดตั้ง Firebase ที่ไม่ซ้ำกันซึ่งเข้าถึงทรัพยากรเครือข่าย เพื่อให้มั่นใจว่ารูปแบบการเข้าถึงไม่ระบุตัวบุคคลมากพอ นอกจากนี้ยังใช้รหัสการติดตั้ง Firebase กับการกำหนดค่าระยะไกลของ Firebase เพื่อจัดการอัตราการรายงานเหตุการณ์ด้านประสิทธิภาพด้วย |
การกำหนดค่าระยะไกลของ 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 ขึ้นไป
- เพิ่มทรัพยากร Dependency สำหรับการติดตั้ง Firebase ลงใน Podfile ดังนี้
pod 'FirebaseInstallations'
- เรียกใช้
pod install
และเปิดไฟล์.xcworkspace
ที่สร้างขึ้น - นำเข้าโมดูล
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; // ...
- กำหนดค่าอินสแตนซ์ที่แชร์ของ
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];
- หากใช้ SwiftUI คุณต้องสร้างการมอบสิทธิ์แอปพลิเคชันและแนบการมอบสิทธิ์กับโครงสร้าง
App
ผ่านUIApplicationDelegateAdaptor
หรือNSApplicationDelegateAdaptor
คุณต้องปิดใช้ SWizzing ที่มอบสิทธิ์ของแอปด้วย ดูข้อมูลเพิ่มเติมได้ที่วิธีการของ SwiftUISwiftUI
@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 ให้เพิ่มทรัพยากร Dependency ในองค์ประกอบ <head> ดังนี้
<script src="/__/firebase/10.12.2/firebase-installations.js"></script>
Flutter
จากไดเรกทอรีรูทของโปรเจ็กต์ Flutter ให้เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้งปลั๊กอินการติดตั้ง Firebase
flutter pub add firebase_app_installations
สร้างโปรเจ็กต์อีกครั้ง
flutter run
นำเข้าปลั๊กอินการติดตั้ง 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+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 คุณสามารถระบุและกำหนดเป้าหมายอุปกรณ์ที่ถูกต้องได้โดยใช้รหัสการติดตั้ง 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 สำหรับการกำหนดค่าระยะไกล คุณจะตรวจสอบสิทธิ์อุปกรณ์ทดสอบเป้าหมายได้โดยใช้โทเค็นการตรวจสอบสิทธิ์การติดตั้ง
โทเค็นการตรวจสอบสิทธิ์การติดตั้งเป็นโทเค็นสำหรับผู้ถือที่มีอายุสั้นในรูปแบบโทเค็นเว็บ 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 ใหม่ ระบบจะทริกเกอร์ 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 ที่ใช้ 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 |
Performance Monitoring | 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 รหัสอินสแตนซ์โดยตรง คุณสามารถแทนที่การใช้งานดังกล่าวด้วยทางเลือกที่เหมือนกันใน SDK การติดตั้ง Firebase หรือ 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+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 ได้ดึงข้อมูลโทเค็นการลงทะเบียนจากรหัสอินสแตนซ์ ตอนนี้ 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+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; } }];