Google 致力于为黑人社区推动种族平等。查看具体举措

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

Senin Firebase Bulut Mesajlaşma Android istemci uygulaması yazmak için kullanmak FirebaseMessaging API ve Android Studio 1.4 veya daha yüksek Gradle ile. Bu sayfadaki talimatlar için adımları tamamladıktan varsayalım Android projeye Firebase ekleyerek .

FCM istemcileri, Google Play Store uygulamasının da yüklü olduğu Android 4.1 veya sonraki sürümleri çalıştıran cihazlara veya Google API'leri ile Android 4.1 ç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.

Sen başlamadan önce

  • Yükleme veya güncelleme Android Studio en son sürüme.

  • Projenizin şu gereksinimleri karşıladığından emin olun:

    • API seviyesi 16'yı (Jelly Bean) veya üzerini hedefler
    • Gradle 4.1 veya üstünü kullanır
    • Kullanımları Jetpack (AndroidX) bu sürüm gereksinimlerini karşılayan içerir:
      • com.android.tools.build:gradle v3.2.1 veya sonrası
      • compileSdkVersion 28 veya sonrası
  • Fiziksel bir cihaz kurun veya bir kullanma emülatör uygulamanızı çalıştırın.
    O Not Google Play hizmetlerinde bir bağımlılık ile Firebase SDK'larını yüklü Google Play hizmetlerini olması cihazınızı veya emülatörü gerektirir.

  • Firebase oturum açın Google hesabınızı kullanarak.

Önceden bir Android projesi var ve sadece Firebase ürünü denemek istemiyorsanız, bizim birini indirebilirsiniz hızlı başlangıç örneklerinin .

Bir Firebase projesi oluşturun

Firebase'i Android uygulamanıza eklemeden önce Android uygulamanıza bağlanmak için bir Firebase projesi oluşturmanız gerekir. Ziyaret Firebase Projeleri Anlayın Firebase projeleri hakkında daha fazla bilgi edinmek.

Uygulamanızı Firebase'e kaydedin

Firebase'i Android uygulamanızda kullanmak için uygulamanızı Firebase projenize kaydetmeniz gerekir. Uygulamanızı kaydetmeye genellikle uygulamanızı projenize "eklemek" denir.

  1. Git Firebase konsoluna .

  2. Proje genel bakış Sayfanın ortasında, Android simgesine (tıklayın ) veya kurulum iş akışını başlatmak için uygulamayı ekleyin.

  3. Android paketi adı alanına uygulamanızın paket adını girin.

  4. (İsteğe bağlı) diğer uygulama bilgileri girin: Uygulama adı ve hata ayıklama imzalama sertifikası SHA-1.

  5. Kayıt uygulamasını tıklayın.

Firebase yapılandırma dosyası ekleyin

  1. Firebase Android yapılandırma dosyasını uygulamanıza ekleyin:

    1. Senin Firebase Android yapılandırma dosyasını edinmek için İndirme google-services.json tıklayın ( google-services.json ).

    2. Yapılandırma dosyanızı uygulamanızın modül (uygulama düzeyi) dizinine taşıyın.

  2. Uygulamanızda Firebase ürünlerini etkinleştirmek için eklemek eklentisi google-hizmetlerini sizin Gradle dosyalara.

    1. Kök düzeyinde (proje düzeyi) Gradle dosyası (In build.gradle ), Google Hizmetleri Gradle eklentisi içerecek şekilde kurallar ekleyin. Google'ın Maven deposuna da sahip olduğunuzu kontrol edin.

      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. Senin modülü (uygulama düzeyinde) Gradle dosyası (genellikle de app/build.gradle ), Google Hizmetleri Gradle eklentisi uygulanır:

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

