Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

הגדר אפליקציית לקוח העברת מסרים של Firebase ב- Android

כדי לכתוב את אפליקציית הלקוח של Android ל- Firebase Cloud Messaging, השתמש ב- FirebaseMessaging API וב- Android Studio 1.4 ומעלה עם Gradle. ההוראות בדף זה מניחות שהשלמת את השלבים להוספת Firebase לפרויקט Android שלך .

לקוחות FCM דורשים מכשירים עם Android 4.1 ואילך שמותקנת בהם גם אפליקציית Google Play Store, או אמולטור שמריץ Android 4.1 עם ממשקי API של Google. שים לב שאתה לא מוגבל לפרוס את אפליקציות Android שלך דרך חנות Google Play.

הגדר את ה- SDK

סעיף זה מכסה משימות שייתכן שהשלמת אם כבר הפעלת תכונות אחרות של Firebase עבור האפליקציה שלך.

לפני שאתה מתחיל

אם עדיין אין לך פרוייקט אנדרואיד ורק רוצה לנסות מוצר Firebase, תוכל להוריד אחת מהדוגמאות שלנו להפעלה מהירה .

צור פרויקט Firebase

לפני שתוכל להוסיף את Firebase לאפליקציית Android שלך, עליך ליצור פרויקט Firebase כדי להתחבר לאפליקציית Android שלך. בקר ב- Understand Firebase Projects למידע נוסף על פרויקטים של Firebase.

רשום את האפליקציה שלך ב- Firebase

כדי להשתמש ב- Firebase באפליקציית Android שלך, עליך לרשום את האפליקציה שלך בפרויקט Firebase שלך. רישום האפליקציה שלך נקרא לעתים קרובות "הוספת" האפליקציה שלך לפרויקט שלך.

  1. עבור למסוף Firebase .

  2. במרכז עמוד סקירת הפרויקט, לחץ על סמל אנדרואיד ( ) או הוסף אפליקציה כדי להפעיל את זרימת העבודה של ההתקנה.

  3. הזן את שם החבילה של האפליקציה שלך בשדה שם חבילה של Android .

  4. (אופציונלי) הזן מידע אחר על אפליקציה: כינוי לאפליקציה ותעודת חתימה באגים SHA-1 .

  5. לחץ על רשום אפליקציה .

הוסף קובץ תצורה של Firebase

  1. הוסף את קובץ התצורה של Android ל- Firebase לאפליקציה שלך:

    1. לחץ על הורד google-services.json כדי להשיג את קובץ התצורה של Android ב- Firebase ( google-services.json ).

    2. העבר את קובץ התצורה שלך לספריית המודולים (ברמת האפליקציה) של האפליקציה שלך.

  2. כדי להפעיל מוצרי Firebase באפליקציה שלך, הוסף את תוסף שירותי Google לקבצי Gradle שלך.

    1. בקובץ build.gradle ברמת השורש (ברמת הפרויקט) ( build.gradle ), הוסף כללים כדי לכלול את התוסף Gradle Services של Google. בדוק שיש לך גם מאגר Maven של גוגל.

      buildscript {
      
        repositories {
          // Check that you have the following line (if not, add it):
          google()  // Google's Maven repository
        }
      
        dependencies {
          // ...
      
          // Add the following line:
          classpath 'com.google.gms:google-services:4.3.8'  // Google Services plugin
        }
      }
      
      allprojects {
        // ...
      
        repositories {
          // Check that you have the following line (if not, add it):
          google()  // Google's Maven repository
          // ...
        }
      }
      
    2. במודול שלך (ברמת האפליקציה) קובץ Gradle (בדרך כלל app/build.gradle ), החל את התוסף Gradle Services של Google:

      apply plugin: 'com.android.application'
      // Add the following line:
      apply plugin: 'com.google.gms.google-services'  // Google Services plugin
      
      android {
        // ...
      }
      

