【问题标题】:I am not getting FCM message probably FirebaseMessagingService is not running我没有收到 FCM 消息,可能 FirebaseMessagingService 没有运行
【发布时间】:2018-12-08 09:20:01
【问题描述】:

我正在使用 FCM 进行通知。由于某些问题,我在使用 FCM 云控制台发送时没有收到通知。

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

这是我的两门课。

    public class MyInstanceIDService extends FirebaseInstanceIdService {

    private static final String TAG = "MyInstanceIDService";

    @Override
    public void onTokenRefresh() {
       String refreshedToken = FirebaseInstanceId.getInstance().getToken();
        System.out.println("Refreshed token: " + refreshedToken);
        // Util.getInstance().saveDeviceID(UniversalImageLoaderConfigurationApplication.getContext(), refreshedToken);
        // sendRegistrationToServer(refreshedToken);
    }

    }

    public class MyMessagingService extends FirebaseMessagingService {

    private static final String TAG = "MyMessagingService";

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        //Displaying data in log
        //It is optional
        // if(LOG)
        Log.d(TAG, "From: " + remoteMessage.getFrom());
//        Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody());

        Map<String, String> data = remoteMessage.getData();
        int id = Integer.parseInt(data.get("id"));
        if (id == (Constants.NOTI_NOTIFCATION)) {
            String title = data.get("title");
            String body = data.get("body");
            sendNotification(id, title, body, "");
        } else {
            sendNotification(1, "", "", "");
        }

    }

     }

我注意到 public void onTokenRefresh() 从未调用过。所以我用了它

String refreshedToken = FirebaseInstanceId.getInstance().getToken();

在我的 MainActivity 中,我得到了 tokenID。可能 FirebaseInstanceIdService 和 FirebaseMessagingService 没有运行。下面是我的毕业典礼

  implementation 'com.google.firebase:firebase-messaging:17.0.0'
implementation 'com.google.firebase:firebase-core:16.0.1'

我也用过

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

这是我的根级 gradle

buildscript {
repositories {
//    google()
    maven { url "https://maven.google.com" }
    jcenter()
   // mavenCentral()
    google()
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.1.3'
    classpath 'com.google.gms:google-services:4.0.1' // google-services     plugin

    }

}

allprojects {
repositories {
   // google()
    mavenLocal()
    maven { url "https://maven.google.com" }
    jcenter()
    mavenCentral()
    google()
}
}

【问题讨论】:

  • onTokenRefresh() 仅在首次安装或重新安装应用时调用一次。卸载应用程序并在 onTokenRefresh() 中输入日志并再次安装并检查 logcat。
  • @JineshMalavia 是的。但它从未调用过。 FirebaseInstanceIdService 和 FirebaseMessagingService 出现问题。我认为服务没有运行。我们可以跟踪它正在运行吗?
  • 正如你提到的,你没有收到通知服务没有运行。

标签: android firebase firebase-cloud-messaging


【解决方案1】:

您的服务声明的操作是相反的。改为:

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

请参阅example in the documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 2021-05-14
    • 2011-09-07
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多