[英]How to use both GCM and Urban Airship for Android push notification
我正在为Android实现推送通知。 我的客户希望该应用除了支持常规GCM服务外,还支持Urban Airship。 我在这里有问题。
为了启用GCM,我使用了Google的gcm.jar并完成了所有其他设置,并确认我可以从服务器发送推送通知而不会出现问题。 这是AndroidManifest的一部分。
<receiver android:name="com.google.android.gcm.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="my.package.name"/>
</intent-filter>
</receiver>
<service android:name="my.package.name.GCMIntentService" />
为了实现Urban Airship,我使用了urbanairship-lib-3.1.0.jar并完成了所有设置。 工作正常。
<receiver android:name="com.urbanairship.CoreReceiver" />
<receiver android:name="com.urbanairship.push.GCMPushReceiver" android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="my.package.name"/>
</intent-filter>
</receiver>
问题:当我从城市飞艇发送推力时,该应用收到2条通知。
发生这种情况时,我可以通过编写代码来取消一个不必要的警报窗口,但是我无法弄清楚如何消除顶部通知栏中的警报窗口。
我不确定这是否是在同一应用中同时使用GCM和Urban Airship的正确方法。 有没有人成功,或者有其他想法? 可以使用Intent过滤器做什么吗?
据我所知,城市飞艇使用GCM向Android发送通知。 这意味着,无论谁在服务器端发送通知,单个接收者都可以接收所有消息。 这就是为什么您会收到两个通知的原因,因为两个接收者都收到相同的消息并显示该通知。 您自己的接收器可以处理您和城市飞艇发送的消息。
拥有两个不同接收者的唯一原因是,如果您希望您的应用对来自一个来源的消息的处理方式不同于来自另一个来源的消息的处理方式。 在这种情况下,您应该使用其他发送者,并且每个接收者都必须检查消息的发送者,以决定是否应该处理它。
除此之外,我看不到通过Urban Airship发送消息如何使它们更快到达,因为它们还将消息发送到GCM服务器,后者进行实际传递。 Urban Airship更快的唯一方法是,当您使用简单的HTTP API直接调用GCM时,他们正在使用Cloud Connection Server API。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.