手动处理每个 GCM 推送的正确方法是什么?

What is the proper way to manually handle every single GCM push?

我的 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 push received!");

        ACNotification notification = new ACNotification(getApplicationContext(), data);
        notification.handleNotification();
    }
}

基本上,它的作用是将通知数据传递给名为 ACNotification 的 class,然后后者读取数据并使用 Notification.Builder.

显示通知

当应用程序在前台时,这非常有效。但是一旦用户关闭应用程序,这段代码似乎永远不会执行,但应用程序会以某种方式自行处理通知。

它仍然会显示通知,但 Android 会自行显示。它没有设置正确的通知图标(它只使用 Android stock ic_launcher 图标)。

知道我做错了什么吗?我如何确保自己能够处理每条通知?

从您的消息中删除通知负载。

看看吧: