Soru Firebase bulut mesajlaşma bildirimi cihaz tarafından alınmadı


Cihazdan Token'i aldığım ve bildirim testini Google Firebase bildirim konsolu aracılığıyla gönderdiğim FireBase Cloud Messaging ile ilgili bir sorun yaşıyorum ancak bildirim hiçbir zaman oturum açılmamış veya android sanal cihaza aktarılmamıştır. FCM için dokümantasyon neredeyse tam olarak aşağıda sahip olduğum kodlar ve baska bildirimle itme bildirimleri almak için başka ne yapmanız gerektiğine bağlı olarak. Dokümantasyonda belirtildiği gibi tüm kurulum bilgilerini (build.gradle eklentileri, google oyun hizmetleri yükleme, vb.) Geçtim ama yine de mesaj oluşturmadım. "I / FA: Etiket Yöneticisi bulunamadı ve bu nedenle kullanılmayacak" bildiren bildirimi ittikten hemen sonra bir kerelik bir hata alıyorum, ancak bu çıktı olan tek veri ve ben Tag ile ilgili bir şey bulamadım Google'da yönetici gereksinimleri ve FCM. Kodla ilgili itme bildirimleri, kayıt defterine veya aygıta almadığım için yanlış olan nedir? Lütfen bana yardımcı olabilecek daha fazla bilgiyi bildirin. Teşekkürler.

NotificationGenie.java

public class NotificationGenie extends FirebaseMessagingService {

private static final String TAG = "Firebase_MSG";

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
    // TODO(developer): Handle FCM messages here.
    // If the application is in the foreground handle both data and notification messages here.
    // Also if you intend on generating your own notifications as a result of a received FCM
    // message, here is where that should be initiated. See sendNotification method below.
    sendNotification(remoteMessage.getNotification().getBody());
    Log.d(TAG, "From: " + remoteMessage.getFrom());
    Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody());
}

private void sendNotification(String messageBody) {
    Intent intent = new Intent(this, PostLoginActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
            PendingIntent.FLAG_ONE_SHOT);

    Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
            .setSmallIcon(R.drawable.tf2spyprofile)
            .setContentTitle("FCM Message")
            .setContentText(messageBody)
            .setAutoCancel(true)
            .setSound(defaultSoundUri)
            .setContentIntent(pendingIntent);

    NotificationManager notificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
}

}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.test.movile_android">

<!-- To auto-complete the email text field in the login form with the user's emails -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.INTERNET" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".LoginActivity"
        android:label="@string/title_activity_login">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".DashBoardActivity"
        android:label="@string/title_activity_dash_board"
        android:theme="@style/AppTheme.NoActionBar">
    </activity>

    <activity
        android:name=".NewOrderActivity"
        android:label="@string/title_activity_dash_board"
        android:theme="@style/AppTheme.NoActionBar">
    </activity>

    <activity
        android:name=".PostLoginActivity"
        android:label="@string/title_activity_dash_board"
        android:theme="@style/AppTheme.NoActionBar">
    </activity>
</application>

<service
    android:name=".NotificationGenie">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>


44
2018-05-20 16:18


Menşei


Bildirinizi gönderebilir misiniz? - Tristan Richard
Gönderi eklenecek şekilde güncellendi. Teşekkürler - xec86
touche ... O kadardı. Teşekkür ederim. - xec86
Onu tamir ettiğine sevindim. Mutlu kodlar! - Tristan Richard
google oyun hizmetleri sanal cihaza yüklenmez. sunucudan bildirim göndermeyi görmek istiyorsanız bu bağlantıyı kontrol edin codingaffairs.blogspot.com/2016/06/... - Hammad Tariq


Cevaplar:


Hizmetinizi uygulama etiketinin dışına yerleştirdiniz. Altını buna değiştirin.

<service
    android:name=".NotificationGenie">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

</application>

47
2018-05-20 17:04



Neden <intent-filter> ayrıntılarının çoğu öğreticide listelenmediğini bilmiyorum - VSB
şimdi gerekli değil çünkü olabilir - Killer


Aynı problemi yaşadım ve hizmetimde doğru olarak verilmiş etkin tanımlanarak çözüldü.

  <service
            android:name=".MyFirebaseMessagingService"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>

31
2017-08-29 00:58



Bu benim için çalıştı. Aslında, uygulamam çalışırken yalnızca bildirim aldığımı tespit ediyordum. Telefonu yeniden başlatırsam, bildirimler olmazdı. Ama ayarladıktan sonra enabled ve exported öznitelikleri, push bildirimleri şimdi iyi gelir. Sağol Hoby! :-) - ban-geoengineering
Bence aynı iki özelliği eklemeniz iyi bir fikir olabilir. MyInstanceIDListenerService hizmet de. - ban-geoengineering
Teşekkürler. Çok fazla şey deniyordum, ama çözüm bu. Neden olduğunu biliyor musun? - JCarlos
Gerekli değil. Firebase Örnek Mesajlaşma Projesi denendi - "etkin" ve "dışa aktarılmış" olan ve olmayan - aşırı. Topbar'da bildirimi görmek için uygulamayı çalıştırmaya ve gizlemeye yardımcı oldu - bkz. Html Tosin'in cevabı. - Zon


"Firebase Konsolundan gönderilen Mesajları almayı da unutmayın, Uygulama arka planda olmalı, gizlenmeyecek." ---Laurent Russier'in yorumuna göre.

