FCM:没有调用onMessageReceived,即使将msg发送到fcm后也没有通知?

我正在开发一个应用程序,我想通过PHP实现FCM推送通知。

所以我制作了两个java文件:1.FirebaseInstanceID(工作正常并在数据库中正确获取令牌)2.FirebaseMessagingSerivice(未调用)

我的FirebaseMessagingService.java

package com.example.xyz; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Intent; import android.support.v4.app.NotificationCompat; import com.google.firebase.messaging.RemoteMessage; public class FirebaseMessagingService extends com.google.firebase.messaging.FirebaseMessagingService{ @Override public void onMessageReceived(RemoteMessage remoteMessage) { showNotification(remoteMessage.getData().get("message")); } private void showNotification(String message) { Intent i = new Intent(this,Dashboard.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.drawable.common_google_signin_btn_icon_dark) .setContentIntent(pendingIntent); NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); manager.notify(0,builder.build()); } } 

当我运行我的php脚本向FCM发送消息时的结果:

  {\"multicast_id\":7077449602201888040,\"success\":1,\"failure\":0,\"canonical_ids\":0,\"results\":[{\"message_id\":\"0:1465110073498648%d215149df9fd7ecd\"}]} 

但我仍然没有得到任何通知,所有的配置,如api密钥,包名称(在fcm控制台,我的项目)都被检查,他们没事。

当我通过在FirebaseMessagingService.java中的onMessageReceived()创建断点来调试应用程序时,它没有通过它,并且当消息通过php脚本推送到fcm服务器时,应用程序正常运行。

我的Dashboard.java

 public class Dashboard extends AppCompatActivity { private Toolbar toolbar; private DrawerLayout drawer_layout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_dashboard); toolbar=(Toolbar) findViewById(R.id.app_bar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayShowHomeEnabled(true); drawer_layout=(DrawerLayout) findViewById(R.id.drawer_layout); NavigationDrawerFragment drawerfragment= (NavigationDrawerFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer); drawerfragment.setUp(R.id.fragment_navigation_drawer,drawer_layout,toolbar); FirebaseMessaging.getInstance().subscribeToTopic("test"); FirebaseInstanceId.getInstance().getToken(); } 

但我的仪表板活动包含一个片段。我不知道它是否有问题。

AndroidManifest.xml中

                              

logcat的

 06-05 12:06:05.678 32386-32386/com.example.noticeboard W/ActivityThread: Application com.example.noticeboard is waiting for the debugger on port 8100... 06-05 12:06:05.686 32386-32386/com.example.noticeboard I/System.out: Sending WAIT chunk 06-05 12:06:05.892 32386-32393/com.example.noticeboard I/art: Debugger is active 06-05 12:06:05.897 32386-32386/com.example.noticeboard I/System.out: Debugger has connected 06-05 12:06:05.897 32386-32386/com.example.noticeboard I/System.out: waiting for debugger to settle... 06-05 12:06:06.107 32386-32386/com.example.noticeboard I/System.out: waiting for debugger to settle... 06-05 12:06:06.317 32386-32386/com.example.noticeboard I/System.out: waiting for debugger to settle... 06-05 12:06:06.527 32386-32386/com.example.noticeboard I/System.out: waiting for debugger to settle... 06-05 12:06:06.587 32386-32393/com.example.noticeboard W/art: Suspending all threads took: 41.152ms 06-05 12:06:06.741 32386-32386/com.example.noticeboard I/System.out: waiting for debugger to settle... 06-05 12:06:06.947 32386-32386/com.example.noticeboard I/System.out: waiting for debugger to settle... 06-05 12:06:07.157 32386-32386/com.example.noticeboard I/System.out: waiting for debugger to settle... 06-05 12:06:07.368 32386-32386/com.example.noticeboard I/System.out: waiting for debugger to settle... 06-05 12:06:07.577 32386-32386/com.example.noticeboard I/System.out: waiting for debugger to settle... 06-05 12:06:07.786 32386-32386/com.example.noticeboard I/System.out: waiting for debugger to settle... 06-05 12:06:07.998 32386-32386/com.example.noticeboard I/System.out: waiting for debugger to settle... 06-05 12:06:08.208 32386-32386/com.example.noticeboard I/System.out: waiting for debugger to settle... 06-05 12:06:08.418 32386-32386/com.example.noticeboard I/System.out: waiting for debugger to settle... 06-05 12:06:08.628 32386-32386/com.example.noticeboard I/System.out: waiting for debugger to settle... 06-05 12:06:08.838 32386-32386/com.example.noticeboard I/System.out: debugger has settled (1466) 06-05 12:06:08.884 32386-32386/com.example.noticeboard W/System: ClassLoader referenced unknown path: /data/app/com.example.noticeboard-1/lib/x86 06-05 12:06:08.906 32386-32386/com.example.noticeboard D/FirebaseApp: com.google.firebase.auth.FirebaseAuth is not linked. Skipping initialization. 06-05 12:06:08.918 32386-32386/com.example.noticeboard D/FirebaseApp: Initialized class com.google.firebase.iid.FirebaseInstanceId. 06-05 12:06:08.919 32386-32386/com.example.noticeboard D/FirebaseApp: com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization. 06-05 12:06:08.943 32386-32386/com.example.noticeboard I/FA: App measurement is starting up, version: 9080 06-05 12:06:08.943 32386-32386/com.example.noticeboard I/FA: To enable debug logging run: adb shell setprop log.tag.FA VERBOSE 06-05 12:06:09.022 32386-32386/com.example.noticeboard D/FirebaseApp: Initialized class com.google.android.gms.measurement.AppMeasurement. 06-05 12:06:09.022 32386-32386/com.example.noticeboard I/FirebaseInitProvider: FirebaseApp initialization successful 06-05 12:06:09.045 32386-32456/com.example.noticeboard W/GooglePlayServicesUtil: Google Play services out of date. Requires 9080000 but found 8087470 06-05 12:06:09.130 32386-32457/com.example.noticeboard D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true 06-05 12:06:09.134 32386:32386 D/ ] HostConnection::get() New Host Connection established 0xabe6ce00, tid 32386 06-05 12:06:09.141 32386-32386/com.example.noticeboard W/FA: Service connection failed: ConnectionResult{statusCode=SERVICE_VERSION_UPDATE_REQUIRED, resolution=null, message=null} [ 06-05 12:06:09.188 32386:32457 D/ ] HostConnection::get() New Host Connection established 0xabe6cff0, tid 32457 06-05 12:06:09.193 32386-32457/com.example.noticeboard I/OpenGLRenderer: Initialized EGL, version 1.4 06-05 12:06:09.215 32386-32457/com.example.noticeboard W/EGL_emulation: eglSurfaceAttrib not implemented 06-05 12:06:09.215 32386-32457/com.example.noticeboard W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xa3e6ca80, error=EGL_SUCCESS 06-05 12:06:17.473 32386-32394/com.example.noticeboard W/art: Method processed more than once: void java.lang.Thread.run() 06-05 12:06:17.474 32386-32395/com.example.noticeboard W/art: Method processed more than once: void java.lang.Object.wait(long) 06-05 12:06:17.474 32386-32395/com.example.noticeboard W/art: Method processed more than once: void java.lang.Thread.run() 06-05 12:06:17.478 32386-32396/com.example.noticeboard W/art: Method processed more than once: void java.lang.Thread.run() 06-05 12:06:32.514 32386-32457/com.example.noticeboard W/EGL_emulation: eglSurfaceAttrib not implemented 06-05 12:06:32.514 32386-32457/com.example.noticeboard W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xa24ff280, error=EGL_SUCCESS 06-05 12:06:32.624 32386-32457/com.example.noticeboard E/Surface: getSlotFromBufferLocked: unknown buffer: 0xabee3340 06-05 12:06:32.656 32386-332/com.example.noticeboard D/FirebaseInstanceId: topic sync succeeded 

提前致谢!

您没有遵循正确的代码。 再次检查此链接 。

使用下面的代码

  

代替

  

不幸的是, Usman Iqbal的回答并不完全正确。 官方Android文档使用MESSAGING_EVENT:

       

资料来源: https : //firebase.google.com/docs/cloud-messaging/android/receive#edit-the-app-manifest

常见的错误

 android:name="YourApplicationPackageName.YourFirebaseMessagingServiceName" 

您需要更改AndroidManifest.xml某些部分。

你的代码

            

替换为以下代码: