FCM 未收到通知消息

Posted

技术标签:

【中文标题】FCM 未收到通知消息【英文标题】:FCM not receiving notification messages 【发布时间】:2018-07-20 13:40:17 【问题描述】:

我检查了我的清单,检查了我的服务,检查了我的依赖项,检查了类变量,但我的设备上仍然没有通知。我正在使用我的电脑发送 Firebase 云消息,我应该在我的 android 手机上接收它们。但是,我的安卓手机没有收到通知。是的,当我发送消息时,我的安卓设备在后台。有谁知道我的问题是什么?

这里是源代码:

我的服务

public class FirebaseIDMessage extends FirebaseMessagingService 

    private static final String TAG = "FirebaseIDMessage";


    @Override
    public void onNewToken(String s) 
        super.onNewToken(s);
        String token = s;
        Log.d(TAG, "Registered token: = " + token);

        sendRegistrationToServer(token);
    


    private void sendRegistrationToServer(String token)

    

我的清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.messaging">

   <uses-permission android:name="android.permission.INTERNET" />

       <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <!-- Services -->
        <service android:name=".FirebaseIDMessage"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>

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

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

</manifest>

我的活动

public class MessagingActivity extends AppCompatActivity 

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_messaging);
    

【问题讨论】:

【参考方案1】:

在您的清单文件中,您缺少 INSTANCE_ID_EVENT

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

这是使用 FirebaseInstanceIdService 扩展的类的意图过滤器

public class MyFirebaseInstanceIdService extends FirebaseInstanceIdService

   public static final String REGISTRATION_TOKEN = "REG_TOKEN";
   @Override
     public void onTokenRefresh()
     
        String token = FirebaseInstanceId.getInstance().getToken();
        Log.e(REGISTRATION_TOKEN,token);
     
 

所以,清单服务最终会是这样的

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

【讨论】:

【参考方案2】:

在日志上你会得到注册的令牌。仅当您收到该令牌时,您的所有设置。

转到 Firebase 控制台:https://console.firebase.google.com

选择你的项目 -> 从左侧菜单 -> 选择云消息 -> 新消息

输入您的消息,然后在目标中选择单个设备,然后复制粘贴您收到的令牌并在您的设备上检查此通知,这样我们可以确认您已正确设置所有通知相关代码。如果您仍然遇到任何问题,请告诉我,以便我可以分享一些示例。

【讨论】:

以上是关于FCM 未收到通知消息的主要内容,如果未能解决你的问题,请参考以下文章

Web 应用程序中未收到 Firebase 云消息传递通知

设备未收到 Firebase 云消息通知

Firebase 云消息/通知未收到。 JS

使用 xamarin 表单在前台未收到 FCM 通知

设备未收到Firebase云消息传递通知

未收到 Flutter FCM IOS 静默(仅数据)通知