إدارة عمليات تثبيت Firebase

توفر خدمة تثبيت Firebase (FIS) معرف تثبيت Firebase (FID) لكل مثيل مثبت لتطبيق Firebase. يتم استخدام معرف تثبيت Firebase داخليًا بواسطة خدمات Firebase التالية:

خدمة Firebase وظيفة تثبيتات Firebase
المراسلة السحابية من Firebase

يستخدم Firebase Cloud Messaging معرفات تثبيت Firebase لاستهداف الأجهزة لتسليم الرسائل.

Firebase Crashlytics

يقوم Firebase Crashlytics بتدوير UUID الخاص بتثبيت Crashlytics استنادًا إلى التغييرات التي يتم إجراؤها على معرف تثبيت Firebase الخاص بمثيل التطبيق. في المستقبل، قد يتم استخدام معرف التثبيت لتمكين الميزات التي تعمل على تحسين خدمات الإبلاغ عن الأعطال وإدارة الأعطال.

المراسلة داخل التطبيق من Firebase

تستخدم خدمة Firebase In-App Messaging معرفات تثبيت Firebase لاستهداف الأجهزة لتسليم الرسائل.

مراقبة أداء Firebase

تستخدم مراقبة الأداء معرفات تثبيت Firebase لحساب عدد عمليات تثبيت Firebase الفريدة التي تصل إلى موارد الشبكة، للتأكد من أن أنماط الوصول مجهولة بشكل كافٍ. ويستخدم أيضًا معرفات تثبيت Firebase مع Firebase Remote Config لإدارة معدل الإبلاغ عن أحداث الأداء.

التكوين عن بعد لـ Firebase

يستخدم Remote Config معرفات تثبيت Firebase لتحديد قيم التكوين للعودة إلى أجهزة المستخدم النهائي.

فايربيس مل

يتم استخدام بيانات الاعتماد التي تسمى الرموز المميزة لمصادقة التثبيت بواسطة Firebase ML لمصادقة الجهاز عند التفاعل مع مثيلات التطبيق، على سبيل المثال، لتوزيع نماذج المطورين على مثيلات التطبيق.

تخزين تجزئة مستخدم Firebase

يقوم تخزين تقسيم مستخدم Firebase بتخزين معرفات تثبيت Firebase والسمات والشرائح ذات الصلة لتوفير معلومات الاستهداف لخدمات Firebase الأخرى التي تستخدمها.

عادةً، تستخدم خدمات Firebase خدمة تثبيتات Firebase دون مطالبة المطورين بالتفاعل مباشرةً مع واجهة برمجة تطبيقات FIS. ومع ذلك، هناك حالات قد يرغب فيها مطورو التطبيقات في الاتصال مباشرة بـ FIS API، مثل:

  • لحذف تثبيت Firebase والبيانات المرتبطة بالتثبيت.
  • لاسترداد المعرفات (معرفات تثبيت Firebase) لاستهداف عمليات تثبيت تطبيقات محددة.
  • لاسترداد الرموز المميزة لمصادقة التثبيت لمصادقة عمليات تثبيت Firebase.

للبدء في الاتصال مباشرة بـ FIS API، قم بإضافة SDK إلى تطبيقك.

أضف حزمة SDK لعمليات تثبيت Firebase إلى تطبيقك

دائرة الرقابة الداخلية +

  1. أضف تبعية عمليات تثبيت Firebase إلى ملف Podfile الخاص بك:
    pod 'FirebaseInstallations'
  2. قم بتشغيل pod install وافتح ملف .xcworkspace الذي تم إنشاؤه.
  3. قم باستيراد وحدة FirebaseCore في UIApplicationDelegate ، بالإضافة إلى أي وحدات Firebase أخرى يستخدمها مندوب تطبيقك. على سبيل المثال، لاستخدام Cloud Firestore والمصادقة:

    سويفتويي

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

    سويفت

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    ج موضوعية

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  4. قم بتكوين مثيل FirebaseApp مشترك في طريقة application(_:didFinishLaunchingWithOptions:) :

    سويفتويي

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

    سويفت

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

    ج موضوعية

    // Use Firebase library to configure APIs
    [FIRApp configure];
  5. إذا كنت تستخدم SwiftUI، فيجب عليك إنشاء مفوض تطبيق وإرفاقه ببنية App الخاص بك عبر UIApplicationDelegateAdaptor أو NSApplicationDelegateAdaptor . يجب عليك أيضًا تعطيل swizzling مندوب التطبيق. لمزيد من المعلومات، راجع تعليمات SwiftUI .

    سويفتويي

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          

ذكري المظهر

أضف التبعية لعمليات تثبيت Firebase Android SDK إلى ملف Gradle الخاص بالوحدة النمطية (على مستوى التطبيق) (عادةً app/build.gradle ):

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

جافا سكريبت

اعتمادًا على كيفية استضافة تطبيق الويب الخاص بك، قد تتم معالجة التكوين الخاص بك تلقائيًا أو قد تحتاج إلى تحديث كائن تكوين Firebase الخاص بك.

