Android 6 A Cant Send Push Message On Firebase

Android 6.0’da Firebase ile Push Mesajları Gönderme Sorunu ve Çözümü

Android 6.0 (Marshmallow) ve sonraki sürümlerinde, Firebase ile push mesajları gönderirken sorunlar yaşanabilir. Bu sorun, Google’ın Android 6.0’da uygulama izinleri için yeni bir model olan “Uygulama İzinleri”ni tanıtmış olmasından kaynaklanmaktadır.

Sorunun Nedeni

Android 6.0’dan önce, uygulamalar push mesajları almak için otomatik olarak izin alırdı. Ancak Android 6.0’da, uygulamaların push mesajları almak için açıkça izin alması gerekir. Bu izin, kullanıcı tarafından uygulama ilk çalıştırıldığında verilir.

Uygulama, kullanıcıdan push mesajları alma izni almazsa, Firebase Cloud Messaging (FCM) hizmeti push mesajlarını cihaza teslim edemez. Bu da push mesajlarının gönderilmemesine neden olur.

Çözüm

Android 6.0 ve sonraki sürümlerinde Firebase ile push mesajları göndermek için aşağıdaki adımları izleyin:

  1. Uygulama İzinlerini İsteyin: Uygulamanızın AndroidManifest.xml dosyasına aşağıdaki izinleri ekleyin:

xml
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

  1. Kullanıcıdan İzin İsteyin: Uygulamanızın ilk çalıştırıldığında, kullanıcıdan push mesajları alma izni isteyin. Bunu, ActivityCompat.requestPermissions() yöntemini kullanarak yapabilirsiniz. Örneğin:

java
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECEIVE_BOOT_COMPLETED}, REQUEST_CODE);

  1. İzin Sonucunu İşleyin: Kullanıcı izin isteğinize yanıt verdiğinde, sonucu onRequestPermissionsResult() yönteminde işleyin. Kullanıcı izin verirse, FCM hizmetini başlatın. Örneğin:

java
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_CODE && grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
startFcmService();
}
}

  1. FCM Hizmetini Başlatın: Kullanıcı izin verdiğinde, FCM hizmetini başlatın. Bunu, FirebaseMessaging.getInstance().subscribeToTopic("topic_name") yöntemini kullanarak yapabilirsiniz. Örneğin:

java
private void startFcmService() {
FirebaseMessaging.getInstance().subscribeToTopic("topic_name");
}

Faydalı Kaynaklar

Sonuç

Android 6.0 ve sonraki sürümlerinde Firebase ile push mesajları göndermek için, uygulamanızın push mesajları alma izni alması gerekir. Bu izin, kullanıcı tarafından uygulama ilk çalıştırıldığında verilir. Uygulamanız izin istemezse, FCM hizmeti push mesajlarını cihaza teslim edemez. Bu sorunu çözmek için, bu makalede açıklanan adımları izleyin.


Yayımlandı