FCM未收到通知消息

时间:2018-07-20 13:40:18

标签: android firebase firebase-cloud-messaging

我检查了清单,检查了服务,检查了我的依赖项,检查了类变量,但我的设备上仍然没有通知。我正在使用计算机发送Firebase云消息,并且应该在Android手机上接收它们。但是,我的android手机无法接收通知。是的,当我发送消息时,我的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);
    }
}

2 个答案:

答案 0 :(得分:1)

在清单文件中,您缺少INSTANCE_ID_EVENT

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

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

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>

答案 1 :(得分:0)

在日志上,您将已注册令牌。仅当您收到该令牌后,您的所有物品才能设置。

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

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

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