على سبيل المثال، إذا تمت إضافة تبعياتك في ملف Index.html، فأضف التبعيات في عنصر <head>:

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

رفرفة

  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 بشأن الحذف والاحتفاظ .

ما لم تقم بتعطيل جميع خدمات إنشاء FID في تطبيقك، فسيقوم FIS بإنشاء معرف جديد في غضون أيام قليلة. يعتبر Firebase المعرف الذي تم إنشاؤه حديثًا بمثابة تثبيت Firebase جديد، ولا يربطه بالمعرف أو البيانات السابقة بأي شكل من الأشكال.

حذف FID باستخدام استدعاء API للعميل

لحذف معرفات FID التي تم إنشاؤها بواسطة خدمات Firebase، اتصل بالطريقة المناسبة من SDK لعمليات تثبيت Firebase:

سويفت

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

ج موضوعية

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

جافا سكريبت

await firebase.installations().delete();

Dart

await FirebaseInstallations.instance.delete();

احذف FID باستخدام استدعاء API للخادم

لحذف FID من خلال استدعاء واجهة برمجة تطبيقات الخادم، أضف 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();

بايثون

  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)

يذهب

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 من خلال استدعاء واجهة برمجة تطبيقات الخادم، تبدأ خدمات Firebase عملية حذف البيانات المرتبطة بمعرف التثبيت هذا، وتتوقف عن قبول البيانات الجديدة لذلك المعرف على مدار يوم أو يومين، ثم تخطر تطبيق العميل أن المعرف قد تم حذفه. وإلى أن يقوم Firebase بإخطار تطبيق العميل، قد تستمر بعض خدمات التطبيق في استهداف المعرف - على سبيل المثال، قد يستمر تثبيت Firebase في تلقي إشعارات FCM لبضع ساعات.

إذا كنت تريد حذف معرف تثبيت Firebase الحالي واستخدام خدمات Firebase على الفور بمعرف جديد غير ذي صلة، فاستخدم واجهة برمجة تطبيقات العميل للتعامل مع عملية الحذف.

استرداد معرفات العميل

إذا كانت لديك متطلبات لتحديد عمليات تثبيت معينة لتطبيقك، فيمكنك القيام بذلك عن طريق استرداد معرف تثبيت Firebase. على سبيل المثال، لإنشاء شرائح من عمليات تثبيت التطبيق لاستيراد BiqQuery، أو لإجراء اختبار أثناء تطوير Firebase In-App Messaging، يمكنك تحديد الأجهزة الصحيحة واستهدافها باستخدام معرفات تثبيت Firebase المقابلة.

لاسترداد معرف تثبيت Firebase:

سويفت

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

ج موضوعية

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

جافا سكريبت

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

Dart

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

استرداد الرموز المميزة لمصادقة التثبيت

يمكن لخدمات Firebase مصادقة عمليات تثبيت Firebase باستخدام رموز المصادقة التي تم استردادها من FIS. على سبيل المثال، عند تصميم اختبارات A/B للتكوين عن بعد، يمكنك مصادقة جهاز اختبار مستهدف باستخدام رمز مصادقة التثبيت.

رمز مصادقة التثبيت هو رمز حامل قصير الأجل بتنسيق JSON web token (JWT) الذي يحتوي على المعلومات التالية للتثبيت:

  • معرف تثبيت Firebase
  • المشروع المرتبط ( projectNumber )
  • معرف تطبيق Firebase المرتبط ( appId )
  • تاريخ انتهاء صلاحية الرمز المميز

لا يمكن إلغاء رمز مصادقة التثبيت، ويظل صالحًا حتى تاريخ انتهاء صلاحيته. العمر الافتراضي للرمز المميز هو أسبوع واحد.

لاسترداد رمز مصادقة التثبيت:

سويفت

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

ج موضوعية

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

جافا سكريبت

const installationToken = await firebase.installations()
    .getToken(/* forceRefresh */ true);
console.log(installationToken);

Dart

String token = await FirebaseInstallations.instance.getToken();

مراقبة دورة حياة معرف تثبيت Firebase

أثناء التشغيل العادي لأحد التطبيقات، لا تتطلب معرفات تثبيت Firebase (FIDs) مراقبة خاصة. ومع ذلك، فإن التطبيقات التي تسترد معرفات FID وتستخدمها بشكل صريح يجب أن تضيف منطقًا لمراقبة الحذف المحتمل لمعرفات FID أو تدويرها. فيما يلي بعض الحالات التي يمكن فيها حذف معرفات FID أو تدويرها:

  • إلغاء تثبيت التطبيق أو إعادة تثبيته، على سبيل المثال عندما يقوم المستخدم النهائي بالتثبيت على جهاز جديد.
  • يقوم المستخدم النهائي بمسح ذاكرة التخزين المؤقت للتطبيق أو الجهاز.
  • يتم تشغيل حذف FID في الواجهة الخلفية بسبب عدم نشاط التطبيق (حاليًا الحد الأدنى لهذا هو 270 يومًا من عدم النشاط).

