android firebase reg id已收到,但通知未显示在手机屏幕

时间:2017-08-22 11:08:18

标签: android firebase firebase-cloud-messaging

我会尝试在手机托盘上显示个人通知,但我不能致富,所以请帮助。

我遇到FireBase Cloud Messaging的问题,我从设备获取令牌并通过Google Firebase通知控制台发送通知测试,但是,通知永远不会记录,也不会推送到Android虚拟设备。 FCM的文档几乎就是我在下面的代码,除了使用firebase进行推送通知之外你还需要做什么。我已经完成了文档中指定的所有设置信息(build.gradle添加,安装google play服务等等),但仍然没有生成消息。我没有收到对logcat或设备的推送通知的代码有什么问题?请让我知道任何有用的进一步信息。感谢。

mRegistrationBroadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(Config.REGISTRATION_COMPLETE)) {
                                    FirebaseMessaging.getInstance().subscribeToTopic(Config.TOPIC_GLOBAL);

                displayFirebaseRegId();

            } else if (intent.getAction().equals(Config.PUSH_NOTIFICATION)) 
              {
                String message = intent.getStringExtra("message");

                Toast.makeText(getApplicationContext(), "Push notification: " + message, Toast.LENGTH_LONG).show();

                txtMessage.setText(message);
            }
        }
    };

    displayFirebaseRegId();
}

    private void displayFirebaseRegId() {
    SharedPreferences pref = getApplicationContext().getSharedPreferences(Config.SHARED_PREF, 0);
    String regId = pref.getString("regId", null);

    Log.e(TAG, "Firebase reg id: " + regId);

    if (!TextUtils.isEmpty(regId))
        txtRegId.setText("Firebase Reg Id: " + regId);
    else
        txtRegId.setText("Firebase Reg Id is not received yet!");
 }

@Override
protected void onResume() {
    super.onResume();
   LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver,
            new IntentFilter(Config.REGISTRATION_COMPLETE));
   LocalBroadcastManager.getInstance(this).registerReceiver(mRegistrationBroadcastReceiver,
            new IntentFilter(Config.PUSH_NOTIFICATION));

    NotificationUtils.clearNotifications(getApplicationContext());
}

@Override
protected void onPause() {
    LocalBroadcastManager.getInstance(this).unregisterReceiver(mRegistrationBroadcastReceiver);
    super.onPause();
}

我将添加基本消息的lib:

compile 'com.google.firebase:firebase-messaging:11.0.4'

1 个答案:

答案 0 :(得分:1)

您无需在BroadcastReceiver内订阅,只需在FirebaseInstanceIdService中的onTokenRefresh方法内进行订阅

您无需在BroadcastReceiver中获取推送通知,您必须在FirebaseMessagingService中的onMessageReceive内进行此操作

FCM与模拟器非常不可靠,只需使用真实设备,我一直在努力解决这个问题,在某些情况下,我甚至会在几天后为其他项目打开模拟器时收到通知,用真实手机测试一下