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>
<!-- 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" />
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.