عندما تواجه التطبيقات تدوير FID أو حذفه في هذه الأنواع من الحالات، يتم تعيين FID جديد لها. كما يتم أيضًا حذف رمز مصادقة التثبيت المرتبط بـ FID المحذوف، بغض النظر عن تاريخ نضجه، ويتم استبداله برمز مصادقة تثبيت جديد.

يمكن للتطبيقات مراقبة هذه التغييرات والاستجابة وفقًا لذلك.

لمراقبة دوران FID:

سويفت

installationIDObserver = NotificationCenter.default.addObserver(
        forName: .InstallationIDDidChange,
        object: nil,
        queue: nil
) { (notification) in
  // Fetch new Installation ID
  Task {
    await self.fetchInstallationToken()
  }
}

ج موضوعية

__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 جديد.

ذكري المظهر

يجب على عملاء Kotlin وJava إضافة منطق إعادة المحاولة للرد على المكالمات الفاشلة لاسترداد FID الجديد.

جافا سكريبت

يمكن لتطبيقات الويب الاشتراك في ربط 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 على Instance ID SDK لمعرفات عمليات تثبيت التطبيق. توفر عمليات تثبيت Firebase مزايا كبيرة مقارنة بمعرف المثيل من حيث الموثوقية والأداء والأمان. يجب أن يتم ترحيل تطبيقات Firebase التي تعتمد على Instance ID SDK إلى عمليات تثبيت Firebase.

تختلف عملية الترحيل بناءً على تطبيقك:

  • يمكن للتطبيقات التي لا تتصل مباشرة بواجهات برمجة تطبيقات معرف المثيل أن يتم ترحيلها عن طريق تحديث إصدارات SDK الخاصة بها . تقع معظم تطبيقات Firebase ضمن هذه الفئة.

  • يجب على التطبيقات التي تجري بشكل صريح استدعاءات واجهة برمجة التطبيقات لمعرف المثيل تحديث إصدارات SDK وإجراء تغييرات على التعليمات البرمجية لاستبدال أساليب معرف المثيل بعمليات تثبيت Firebase أو مكافئات FCM. إذا كان تطبيقك يستخدم معرف المثيل لاسترداد الرموز المميزة لتسجيل FCM أو يستخدم معرف المثيل بشكل صريح لاستهداف مثيلات التطبيق أو لأي غرض آخر، فستحتاج إلى تحديث رمز التطبيق الخاص بك.

حاليًا، FIS متوافق مع الإصدارات السابقة مع المعرف القديم Firebase Instance ID. يعد حذف IID طريقة بديلة لطلب حذف البيانات باستخدام حزم Firebase SDK هذه:

  • دائرة الرقابة الداخلية 6.14.0 وأقل
  • حزم SDK لنظام التشغيل Android أقدم من 27 فبراير 2020

وهذا يعني أن التطبيقات ليست مطالبة بالانتقال إلى عمليات تثبيت Firebase؛ ومع ذلك، يوصى بشدة بالقيام بذلك.

الترقية إلى الحد الأدنى من إصدارات SDK لعمليات تثبيت Firebase

للترحيل من معرف المثيل إلى عمليات تثبيت Firebase، تأكد من أن تطبيقاتك تستخدم على الأقل الحد الأدنى من أرقام الإصدارات المدرجة لحزم Firebase SDK التالية:

Firebase SDK الحد الأدنى لإصدار أندرويد الحد الأدنى لإصدار iOS
المراسلة السحابية من Firebase v20.3.0 v6.34.0
التكوين عن بعد v19.2.0 v6.24.0
Google Analytics for 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
مجموعة مل v22.1.2 v6.28.0

تحديث التعليمات البرمجية التي تستدعي بشكل صريح واجهات برمجة تطبيقات معرف المثيل

إذا كان تطبيق Android أو Apple الخاص بك يستخدم أساليب Instance ID SDK مباشرةً، فيمكنك استبدال هذا الاستخدام ببدائل متطابقة في SDK لعمليات تثبيت Firebase أو FCM SDK.

استرداد معرف

يتم استبدال طرق الحصول على معرفات المثيلات بطرق الحصول على معرف التثبيت. على سبيل المثال:

قبل

سويفت

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

ج موضوعية

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

بعد

سويفت

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

ج موضوعية

[[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. على سبيل المثال:

قبل

سويفت

InstanceID.instanceID().deleteID { error in
  if let error = error {
    print("Error deleting instance ID: \(error)")
  }
}

ج موضوعية

[FIRInstanceID instanceID] deleteIDWithHandler:^(NSError *error) {
  if error != nil {
    NSLog(@"Error deleting instance ID: %@", error);
  }
}];

ذكري المظهر

FirebaseInstanceId.deleteInstanceId();

بعد

سويفت

func delete(completion: @escaping (Error?) -> Void)

ج موضوعية

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

سويفت

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

ج موضوعية

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

سويفت

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

ج موضوعية

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