Check out what’s new from Firebase at Google I/O 2022. Learn more

Android'de bir Firebase Bulut Mesajlaşma istemci uygulaması kurun

FCM istemcileri, Google Play Store uygulamasının da yüklü olduğu Android 4.4 veya sonraki sürümleri çalıştıran cihazlara veya Google API'leri ile Android 4.4 çalıştıran bir öykünücüye ihtiyaç duyar. Android uygulamalarınızı Google Play Store üzerinden dağıtmakla sınırlı olmadığınızı unutmayın.

SDK'yı kurun

Bu bölüm, uygulamanız için diğer Firebase özelliklerini zaten etkinleştirdiyseniz tamamlamış olabileceğiniz görevleri kapsar. Henüz yapmadıysanız, Android projenize Firebase'i ekleyin

Uygulama bildiriminizi düzenleyin

Aşağıdakileri uygulamanızın bildirimine ekleyin:

  • FirebaseMessagingService genişleten bir hizmet. Arka planda uygulamalarda bildirim almanın ötesinde herhangi bir mesaj işleme yapmak istiyorsanız bu gereklidir. Ön plana çıkan uygulamalarda bildirim almak, veri yükü almak, yukarı akış mesajları göndermek vb. için bu hizmeti genişletmeniz gerekir.
  • <service
        android:name=".java.MyFirebaseMessagingService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
  • (İsteğe bağlı) Uygulama bileşeni içinde, varsayılan bir bildirim simgesi ve rengi ayarlamak için meta veri öğeleri. Android, gelen iletiler açıkça simge veya renk ayarlamadığında bu değerleri kullanır.
  • <!-- 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" />
  • (İsteğe bağlı) Android 8.0 (API düzeyi 26) ve sonraki sürümlerde bildirim kanalları desteklenir ve önerilir. FCM, temel ayarlarla varsayılan bir bildirim kanalı sağlar. Kendi varsayılan kanalınızı oluşturmayı ve kullanmayı tercih ederseniz, default_notification_channel_id , gösterildiği gibi bildirim kanalı nesnenizin kimliğine ayarlayın; FCM, gelen mesajlar açıkça bir bildirim kanalı ayarlamadığında bu değeri kullanır. Daha fazla bilgi edinmek için bkz. Bildirim kanallarını yönetme .
  • <meta-data
        android:name="com.google.firebase.messaging.default_notification_channel_id"
        android:value="@string/default_notification_channel_id" />

Cihaz kayıt belirtecine erişin

Uygulamanızın ilk başlangıcında, FCM SDK, istemci uygulama örneği için bir kayıt belirteci oluşturur. Tek cihazları hedeflemek veya cihaz grupları oluşturmak istiyorsanız, onNewToken FirebaseMessagingService kılarak bu simgeye erişmeniz gerekir.

Bu bölüm, belirtecin nasıl alınacağını ve belirteçteki değişikliklerin nasıl izleneceğini açıklar. Belirteç, ilk başlatmadan sonra döndürülebildiğinden, en son güncellenen kayıt belirtecini almanız şiddetle önerilir.

Kayıt jetonu şu durumlarda değişebilir:

  • Uygulama yeni bir cihaza geri yüklendi
  • Kullanıcı uygulamayı kaldırır/yeniden yükler
  • Kullanıcı uygulama verilerini temizler.

Geçerli kayıt belirtecini al

Geçerli belirteci almanız gerektiğinde, FirebaseMessaging.getInstance().getToken() arayın:

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

Belirteç oluşturmayı izleyin

onNewToken geri çağrısı, yeni bir belirteç oluşturulduğunda tetiklenir.

Java

/**
 * 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)
}

Belirteci aldıktan sonra, uygulama sunucunuza gönderebilir ve tercih ettiğiniz yöntemi kullanarak saklayabilirsiniz.

Google Play hizmetlerini kontrol edin

Play Hizmetleri SDK'sına dayanan uygulamalar, Google Play hizmetleri özelliklerine erişmeden önce her zaman cihazda uyumlu bir Google Play hizmetleri APK'sı olup olmadığını kontrol etmelidir. Bunu iki yerde yapmanız önerilir: ana etkinliğin onCreate() yönteminde ve onResume() yönteminde. onCreate() 'deki kontrol, uygulamanın başarılı bir kontrol olmadan kullanılamayacağını garanti eder. onResume() 'deki check-in, kullanıcı çalışan uygulamaya geri düğmesi gibi başka yollarla dönerse, kontrolün hala gerçekleştirilmesini sağlar.

Cihazda Google Play hizmetlerinin uyumlu bir sürümü yoksa, uygulamanız, kullanıcıların Google Play hizmetlerini Play Store'dan indirmesine izin vermek için GoogleApiAvailability.makeGooglePlayServicesAvailable() arayabilir.

Otomatik başlatmayı engelle

Bir FCM kayıt belirteci oluşturulduğunda kitaplık, tanımlayıcıyı ve yapılandırma verilerini Firebase'e yükler. Belirteç otomatik oluşturmayı engellemeyi tercih ederseniz, AndroidManifest.xml şu meta veri değerlerini ekleyerek Analytics toplama ve FCM otomatik başlatmayı devre dışı bırakın (her ikisini de devre dışı bırakmalısınız):

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

FCM otomatik başlatmayı yeniden etkinleştirmek için bir çalışma zamanı çağrısı yapın:

Java

FirebaseMessaging.getInstance().setAutoInitEnabled(true);

Kotlin+KTX

Firebase.messaging.isAutoInitEnabled = true

Analytics koleksiyonunu yeniden etkinleştirmek için FirebaseAnalytics sınıfının setAnalyticsCollectionEnabled() yöntemini çağırın. Örneğin:

setAnalyticsCollectionEnabled(true);

Bu değerler, ayarlandıktan sonra uygulama yeniden başlatmaları boyunca devam eder.

Sonraki adımlar

İstemci uygulaması ayarlandıktan sonra, Bildirim oluşturucu ile aşağı akış mesajları göndermeye hazırsınız. Bu işlevsellik, indirebileceğiniz, çalıştırabileceğiniz ve gözden geçirebileceğiniz hızlı başlangıç ​​örneğinde gösterilmiştir.

Uygulamanıza başka, daha gelişmiş davranışlar eklemek için bir amaç filtresi bildirebilir ve gelen iletilere yanıt vermek için bir etkinlik uygulayabilirsiniz. Ayrıntılar için bir uygulama sunucusundan mesaj gönderme kılavuzlarına bakın:

Bu özelliklerden yararlanmak için bir sunucu uygulamasına ve sunucu protokollerine (HTTP veya XMPP) veya Yönetici SDK'sının bir uygulamasına ihtiyacınız olacağını unutmayın.