הוסף SDK של Firebase לאפליקציה שלך

  1. באמצעות Firebase Android BoM , הצהירו על התלות בספריית Android ל- Firebase Cloud Messaging במודול שלכם (ברמת האפליקציה) בקובץ Gradle (בדרך כלל app/build.gradle ).

    לקבלת חוויה אופטימלית עם העברת הודעות בענן של Firebase, אנו ממליצים להפעיל את Google Analytics בפרויקט Firebase שלך ​​ולהוסיף את ה- SDK של Firebase עבור Google Analytics לאפליקציה שלך.

    ג'אווה

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.1.0')
    
        // Declare the dependencies for the Firebase Cloud Messaging and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-messaging'
        implementation 'com.google.firebase:firebase-analytics'
    }
    

    על ידי שימוש ב- Firebase Android BoM , היישום שלך ישתמש תמיד בגרסאות תואמות של ספריות Android ל- Firebase.

    (חלופי) הצהיר על תלות בספריית Firebase מבלי להשתמש ב- BoM

    אם תבחר לא להשתמש ב- Firebase BoM, עליך לציין כל גרסת ספריית Firebase בשורת התלות שלה.

    שים לב שאם אתה משתמש במספר ספריות Firebase באפליקציה שלך, אנו ממליצים בחום להשתמש ב- BoM לניהול גרסאות ספרייה, מה שמבטיח שכל הגרסאות תואמות.

    dependencies {
        // Declare the dependencies for the Firebase Cloud Messaging and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-messaging:22.0.0'
        implementation 'com.google.firebase:firebase-analytics:19.0.0'
    }
    

    Kotlin + KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.1.0')
    
        // Declare the dependencies for the Firebase Cloud Messaging and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-messaging-ktx'
        implementation 'com.google.firebase:firebase-analytics-ktx'
    }
    

    על ידי שימוש ב- Firebase Android BoM , היישום שלך ישתמש תמיד בגרסאות תואמות של ספריות Android ל- Firebase.

    (חלופי) הצהיר על תלות בספריית Firebase מבלי להשתמש ב- BoM

    אם תבחר לא להשתמש ב- Firebase BoM, עליך לציין כל גרסת ספריית Firebase בשורת התלות שלה.

    שים לב שאם אתה משתמש במספר ספריות Firebase באפליקציה שלך, אנו ממליצים בחום להשתמש ב- BoM לניהול גרסאות ספרייה, מה שמבטיח שכל הגרסאות תואמות.

    dependencies {
        // Declare the dependencies for the Firebase Cloud Messaging and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-messaging-ktx:22.0.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:19.0.0'
    }
    

  2. סנכרן את האפליקציה שלך כדי להבטיח שלכל התלות יש את הגרסאות הדרושות.

ערוך את מניפסט האפליקציה שלך

