android - डिवाइस द्वारा फायरबेस क्लाउड मैसेजिंग नोटिफिकेशन प्राप्त नहीं हुआ




firebase google-cloud-messaging (12)

मेरे पास FireBase Cloud Messaging के साथ एक समस्या आ रही है जिसमें मैं डिवाइस से टोकन प्राप्त करता हूं और Google Firebase सूचना कंसोल के माध्यम से अधिसूचना परीक्षण भेजता हूं, हालांकि, अधिसूचना को कभी लॉग नहीं किया जाता है और न ही एंड्रॉइड वर्चुअल डिवाइस पर धकेल दिया जाता है। FCM के लिए प्रलेखन लगभग वही कोड है जो मेरे पास है और थोड़ा और इस तरीके से है कि आपको फायरबेस के साथ काम करने वाले पुश नोटिफिकेशन प्राप्त करने के लिए और क्या करना होगा। मैं प्रलेखन में निर्दिष्ट के रूप में सभी सेटअप जानकारी (build.gradle परिवर्धन, इंस्टॉलिंग गूगल प्ले सेवाओं, आदि ...) के माध्यम से चला गया है, लेकिन अभी भी संदेश उत्पन्न नहीं है। मुझे सूचना को धक्का देने के तुरंत बाद एक बार की त्रुटि मिलती है, जिसमें कहा गया है कि "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>


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


आपको नीचे मैनिफ़ेस्ट कोड का पालन करने की आवश्यकता है (प्रकट में सेवा होनी चाहिए)

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

जब आप अपने डिवाइस टोकन को कॉपी कर रहे हैं, तो यह स्पेस की नकल कर सकता है, डबल चेक आपने सही टोकन की प्रतिलिपि बनाई है


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


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

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

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

और मेरे app के अंत तक का build.gradle :

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

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


मुझे यह समस्या थी, मैंने अपना कोड चेक किया। मैंने यहां बताई गई हर चीज को ठीक करने की कोशिश की। अंत में समस्या इतनी मूर्ख थी। मेरे उपकरण का Sync बंद था। यही कारण था कि मुझे उम्मीद के मुताबिक सूचनाएं नहीं मिल रही थीं।


मेरे मामले में, मैंने देखा कि मर्जडाइनिफेस्ट रिसीवर गायब था। इसलिए मुझे शामिल करना था:

 <receiver
            android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver"
            android:exported="true"
            android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            </intent-filter>
 </receiver>

मैं इस पूरी पोस्ट और अन्य लोगों के साथ-साथ ट्यूटोरियल वीडियो के माध्यम से काम कर रहा हूं, बिना संदेश प्राप्त किए मेरी समस्या को हल करने में सक्षम होने के बावजूद पंजीकरण टोकन ने काम किया।

तब तक मैं केवल एमुलेटर पर ऐप का परीक्षण कर रहा था। एक भौतिक फोन पर इसे आजमाने के बाद यह परियोजना के लिए बिना किसी पूर्व परिवर्तन के तुरंत काम कर गया।


शायद यह कनेक्शन से है मैंने ईथरनेट से कनेक्शन को वायरलेस में बदल दिया यह बिना कुछ और काम किए


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


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());

    <activity android:name=".activity.MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <!-- Firebase Notifications -->
    <service android:name=".service.MyFirebaseMessagingService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>

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






firebase-cloud-messaging