什么是手动处理每个单个GCM推送的正确方式?
什么是手动处理每个单个GCM推送的正确方式?
我在Android GCM实现中遇到了一个奇怪的问题。
这是我处理GCM通知的代码:
public class GCMMessageHandler extends GcmListenerService { @Override public void onMessageReceived(String from, Bundle data) { super.onMessageReceived(from, data); Log.i(this.getClass().getSimpleName(), "收到GCM推送!"); ACNotification notification = new ACNotification(getApplicationContext(), data); notification.handleNotification(); } }
基本上,这段代码将通知数据传递给我称为ACNotification
的类,然后该类读取数据并使用Notification.Builder
显示通知。
当应用程序在前台运行时,这个方法运行得很完美。但是一旦用户关闭了应用程序,似乎这段代码就不再执行,但是应用程序会自动处理通知。
它仍然显示通知,但Android会自动处理。它不会设置正确的通知图标(只是使用了Android的默认ic_launcher图标)。
有没有人知道我做错了什么?我如何确保我能够自己处理每个通知?
问题:如何手动处理每个GCM推送的正确方式?
原因:在应用程序在后台运行时,Firebase的onMessageReceived方法不会被调用。因此,我们需要找到一种方法来手动处理每个GCM推送。
解决方法:从您的消息中删除通知负载。您可以参考以下链接以获取更多信息:Firebase onMessageReceived not called when app is in the background