הוסף את הדברים הבאים למניפסט של האפליקציה שלך:

  • שירות המרחיב את FirebaseMessagingService . הדבר נדרש אם ברצונך לבצע טיפול בהודעות מעבר לקבלת התראות באפליקציות ברקע. כדי לקבל התראות באפליקציות קדמיות, לקבל מטען נתונים, לשלוח הודעות במעלה וכן הלאה, עליך להרחיב שירות זה.
  • <service
        android:name=".java.MyFirebaseMessagingService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
  • (אופציונלי) בתוך רכיב היישום, רכיבי מטא נתונים להגדרת סמל וצבע ברירת מחדל להתראות. אנדרואיד משתמש בערכים אלה כאשר הודעות נכנסות אינן מגדירות מפורשות סמל או צבע.
  • <!-- Set custom default icon. This is used when no icon is set for incoming notification messages.
         See README(https://goo.gl/l4GJaQ) for more. -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@drawable/ic_stat_ic_notification" />
    <!-- Set color used with incoming notification messages. This is used when no color is set for the incoming
         notification message. See README(https://goo.gl/6BKBk7) for more. -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_color"
        android:resource="@color/colorAccent" />
  • (אופציונלי) מ- Android 8.0 (API ברמה 26) ומעלה,ערוצי התראות נתמכים ומומלצים. FCM מספק ערוץ ברירת מחדל להתראות עם הגדרות בסיסיות. אם אתה מעדיף ליצור ולהשתמש בערוץ ברירת המחדל שלך, הגדר את default_notification_channel_id למזהה של אובייקט ערוץ ההודעות שלך כפי שמוצג; FCM ישתמש בערך זה בכל פעם שהודעות נכנסות לא מגדירות במפורש ערוץ התראות. למידע נוסף, ראהניהול ערוצי התראות .
  • <meta-data
        android:name="com.google.firebase.messaging.default_notification_channel_id"
        android:value="@string/default_notification_channel_id" />

גש לאסימון רישום המכשיר

בעת ההפעלה הראשונית של האפליקציה שלך, ה- FCM SDK מייצר אסימון רישום עבור מופע אפליקציית הלקוח. אם ברצונך למקד להתקנים בודדים או ליצור קבוצות מכשירים, יהיה עליך לגשת לאסימון זה על ידי הרחבת FirebaseMessagingService onNewToken .

חלק זה מתאר כיצד לאחזר את האסימון וכיצד לעקוב אחר שינויים באסימון. מכיוון שניתן לסובב את האסימון לאחר ההפעלה הראשונית, מומלץ מאוד לאחזר את אסימון הרישום המעודכן האחרון.

אסימון ההרשמה עשוי להשתנות כאשר:

  • האפליקציה משוחזרת במכשיר חדש
  • המשתמש מסיר / מתקין את האפליקציה מחדש
  • המשתמש מנקה את נתוני האפליקציה.

אחזר את אסימון הרישום הנוכחי

כאשר אתה צריך לאחזר את האסימון הנוכחי, התקשר ל- FirebaseMessaging.getInstance().getToken() :

ג'אווה

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

צג את יצירת האסימונים

onNewToken בכל פעם שנוצר אסימון חדש.

ג'אווה

/**
 * There are two scenarios when onNewToken is called:
 * 1) When a new token is generated on initial app startup
 * 2) Whenever an existing token is changed
 * Under #2, there are three scenarios when the existing token is changed:
 * A) App is restored to a new device
 * B) User uninstalls/reinstalls the app
 * C) User clears app data
 */
@Override
public void onNewToken(String token) {
    Log.d(TAG, "Refreshed token: " + token);

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // FCM registration token to your app server.
    sendRegistrationToServer(token);
}

Kotlin + KTX

/**
 * Called if the FCM registration token is updated. This may occur if the security of
 * the previous token had been compromised. Note that this is called when the
 * FCM registration token is initially generated so this is where you would retrieve the token.
 */
override fun onNewToken(token: String) {
    Log.d(TAG, "Refreshed token: $token")

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // FCM registration token to your app server.
    sendRegistrationToServer(token)
}

לאחר שתשיג את האסימון, תוכל לשלוח אותו לשרת האפליקציות שלך ולאחסן אותו בשיטה המועדפת עליך.

חפש שירותי Google Play

אפליקציות המסתמכות על ה- SDK של שירותי Play צריכות תמיד לבדוק במכשיר אם קיימים APK של שירותי Google Play תואמים לפני שהם ניגשים לתכונות שירותי Google Play. מומלץ לעשות זאת בשני מקומות: בשיטת onCreate() של הפעילות הראשית ובשיטת onResume() . הצ'ק-אין onCreate() מבטיח שלא ניתן להשתמש באפליקציה ללא בדיקה מוצלחת. הצ'ק-אין ב- onResume() מבטיח שאם המשתמש יחזור לאפליקציה הפועלת באמצעים אחרים כלשהם, כגון באמצעות כפתור ה- Back, הבדיקה עדיין מבוצעת.

אם למכשיר אין גרסה תואמת של שירותי Google Play, האפליקציה שלך יכולה להתקשר ל- GoogleApiAvailability.makeGooglePlayServicesAvailable() כדי לאפשר למשתמשים להוריד שירותי Google Play מחנות Play.

מנע אתחול אוטומטי

כאשר נוצר אסימון רישום FCM, הספרייה מעלה את נתוני המזהה והתצורה ל- Firebase. אם אתה מעדיף למנוע ייצור אוטומטי של אסימונים, השבת את איסוף Analytics ואתחול אוטומטי של FCM (עליך להשבית את שניהם) על ידי הוספת ערכי מטא נתונים אלה ל- AndroidManifest.xml שלך:

<meta-data
    android:name="firebase_messaging_auto_init_enabled"
    android:value="false" />
<meta-data
    android:name="firebase_analytics_collection_enabled"
    android:value="false" />

כדי להפעיל מחדש את הפעלת ה- FCM האוטומטית, בצע שיחת זמן ריצה:

ג'אווה

FirebaseMessaging.getInstance().setAutoInitEnabled(true);

Kotlin + KTX

Firebase.messaging.isAutoInitEnabled = true

כדי להפעיל מחדש את אוסף Analytics, התקשר setAnalyticsCollectionEnabled() של המחלקה FirebaseAnalytics . לדוגמה:

setAnalyticsCollectionEnabled(true);

ערכים אלה נמשכים לאורך האפליקציה מחדש לאחר שהוגדר.

הצעדים הבאים

לאחר הגדרת אפליקציית הלקוח, אתה מוכן להתחיל לשלוח הודעות במורד הזרם עם מלחין ההודעות . פונקציונליות זו מוצגת במדגם ההפעלה המהירה , שאותה תוכלו להוריד, להריץ ולסקור.

כדי להוסיף התנהגות אחרת ומתקדמת יותר לאפליקציה שלך, אתה יכול להכריז על מסנן כוונות וליישם פעילות כדי להגיב להודעות נכנסות. לפרטים, עיין במדריכים לשליחת הודעות משרת אפליקציות:

זכור שכדי לנצל את התכונות הללו תצטרך הטמעת שרת ופרוטוקולים של השרת (HTTP או XMPP), או יישום של ה- SDK לניהול .