FCM istemcileri için Android 4.4 veya sonraki sürümleri çalıştıran cihazlar gerekir. Google Play Store uygulaması yüklü olan daha yüksek bir sürümün veya bir emülatörün Google API'leriyle Android 4.4 çalıştıran. Android uygulamalarınızı Google Play Store'a gidin.
SDK'yı ayarlama
Bu bölümde, daha önce etkinleştirdiyseniz tamamlamış olabileceğiniz görevler ele alınmaktadır diğer Firebase özelliklerini kullanabilirsiniz. Henüz yapmadıysanız Firebase'i Android projenize ekleyin.
Uygulama manifestinizi düzenleyin
Uygulamanızın manifest dosyasına şunu ekleyin:
FirebaseMessagingService
kapsamını genişleten bir hizmet. Bu, şu durumlarda gereklidir: Android'deki uygulamalarda bildirim almanın ötesinde ileti görebilirsiniz. Ön plandaki uygulamalarda bildirim almak için veri yükü, yukarı akış mesajları göndermek vb. için bu geliştirmenizi sağlar.- (İsteğe bağlı) Uygulama bileşeninde, varsayılan bildirimi ayarlamak için kullanılan meta veri öğeleri hem simge hem de renk. Android, gelen her gelen gönderide bu değerleri kullanır. e-postalara özel bir simge veya renk atanmaz.
- (İsteğe bağlı) Android 8.0 (API düzeyi 26) ve sonraki sürümlerden
bildirim kanallarının desteklenmesi ve kullanılması önerilir. FCM, bir varsayılan sağlar
temel ayarlara sahip bir bildirim kanalını kullanın. Dilerseniz
kendi varsayılan kanalınızı oluşturun ve kullanın
default_notification_channel_id
öğesini bildirim kanalı nesnenizin kimliğine ayarlayın gösterildiği gibi; FCM bunu kullanacak değeri açık bir şekilde bir bildirim ayarlanmadığında, gelen mesajlarda değeri yardımcı olur. Daha fazla bilgi edinmek için bkz. Bildirim kanallarını yönetin.
<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" />
<meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="@string/default_notification_channel_id" />
Android 13 ve sonraki sürümlerde çalışma zamanı bildirim izni isteme
Android 13, bildirimlerin gösterilmesi için çalışma zamanında istenen yeni bir izni kullanıma sunuyor. Bu Android 13 veya sonraki sürümlerde çalışan ve FCM kullanan tüm uygulamaları etkiler bildirimleri etkinleştirebilirsiniz.
FCM SDK'sı (23.0.6 veya sonraki sürümler) varsayılan olarak şunları içerir:
POST_NOTIFICATIONS
izin belgesinde tanımlamamız gerekir.
Ancak uygulamanızın,
android.permission.POST_NOTIFICATIONS
sabit değer ile iznini devre dışı bırakabilirsiniz.
Uygulamanızın bildirim göstermesine izin verilen tarihe kadar
kullanıcı bu izni verdi.
Yeni çalışma zamanında istenen izni istemek için:
Kotlin+KTX
// Declare the launcher at the top of your Activity/Fragment: private val requestPermissionLauncher = registerForActivityResult( ActivityResultContracts.RequestPermission(), ) { isGranted: Boolean -> if (isGranted) { // FCM SDK (and your app) can post notifications. } else { // TODO: Inform user that that your app will not show notifications. } } private fun askNotificationPermission() { // This is only necessary for API level >= 33 (TIRAMISU) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED ) { // FCM SDK (and your app) can post notifications. } else if (shouldShowRequestPermissionRationale(Manifest.permission.POST_NOTIFICATIONS)) { // TODO: display an educational UI explaining to the user the features that will be enabled // by them granting the POST_NOTIFICATION permission. This UI should provide the user // "OK" and "No thanks" buttons. If the user selects "OK," directly request the permission. // If the user selects "No thanks," allow the user to continue without notifications. } else { // Directly ask for the permission requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS) } } }
Java
// Declare the launcher at the top of your Activity/Fragment: private final ActivityResultLauncher<String> requestPermissionLauncher = registerForActivityResult(new ActivityResultContracts.RequestPermission(), isGranted -> { if (isGranted) { // FCM SDK (and your app) can post notifications. } else { // TODO: Inform user that that your app will not show notifications. } }); private void askNotificationPermission() { // This is only necessary for API level >= 33 (TIRAMISU) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED) { // FCM SDK (and your app) can post notifications. } else if (shouldShowRequestPermissionRationale(Manifest.permission.POST_NOTIFICATIONS)) { // TODO: display an educational UI explaining to the user the features that will be enabled // by them granting the POST_NOTIFICATION permission. This UI should provide the user // "OK" and "No thanks" buttons. If the user selects "OK," directly request the permission. // If the user selects "No thanks," allow the user to continue without notifications. } else { // Directly ask for the permission requestPermissionLauncher.launch(Manifest.permission.POST_NOTIFICATIONS); } } }
Genel olarak, kullanıcıya uygulama için izin vermeleri durumunda etkinleştirilecek bildirim yayınlamanızı sağlar. Bu kullanıcı arayüzü, kullanıcıya kabul etmek veya reddetmek (ör. Tamam ve Hayır, teşekkürler) düğmelerini kullanın. Kullanıcı Tamam'ı seçerse doğrudan izin isteyin. Kullanıcı Hayır, teşekkürler'i seçerse izin ver bildirim olmadan devam etmesini sağlar.
Bildirim çalışma zamanında istenen izin başlıklı makaleyi inceleyin.
uygulamanızın
Kullanıcının POST_NOTIFICATIONS
izni.
Android 12L (API düzeyi 32) veya önceki sürümleri hedefleyen uygulamalar için bildirim izinleri
Android, uygulamanız ilk kez otomatik olarak kullanıcıdan izin ister uygulama ön planda olduğu sürece bir bildirim kanalı oluşturur. Ancak, kanal oluşturma sürecinin zamanlamasıyla ilgili dikkat edilmesi gereken önemli noktalar ve izin istekleri:
- Uygulamanız çalışırken ilk bildirim kanalını oluşturursa arka plan (FCM SDK'sı bir FCM bildirim) Android bildirimin gösterilmesine izin vermez görüntülenene kadar kullanıcıdan bildirim izni istemeyen tekrar açılır. Bu durum, alınan tüm bildirimlerin kullanıcı iznin kaybedildiğini gösterir.
- Uygulamanızı Android 13 ve sonraki sürümleri hedefleyecek şekilde güncellemeniz önerilir: İzin istemek için platformun API'lerinden yararlanmalıdır. Bu durumda Herhangi bir bildirim göndermeden önce uygulamanızın bildirim kanalları oluşturması gerekir. bildirim izninin tetiklenmesi için uygulamaya bildirim gönderme iletişim kutusunu kullanın ve hiçbir bildirimin kaybolmadığından emin olun. Görüntüleyin bildirim izinleri ile ilgili en iyi uygulamalar konulu videomuzu izleyin.
İsteğe bağlı: POST_NOTIFICATIONS
iznini kaldırın
FCM SDK'sı varsayılan olarak POST_NOTIFICATIONS
iznini içerir.
Uygulamanız bildirim mesajları kullanmıyorsa (FCM üzerinden olsun)
başka bir SDK üzerinden ya da doğrudan uygulamanız tarafından yayınlanan bildirimler)
iznin uygulamanızda bulunmuyorsa şunu kullanarak kaldırabilirsiniz:
manifest birleştirme
remove
işaretçi. Bu iznin kaldırılması,
yalnızca FCM bildirimleri değil, tüm bildirimler hakkında bilgi edinebilirsiniz. Şunları ekleyin:
uygulamanızın manifest dosyası:
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" tools:node="remove"/>
Cihaz kayıt jetonuna erişme
Uygulamanız ilk kez başlatıldığında FCM SDK'sı bir kayıt oluşturur
jeton olacaktır. Tek bir cihazı veya
oluşturmak istiyorsanız, erişim kapsamını genişleterek bu jetona erişmeniz
FirebaseMessagingService
ve onNewToken
geçersiz kılınıyor.
Bu bölümde, jetonun nasıl alınacağı ve değişikliklerin nasıl izleneceği açıklanmaktadır jetona aktarılmalıdır. Jeton, ilk gösterimden sonra döndürülebileceği için startup'ı kullanıyorsanız en son güncellenmiş kaydı almanız jeton.
Kayıt jetonu aşağıdaki durumlarda değişebilir:
- Uygulama yeni bir cihaza geri yüklenir.
- Kullanıcı uygulamayı kaldırır/yeniden yükler
- Kullanıcı uygulama verilerini siler.
Geçerli kayıt jetonunu al
Geçerli jetonu almanız gerektiğinde
FirebaseMessaging.getInstance().getToken()
:
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() })
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(); } });
Jeton oluşturmayı izleme
Yeni jeton oluşturulduğunda onNewToken
geri çağırması tetiklenir.
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) }
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(@NonNull 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); }
Jetonu aldıktan sonra uygulama sunucunuza ve mağazanıza gönderebilirsiniz tercih ettiğiniz yöntemi kullanarak yapabilirsiniz.
Google Play Hizmetleri'ni kontrol etme
Play Hizmetleri SDK'sını kullanan uygulamalar
cihazda uyumlu bir Google Play hizmetleri APK'sı olup olmadığını her zaman kontrol etmelidir.
Google Play Hizmetleri özelliklerine erişerek. Bu işlemi
iki yer: ana etkinliğin onCreate()
yönteminde ve
onResume()
yöntemini çağırın. onCreate()
check-in, uygulamanın
özelliği başarılı bir kontrol olmadan kullanılamaz. onResume()
kontrolü,
Kullanıcı, çalışan uygulamaya
geri düğmesine basarsanız kontrol işlemi devam eder.
Cihazda Google Play Hizmetleri'nin uyumlu bir sürümü yoksa uygulamanız
GoogleApiAvailability.makeGooglePlayServicesAvailable()
kullanıcıların Play Store'dan Google Play hizmetlerini indirmelerine olanak tanımak için
Otomatik başlatmayı engelle
FCM kayıt jetonu oluşturulduğunda kitaplık,
tanımlayıcı ve yapılandırma verilerini
Firebase'e gidin. Jetonların otomatik olarak oluşturulmasını önlemek isterseniz Analytics toplama özelliğini devre dışı bırakın ve
Bu meta veri değerlerini
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şlatma özelliğini yeniden etkinleştirmek için bir çalışma zamanı çağrısı yapın:
Kotlin+KTX
Firebase.messaging.isAutoInitEnabled = true
Java
FirebaseMessaging.getInstance().setAutoInitEnabled(true);
Analytics veri toplama özelliğini yeniden etkinleştirmek için
setAnalyticsCollectionEnabled()
yöntemini FirebaseAnalytics
sınıfında bulabilirsiniz. Örneğin:
setAnalyticsCollectionEnabled(true);
Bu değerler, ayarlandıktan sonra uygulamanın yeniden başlatılmasında da değişmeden kalır.
Sonraki adımlar
İstemci uygulaması kurulduktan sonra kullanıma hazır hale gelirsiniz. Bildirim oluşturucu. Bu işlev hızlı başlangıç örneğinde gösterildiği gibi indirebileceğiniz, çalıştırabileceğiniz ve inceleyebileceğiniz
Uygulamanıza başka, daha gelişmiş davranışlar eklemek için gelen e-postalara yanıt vermek için intent filtresi tanımlayabilir ve mesaj. Ayrıntılı bilgi için uygulama sunucusundan mesaj gönderme ile ilgili kılavuzlara göz atın:
Unutmamanız gereken noktalar bundan yararlanmak için özellikleri kullanabilmeniz için bir sunucu uygulaması ve sunucu protokolleri (HTTP veya XMPP) ya da Admin SDK'nın uygulanması.