Uygulamanıza Firebase SDK'ları ekleyin

  1. Kullanılması Firebase Android Bom , senin modülü (uygulama düzeyinde) Gradle dosyası (genellikle Firebase Bulut Mesajlaşma Android kütüphanesi için bağımlılık beyan app/build.gradle ).

    Firebase Cloud Messaging ile Optimum deneyim için, tavsiye Google Analytics sağlayan sizin Firebase projesinde ve uygulamanızda Google Analytics'in Firebase SDK ekledi.

    Java

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

    Kullanarak Firebase Android Bom , uygulamanızın her zaman Firebase Android kütüphanelerin uyumlu versiyonlarını kullanacak.

    (Alternatif) Bom kullanmadan Firebase kütüphane bağımlılıklarını beyan

    Firebase Malzeme Listesini kullanmamayı seçerseniz, her bir Firebase kitaplık sürümünü bağımlılık satırında belirtmeniz gerekir.

    Eğer uygulamanızda birden Firebase kitaplıkları kullanırsanız, biz çok tüm versiyonlar uyumlu olmasını sağlar kütüphane sürümlerini yönetmek için Bom kullanmanızı öneririz olduğunu unutmayın.

    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.3.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'
    }
    

    Kullanarak Firebase Android Bom , uygulamanızın her zaman Firebase Android kütüphanelerin uyumlu versiyonlarını kullanacak.

    (Alternatif) Bom kullanmadan Firebase kütüphane bağımlılıklarını beyan

    Firebase Malzeme Listesini kullanmamayı seçerseniz, her bir Firebase kitaplık sürümünü bağımlılık satırında belirtmeniz gerekir.

    Eğer uygulamanızda birden Firebase kitaplıkları kullanırsanız, biz çok tüm versiyonlar uyumlu olmasını sağlar kütüphane sürümlerini yönetmek için Bom kullanmanızı öneririz olduğunu unutmayın.

    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. Tüm bağımlılıkların gerekli sürümlere sahip olduğundan emin olmak için uygulamanızı senkronize edin.

Uygulama bildiriminizi düzenleyin

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

  • Uzanır Bir hizmet FirebaseMessagingService . 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" />
  • Android 8.0 (API seviyesi 26) ve daha yüksek (İsteğe bağlı), bildirim kanalları desteklenen ve tavsiye edilir. FCM, temel ayarlarla varsayılan bir bildirim kanalı sağlar. Eğer tercih ederseniz oluşturmak ve kendi varsayılan kanalını kullanmak, set default_notification_channel_id gösterildiği gibi bildirim kanal nesnenin kimliğine; FCM, gelen mesajlar açıkça bir bildirim kanalı ayarlamadığında bu değeri kullanır. Daha fazla bilgi için bkz bildirim kanalları 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. Eğer tek Cihazları hedeflemek veya cihaz grupları oluşturmak istiyorsanız, uzatarak bu sembolünüzü gerekir FirebaseMessagingService ve ağır basan onNewToken .

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üncelleştirilmiş 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 kodunu almasına gerektiğinde, çağrı FirebaseMessaging.getInstance().getToken() :

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 yeni belirteç oluşturulur zaman geri arama patlar.

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. Ana etkinliğin içinde: iki yerde bunu yapmak için tavsiye edilir onCreate() yöntemiyle, ve bunun içinde onResume() yöntemiyle. Check onCreate() uygulaması başarılı bir çeki olmayan kullanılamaz sağlar. Check onResume() geri düğmesi aracılığıyla diğer bazı yollarla çalışan uygulama kullanıcı döner, onay yine gerçekleştirilmesi halinde temin eder.

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

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. Eğer belirteç autogeneration, devre dışı Analytics toplama ve FCM oto başlatma önlemek tercih ederseniz sizin için bu meta veri değerleri ekleyerek (her iki devre dışı bırakmalısınız) 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 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

To call Analytics koleksiyonunu yeniden etkinleştirmek setAnalyticsCollectionEnabled() metodunu FirebaseAnalytics sınıfına. Ö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, birlikte aşağı mesajlar göndermeye başlamak için hazır Bildirimler besteci . Bu işlevsellik gösterilmiştir hızlı başlangıç numunesi sen, çalışma ve inceleme indirebilirsiniz.

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, unutmayın, bir gerekir sunucu uygulaması ve sunucu procotols (HTTP veya XMPP) veya bir uygulamasını Yönetici SDK .