[英]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.