برنامه مشتری Firebase Cloud Messaging را در Android تنظیم کنید

برای ارسال برنامه فایربیس ابر پیام آندروید مشتری خود را، با استفاده از FirebaseMessaging API و اندروید استودیو 1.4 یا بالاتر با Gradle. دستورالعمل ها در این صفحه فرض کنیم که شما این مراحل را برای تکمیل کرده اند اضافه کردن فایربیس به پروژه آندروید خود را .

مشتریان FCM به دستگاه هایی با سیستم عامل Android 4.1 یا بالاتر نیاز دارند که برنامه Google Play Store را نیز نصب کرده باشند ، یا شبیه ساز با Android 4.1 با API های Google. توجه داشته باشید که محدود به استقرار برنامه های Android خود از طریق فروشگاه Google Play نیستید.

SDK را تنظیم کنید

این بخش شامل وظایفی است که ممکن است در صورت فعال کردن سایر ویژگی های Firebase برای برنامه خود انجام داده باشید.

قبل از اینکه شروع کنی

  • نصب و یا به روز رسانی اندروید استودیو به آخرین نسخه آن.

  • اطمینان حاصل کنید که پروژه شما دارای این الزامات است:

    • Targets API سطح 16 (Jelly Bean) یا بالاتر
    • از Android 4.1 یا بالاتر استفاده می کند
    • استفاده از jetpack است (AndroidX) ، که شامل ملاقات این شرایط نسخه:
      • com.android.tools.build:gradle v3.2.1 و یا بعد از
      • compileSdkVersion 28 و یا بعد از
  • تنظیم یک دستگاه فیزیکی یا استفاده از یک شبیه ساز برای اجرای برنامه خود را.
    توجه داشته باشید که فایربیس SDK ها با وابستگی به سرویسهای Google Play نیاز به دستگاه و یا شبیه ساز به سرویس Google Play نصب شده است.

  • ورود به فایربیس استفاده از حساب Google خود را.

اگر شما در حال حاضر یک پروژه آندروید و فقط می خواهم به سعی کنید از یک محصول فایربیس، شما می توانید یکی از ما را دانلود نمونه شروع سریع .

ایجاد پروژه Firebase

قبل از افزودن Firebase به برنامه Android خود ، باید یک پروژه Firebase ایجاد کنید تا به برنامه Android خود متصل شوید. مشاهده درک پروژه فایربیس برای کسب اطلاعات بیشتر در مورد پروژه های فایربیس.

برنامه خود را با Firebase ثبت کنید

برای استفاده از Firebase در برنامه Android خود ، باید برنامه خود را در پروژه Firebase خود ثبت کنید. ثبت برنامه شما اغلب "افزودن" برنامه شما به پروژه شما نامیده می شود.

  1. رفتن به کنسول فایربیس .

  2. در مرکز صفحه مرور کلی پروژه، کلیک بر روی آیکون آندروید ( ) و یا اضافه کردن برنامه برای راه اندازی گردش کار راه اندازی شده است.

  3. نام بسته نرم افزار خود را وارد کنید در قسمت نام بسته آندروید.

  4. نام مستعار برنامه و امضای اشکال زدایی گواهی SHA-1: (اختیاری) اطلاعات برنامه دیگر را وارد کنید.

  5. برنامه ثبت نام کلیک کنید.

یک فایل پیکربندی Firebase اضافه کنید

  1. فایل پیکربندی Firebase Android را به برنامه خود اضافه کنید:

    1. برای به دست آوردن فایل پیکربندی فایربیس آندروید خود را کلیک کنید دانلود Google-services.json ( google-services.json ).

    2. فایل پیکربندی خود را به فهرست ماژول (سطح برنامه) برنامه خود منتقل کنید.

  2. برای فعال کردن محصولات فایربیس در برنامه شما، اضافه کردن گوگل-خدمات پلاگین به فایل های Gradle خود را.

    1. در خود ریشه در سطح (سطح پروژه) فایل Gradle ( build.gradle )، اضافه کردن قوانین شامل افزونه Google خدمات Gradle. بررسی کنید که آیا مخزن 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 )، درخواست افزونه Google خدمات Gradle:

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

