सवाल डिवाइस द्वारा फायरबेस क्लाउड मैसेजिंग अधिसूचना प्राप्त नहीं हुई


मुझे फायरबेस क्लाउड मैसेजिंग के साथ कोई समस्या है जिसमें मुझे डिवाइस से टोकन मिलता है और Google फ़ायरबेस नोटिफिकेशन कंसोल के माध्यम से अधिसूचना परीक्षण भेजता है, हालांकि अधिसूचना कभी भी लॉग नहीं होती है और न ही एंड्रॉइड आभासी डिवाइस पर धक्का दी जाती है। एफसीएम के लिए प्रलेखन लगभग उसी कोड है जो मेरे पास है और फायरबेस के साथ काम करने वाली पुश नोटिफिकेशन प्राप्त करने के लिए आपको और क्या करना होगा। मैं प्रलेखन में निर्दिष्ट सभी सेटअप जानकारी (build.gradle परिवर्धन, Google play सेवाएं स्थापित करना आदि ...) के माध्यम से चला गया है लेकिन अभी भी संदेश उत्पन्न नहीं हो रहा है। मुझे अधिसूचना को धक्का देने के तुरंत बाद एक बार की त्रुटि प्राप्त होती है जिसमें कहा गया है कि "I / FA: टैग प्रबंधक नहीं मिला है और इस प्रकार इसका उपयोग नहीं किया जाएगा" लेकिन यह एकमात्र डेटा है जो आउटपुट है और मुझे टैग से संबंधित कुछ भी नहीं मिला गुगल्स पर प्रबंधक आवश्यकताओं और एफसीएम। कोड के साथ क्या गलत है कि मुझे लॉगबैक या डिवाइस पर मेरी पुश सूचनाएं नहीं मिल रही हैं? कृपया मुझे और जानकारी दें जो सहायक होगी। धन्यवाद।

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


मूल


क्या आप अपना मैनिफेस्ट पोस्ट कर सकते हैं? - Tristan Richard
शामिल करने के लिए पोस्ट अपडेट किया गया। धन्यवाद - xec86
touche ... वह था। धन्यवाद। - xec86
खुशी है कि यह तय है। हैप्पी कोडिंग! - Tristan Richard
वर्चुअल डिवाइस पर Google play सेवाएं स्थापित नहीं हैं। यदि आप देखना चाहते हैं कि सर्वर से अधिसूचना कैसे भेजना है, तो इस लिंक को देखें codingaffairs.blogspot.com/2016/06/... - Hammad Tariq


जवाब:


आपने अपनी सेवा को एप्लिकेशन टैग के बाहर रखा है। इस पर नीचे बदलें।

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

</application>

47
2018-05-20 17:04



मुझे नहीं पता कि क्यों <intent-filter> विवरण कई ट्यूटोरियल में सूचीबद्ध नहीं है - VSB
ऐसा इसलिए हो सकता है क्योंकि अब इसकी आवश्यकता नहीं है - Killer


मुझे एक ही समस्या थी और इसे सक्षम करने के द्वारा हल किया गया है, जो मेरी सेवा में सच में निर्यात किया गया है

  <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



यह मेरे लिए काम किया। असल में, मुझे लगता था कि जब मेरा ऐप चल रहा था तो मुझे केवल सूचनाएं प्राप्त हो रही थीं। अगर मैंने फोन को पुनरारंभ किया, अधिसूचनाएं नहीं आतीं। लेकिन सेट करने के बाद enabled तथा exported विशेषताएं, पुश अधिसूचनाएं ठीक से आती हैं। धन्यवाद, हॉबी! :-) - ban-geoengineering
मुझे लगता है कि यह आपके लिए एक ही दो विशेषताओं को जोड़ना शायद एक अच्छा विचार होगा MyInstanceIDListenerService सेवा भी। - ban-geoengineering
धन्यवाद। मैं बहुत सी चीजों की कोशिश कर रहा था, लेकिन यह समाधान है। क्या आप जानते हैं कि ऐसा क्यों होता है? - JCarlos
आवश्यक नहीं। फायरबेस नमूना संदेश प्रोजेक्ट का प्रयास किया - "सक्षम" और "निर्यात" के बिना और इसके बिना - यह अत्यधिक है। टॉपबार पर अधिसूचना देखने के लिए ऐप चलाने और छिपाने में मदद मिली - एचटीएमएल टोसीन का जवाब देखें। - Zon


"आपको यह भी ध्यान में रखना चाहिए कि फायरबेस कंसोल से भेजे गए संदेश प्राप्त करने के लिए, ऐप पृष्ठभूमि में होना चाहिए, न तो छुपाया जाना चाहिए।" --- @ लूरेंट रसेल की टिप्पणी के अनुसार।

