Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

הגדר אפליקציית לקוח Firebase Cloud Messaging באנדרואיד

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

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

הגדר את ה- SDK

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

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

  • התקן או עדכן Android Studio לגרסה האחרונה שלה.

  • וודא שהפרויקט שלך עומד בדרישות הבאות:

    • מטרות API ברמה 16 (Jelly Bean) ומעלה
    • משתמש באנדרואיד 4.1 ומעלה
    • שימושים Jetpack (AndroidX) , הכולל עמידה בדרישות הגירסה הבאות:
      • com.android.tools.build:gradle v3.2.1 או במאוחר
      • compileSdkVersion 28 או מאוחר יותר
  • הגדרת התקן פיזי או להשתמש אמולטור כדי להפעיל את האפליקציה.
    הערה כי Firebase SDKs עם תלות בשירותי Google Play דורש את המכשיר או אמולטור יש בשירותי Google Play המותקנים.

  • היכנס Firebase באמצעות חשבון Google שלך.

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

צור פרויקט Firebase

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

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

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

  1. עבור אל קונסולת Firebase .

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

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

  4. (אופציונאלי) זן פרטי אפליקציה אחרים: כינוי App ו Debug חתימת אישור SHA-1.

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

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

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

    1. לחץ על google-services.json הורדה לקבל קובץ config Firebase Android שלך ( google-services.json ).

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

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

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

      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.10'  // 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 שירותי Google:

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

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

  1. באמצעות BOM אנדרואיד Firebase , להכריז על התלות של הספרייה אנדרואיד Firebase הודעות בענן מודול שלך (ברמת האפליקציה) קובץ Gradle (בדרך כלל app/build.gradle ).

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

    ג'אווה

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.2')
    
        // 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 אנדרואיד BOM , האפליקציה שלך תמיד ישתמשו גירסאות תואמות של ספריות אנדרואיד 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.2'
    }
    

    קוטלין+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.2')
    
        // 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 אנדרואיד BOM , האפליקציה שלך תמיד ישתמשו גירסאות תואמות של ספריות אנדרואיד 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.2'
    }
    

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

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

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

  • שירות המשתרע FirebaseMessagingService . זה נדרש אם אתה רוצה לבצע טיפול בהודעות מעבר לקבלת הודעות על אפליקציות ברקע. כדי לקבל התראות ביישומים קודמים, לקבל עומס נתונים, לשלוח הודעות במעלה הזרם וכן הלאה, עליך להרחיב שירות זה.
  • <service
        android:name=".java.MyFirebaseMessagingService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
  • (אופציונלי) בתוך רכיב היישום, רכיבי מטא נתונים להגדרת סמל ברירת מחדל וצבע. Android משתמשת בערכים אלה בכל פעם שהודעות נכנסות אינן מגדירות במפורש סמל או צבע.
  • <!-- 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" />
  • (אופציונלי) מ 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();
        }
    });

קוטלין+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);
}

קוטלין+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() מבטיחה כי אם המשתמש חוזר האפליקציה פועלת באמצעות כמה אמצעים אחרים, כגון דרך הכפתור חזרה, שההמחאה עדיין מתבצעת.

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

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

כאשר נוצר אסימון רישום FCM, הספרייה מעלה את המזהה ונתוני התצורה ל- Firebase. אם אתם מעדיפים למנוע אסימון autogeneration, אוסף Analytics להשבית אתחול אוטומטי FCM (עליך להשבית את שני) על ידי הוספת ערכים metadata האלה שלך 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-init-auto, בצע שיחת זמן ריצה:

ג'אווה

FirebaseMessaging.getInstance().setAutoInitEnabled(true);

קוטלין+KTX

Firebase.messaging.isAutoInitEnabled = true

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

setAnalyticsCollectionEnabled(true);

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

הצעדים הבאים

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

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

זכור כי, כדי לנצל את התכונות הללו, תצטרך יישום שרת ואת procotols השרת (HTTP או XMPP), או יישום של SDK של הניהול .