android 安装后触发 GCM 接收器并发送空通知

android GCM receiver triggered after install and sending empty notif

我的项目中 class 继承了 azure NotificationHandler。在我更新我的项目之前一切正常(接收器没有任何变化)。现在,每次我安装应用程序时,NotificationHandler 总是触发并发送空通知。我认为我的问题与 类似。

这是源代码

<receiver  android:name="com.microsoft.windowsazure.notifications.NotificationsBroadcastReceiver"
           android:permission="com.google.android.c2dm.permission.SEND">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />

                <category android:name="_mypackage" />
            </intent-filter>
        </receiver>

任何帮助将不胜感激

我遇到了完全相同的问题,并在此处找到了解决方案:

每次我的应用程序重新安装时,我的推送消息的 BroadcastReceiver 都会收到一个 Intent,我就像处理普通的推送通知一样处理它(这导致向用户显示空通知)。显然 google 开始发送与常规推送消息具有相同意图过滤器的意图,以便处理推送令牌的刷新。如果您查看 google 在 Android 上实现推送客户端的文档,您会发现它现在建议我们停止创建 BroadcastReceivers,并使用 googles GCMReceiver(参见 https://developers.google.com/cloud-messaging/android/client)

因为当时我不打算重新实现我的推送客户端,所以我不得不过滤意图并弄清楚哪些是由 GCM 生成的,哪些是由我的推送服务器发送的。在这两种情况下,我总能在意图的额外内容中得到一个名为 "from" 的字段,所以我用它来过滤。 Google 发起的所有意图都有 "google.com/iid" 作为这个字段,其他通知上面有我的项目编号(例如:"from":“42352342352423”)

String from = extras.getString("from");
    if (!"google.com/iid".equals(from)) {
        // create notification       
    } 

希望对你有帮助