使用Firebase时,Android不显示推送通知

时间:2018-01-24 20:51:43

标签: android firebase firebase-cloud-messaging

我是Android的新手,这里是我如何回收和显示通知,但事情是每次我从服务器发送通知代码来onMessageReceived但不会在Android手机测试上显示任何通知:

public class MyFirebaseMessagingService extends FirebaseMessagingService{
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        Log.d("Message Notic", "========================>>>>> >>>>> >>>>> Some message came: " +remoteMessage.getData().get("message"));
        showNotification(remoteMessage.getData().get("message"));
    }

    private void showNotification(String message) {

        Intent i = new Intent(this,MainActivity.class);
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        PendingIntent pendingIntent = PendingIntent.getActivity(this,0,i,PendingIntent.FLAG_UPDATE_CURRENT);

        NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
                .setAutoCancel(true)
                .setContentTitle("FCM Test")
                .setContentText(message)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setContentIntent(pendingIntent);

        NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

        manager.notify(0,builder.build());
    }
}

在这里,我无法获得我测试过的两台设备上的数据:

  1. OnePlus 5 - Android版(Oreo 8.0.0)
  2. Le Echo - Android版本(6.0.0)
  3. 你在这里可以解决的任何问题都会很棒!为什么我没有看到任何通知。

    谢谢!

2 个答案:

答案 0 :(得分:0)

在manifest.xml中添加:

xij

<强> MyFirebaseInstanceIDService.java

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

<强> MyFirebaseMessagingService.java

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {

    private static final String TAG = "MyFirebaseIIDService";

    @Override
    public void onTokenRefresh() {
        // Get updated InstanceID token.
        String refreshedToken = FirebaseInstanceId.getInstance().getToken();
        Log.d(TAG, "Refreshed token: " + refreshedToken);

        sendRegistrationToServer(refreshedToken);
    }



    private void sendRegistrationToServer(String token) {
        // TODO: Implement this method to send token to your app server.
    }
}

答案 1 :(得分:0)

对于Android O,您必须为通知指定通知渠道。 检查文档 https://developer.android.com/guide/topics/ui/notifiers/notifications.html#ManageChannels