Uygulamamı arka planda bırakana kadar Firebase'den hiç mesaj almadım.

Bu sadece emülatör için usb bağlantısında doğrudur, ön planda da bildirim alırsınız


19
2017-09-12 11:24



Uygulamayı açmam ve sonra da ev düğmesine basmalıyım? - JCarlos
Hayır, uygulamanızın konsoldan Bildirim mesajı almak için arka planda olduğundan emin olmanız gerekir. - Html Tosin
Lanet olsun! Benim için buydu! - Felipe Caldas
Kullanarak test edebilirsiniz pushtry.com Firebase konsolundan daha kolay. Özel JSON da gönderebilirsiniz. - Arvind
Teşekkürler @HtmlTosin! App de benim için GCM'den FCM'ye geçiş yaptığım için çalıştı. Ancak, aşağıdaki örnek proje üzerinde test ettiğimde, Uygulama ön planda olsa bile Firebase Console üzerinden Push Notifications gönderebilirim: github.com/ton1n8o/FCMTutorial Tuhaf... - Marie Amida


Aramak super.OnMessageReceived() Overriden yönteminde. Bu benim için çalıştı! En sonunda!


8
2017-09-28 21:49



davamda işe yaramadı - EminenT
bu çalışmıyor - Hamid Reza


Cihaz tarafından alınmayan Firebase bulut mesajlaşma ile aynı sorunu yaşadım.

Benim durumumda Firebase Console Projesi'nde tanımlanan paket adı, Android Projemin Manifest & Gradle'ında tanımlanandan farklıydı.

Sonuç olarak, doğru bir şekilde belirteç aldım, ancak hiç mesaj almadım.

Özetlemek gerekirse, Firebase Console paket adı ve Manifest & Gradle eşleşmesi zorunludur.

Firebase Console'dan gönderilen Mesajları almanın, Uygulamanın arka planda olması, gizlenmeyecek şekilde başlatılmaması gerektiğini de unutmamalısınız.


5
2018-05-24 19:26



"Firebase Konsolundan gönderilen Mesajları almayı da unutmayın, Uygulama arka planda olmalı, gizlenmeyecek." - Laurent Russier


Benzer bir sorunum vardı, ama benim durumumda google-services Eklenti Gradle derlememden (Firebase'i mevcut bir projeye ekliyordum).

Aşağıdakileri rootuma ekledim build.gradle:

classpath 'com.google.gms:google-services:3.1.0'

ve benim için aşağıdaki app-düzeyi build.gradle:

apply plugin: 'com.google.gms.google-services'

Daha sonra indirdim google-services.json Firebase Konsolundan (orijinal olarak mevcut bir Google Cloud projesini içe aktardı) gelen dosyayı kopyalayıp app directory`.


5
2018-06-03 12:10



Bunu firebase yapılandırma adımlarında okuyarak hatırlıyorum ama asla bu satırların nereye gittiğini anlamıyorum. :( - Becario Senior


Aynı problemle karşı karşıya kaldım ama eski GCM'den tezahüratta hâlâ bazı döküntüler vardı. Bildirimin dışında şu izni aldığımda hatayı düzelttim. com.google.android.c2dm.permission.RECEIVE


4
2018-06-09 18:47





Mevcut bir uygulamaya FCM'yi yeni eklediyseniz, onTokenRefresh() aranmayacak. Uygulamayı kaldırarak ve tekrar yükleyerek çalıştıracağım.


3
2018-01-03 12:05





Aşağıdaki Manifest Kodunu Takip Etmelisiniz (Bildirimde Servis olması gerekir)

 <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="soapusingretrofitvolley.firebase">
        <uses-permission android:name="android.permission.INTERNET"/>
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />

                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>

            <service
                android:name=".MyFirebaseMessagingService">
                <intent-filter>
                    <action android:name="com.google.firebase.MESSAGING_EVENT"/>
                </intent-filter>
            </service>

            <service
                android:name=".MyFirebaseInstanceIDService">
                <intent-filter>
                    <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
                </intent-filter>
            </service>
        </application>

    </manifest>

1
2017-09-24 06:17





private void sendNotification(String message) {
    Intent intent = new Intent(this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    int requestCode = 0;
    PendingIntent pendingIntent = PendingIntent.getActivity(this, requestCode, intent, PendingIntent.FLAG_ONE_SHOT);
    Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.URI_COLUMN_INDEX);
    NotificationCompat.Builder noBuilder = new NotificationCompat.Builder(this)
            .setSmallIcon(R.mipmap.ic_launcher)
            .setContentText(message)
            .setColor(getResources().getColor(R.color.colorPrimaryDark))
            .setSmallIcon(R.mipmap.ic_launcher)
            .setContentTitle("FCM Message")
            .setContentText("hello").setLargeIcon(((BitmapDrawable) getResources().getDrawable(R.drawable.dog)).getBitmap())
            .setStyle(new NotificationCompat.BigPictureStyle()
                    .bigPicture(((BitmapDrawable) getResources().getDrawable(R.drawable.dog)).getBitmap()))
            .setAutoCancel(true)
            .setSound(sound)
            .setContentIntent(pendingIntent);

    NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(0, noBuilder.build());

0
2017-11-23 09:59



son geldiğimde bildirimi temizlediğimde lütfen bu sorunun nasıl giderilebileceğine dair yardım edin ve usb hata ayıklama modunu kaldırdığımda telefon bildirim içeriğim görünmüyor - Ashish Shahi