SDK های Firebase را به برنامه خود اضافه کنید

  1. با استفاده از فایربیس آندروید BOM ، اعلام وابستگی برای کتابخانه فایربیس ابر پیام آندروید در ماژول خود را (در سطح برنامه) فایل Gradle (معمولا app/build.gradle ).

    برای یک تجربه بهینه با Firebase ابر پیام، توصیه می کنیم قادر می سازد گوگل آنالیز در پروژه Firebase خود و اضافه کردن SDK فایربیس برای گوگل آنالیز برای برنامه شما.

    جاوا

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.1')
    
        // 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'
    }
    

    با استفاده از فایربیس آندروید BOM ، برنامه شما همیشه نسخه های سازگار با کتابخانه فایربیس آندروید استفاده خواهد کرد.

    (جایگزین) اعلام فایربیس وابستگی کتابخانه بدون استفاده از BOM

    در صورت عدم استفاده از Firebase BoM ، باید هر نسخه کتابخانه 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.1'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.1')
    
        // 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'
    }
    

    با استفاده از فایربیس آندروید BOM ، برنامه شما همیشه نسخه های سازگار با کتابخانه فایربیس آندروید استفاده خواهد کرد.

    (جایگزین) اعلام فایربیس وابستگی کتابخانه بدون استفاده از BOM

    در صورت عدم استفاده از Firebase BoM ، باید هر نسخه کتابخانه 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.1'
    }
    

  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" />
  • (اختیاری) از آندروید 8.0 (API سطح 26) و بالاتر، کانال های اطلاع رسانی پشتیبانی می شوند و توصیه می شود. FCM یک کانال اطلاع رسانی پیش فرض با تنظیمات اساسی ارائه می دهد. اگر شما ترجیح می دهند به ایجاد و استفاده از کانال پیش فرض خود را، مجموعه ای default_notification_channel_id به 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 متکی هستند باید قبل از دسترسی به ویژگی های خدمات Google Play ، دستگاه را برای APK خدمات Google Play سازگار بررسی کنند. توصیه می شود برای انجام این کار در دو مکان: در فعالیت های اصلی در onCreate() روش، و در آن onResume() روش. چک در onCreate() تضمین می کند که این برنامه می توانید بدون چک موفق استفاده شود. چک در onResume() می شود که اگر بازده کاربر به برنامه در حال اجرا را از طریق برخی از وسایل دیگر، از جمله از طریق دکمه تماس، چک هنوز انجام شده است.

اگر دستگاه نسخه سازگار از سرویس Google Play را نداشته باشند، برنامه شما می توانید پاسخ GoogleApiAvailability.makeGooglePlayServicesAvailable() به کاربران اجازه می دهد برای دانلود خدمات بازی گوگل را از فروشگاه بازی.

جلوگیری از راه اندازی خودکار

هنگامی که یک رمز ثبت FCM ایجاد می شود ، کتابخانه شناسه و داده های پیکربندی را در Firebase بارگذاری می کند. اگر شما ترجیح می دهند به جلوگیری از autogeneration نشانه، مجموعه آنالیز غیر فعال کردن و 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

برای فعال کردن مجدد مجموعه آنالیز، با setAnalyticsCollectionEnabled() روش از FirebaseAnalytics کلاس. مثلا:

setAnalyticsCollectionEnabled(true);

این مقادیر پس از تنظیم مجدد در راه اندازی مجدد برنامه باقی می مانند.

مراحل بعدی

پس از برنامه ی کلاینت ایجاد شد، شما آماده برای شروع به ارسال پیام در پایین دست با می آهنگساز اطلاعیه . این قابلیت است که در نشان داده نمونه شروع سریع ، که شما می توانید دانلود کنید، اجرا، و بررسی.

برای افزودن رفتارهای دیگر و پیشرفته تر به برنامه خود ، می توانید فیلتر قصد را اعلام کرده و فعالیتی را برای پاسخ به پیامهای دریافتی پیاده سازی کنید. برای جزئیات بیشتر ، راهنمای ارسال پیام از سرور برنامه را ببینید:

به خاطر داشته باشید که، به استفاده از این ویژگی ها، شما یک نیاز پیاده سازی سرور و procotols سرور (HTTP یا XMPP)، و یا یک پیاده سازی از SDK محیط مدیریت .