जब तक मैं अपने ऐप को पृष्ठभूमि में नहीं डालता, तब तक मुझे फ़ायरबेस से कोई संदेश नहीं मिला।

यह केवल एम्यूलेटर के लिए यूएसबी कनेक्शन पर सच है, आपको अग्रभूमि में अधिसूचना भी मिलती है


19
2017-09-12 11:24



मुझे ऐप खोलना है और होम बटन दबाएं? - JCarlos
नहीं, आपको यह सुनिश्चित करना होगा कि कंसोल से अधिसूचना संदेश प्राप्त करने के लिए आपका ऐप पृष्ठभूमि पर है - Html Tosin
अरे नहीं! यह मेरे लिए था! - Felipe Caldas
आप का उपयोग कर परीक्षण कर सकते हैं pushtry.com फायरबेस कंसोल से आसान है। आप कस्टम JSON भी भेज सकते हैं। - Arvind
धन्यवाद @HtmlTosin! यह ऐप पर भी मेरे लिए काम करता है कि मैं जीसीएम से एफसीएम में माइग्रेट कर रहा हूं। हालांकि, जब मैंने निम्नलिखित उदाहरण प्रोजेक्ट पर परीक्षण किया तो मैं फायरबेस कंसोल के माध्यम से पुश अधिसूचनाएं भेज सकता था, भले ही ऐप अग्रभूमि में हो: github.com/ton1n8o/FCMTutorial अजीब... - Marie Amida


कॉल super.OnMessageReceived() ओवर्रिडेन विधि में। यह मेरे लिए काम किया! आखिरकार!


8
2017-09-28 21:49



मेरे मामले में काम नहीं किया - EminenT
यह काम नहीं कर रहा है - Hamid Reza


मुझे डिवाइस द्वारा प्राप्त फायरबेस क्लाउड मैसेजिंग के एक ही मुद्दे का सामना करना पड़ा।

मेरे मामले में फायरबेस कंसोल प्रोजेक्ट पर परिभाषित पैकेज नाम मेरे एंड्रॉइड प्रोजेक्ट के मैनिफेस्ट एंड ग्रैडल पर परिभाषित एक से अलग था।

नतीजतन मुझे टोकन सही ढंग से प्राप्त हुआ लेकिन कोई संदेश बिल्कुल नहीं मिला।

समेकित करने के लिए, यह अनिवार्य है कि फायरबेस कंसोल पैकेज का नाम और मैनिफेस्ट और ग्रैडल मैच।

आपको यह भी ध्यान में रखना चाहिए कि फायरबेस कंसोल से भेजे गए संदेश प्राप्त करने के लिए, ऐप पृष्ठभूमि में होना चाहिए, न तो छुपाया जाना चाहिए।


5
2018-05-24 19:26



"आपको यह भी ध्यान में रखना चाहिए कि फायरबेस कंसोल से भेजे गए संदेश प्राप्त करने के लिए, ऐप पृष्ठभूमि में होना चाहिए, न तो छुपाया जाना चाहिए।" - Laurent Russier


मुझे एक ही समस्या थी, लेकिन मेरे मामले में मैं लापता था google-services लगाना मेरे ग्रैडल बिल्ड से (मैं एक मौजूदा परियोजना में फायरबेस जोड़ रहा था)।

मैंने अपनी जड़ में निम्नलिखित जोड़ा build.gradle:

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

और मेरे अंत के लिए निम्नलिखित appस्तर build.gradle:

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

मुझे तब डाउनलोड करना पड़ा google-services.json फायरबेस कंसोल से फ़ाइल (मूल रूप से एक मौजूदा Google क्लाउड प्रोजेक्ट आयात किया गया है) और इसे मेरे प्रति कॉपी करें app directory`।


5
2018-06-03 12:10



मैं इसे फायरबेस कॉन्फ़िगर चरणों में पढ़ने के लिए याद करता हूं लेकिन कभी नहीं समझता कि उन पंक्तियों को कहां जाना है। :( - Becario Senior


मुझे एक ही समस्या का सामना करना पड़ा लेकिन पुराने जीसीएम से मेरे मैनिफेस्ट में अभी भी कुछ मलबे थे। जब मैंने अपने मैनिफेस्ट से निम्नलिखित अनुमति ली तो यह त्रुटि तय कर दी। com.google.android.c2dm.permission.RECEIVE


4
2018-06-09 18:47





यदि आपने अभी तक मौजूदा ऐप में एफसीएम जोड़ा है, onTokenRefresh() नहीं बुलाया जाएगा मुझे ऐप को अनइंस्टॉल करके इसे फिर से इंस्टॉल करने के लिए चला गया।


3
2018-01-03 12:05





आपको नीचे दिशानिर्देश कोड का पालन करना होगा (प्रकट होना चाहिए सेवा)

 <?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