2012-04-27 76 views
0

我第一次使用C2DM,並且正在尋求一般性建議,我如何實現以下功能: 在收到C2DM消息後,我決定: - 如果應用程序在當前活動將顯示「警報彈出」。 - 如果程序沒有打開,我想將消息發送到通知欄(類似於新的電子郵件,短信,微博等)應用程序關閉時接收意圖廣播

我們有一個GlobalBroadcastReceiver extends BroadcastReceiver它實現public void onReceive(Context context, Intent intent)。這是只有收件人登記在AndroidManifest.xml
所以基本上我們所有的廣播都是通過這個接收器傳輸的,第一種情況是沒有問題的。

但是,我想知道如何解決第二個問題。我如何確保即使在我的應用程序關閉時我也能收到C2DM.RECEIVE廣播,然後:如何才能通知用戶有關傳入數據?

我超級自信已經有很多的解決方案,但因爲我找不到它們,我想我只是缺少一些更大的圖片。

回答

3

我怎樣才能確保我收到,即使我的應用程序被關閉

一個C2DM.RECEIVE廣播讓你的接收機清單,per the C2DM documentation註冊。

那麼:如何才能通知用戶有關輸入數據?

提高Notification

由於您的接收器不一定知道您的前景是否存在活動,所以最好的解決方案是發送您自己的廣播Intent,但需要訂購。讓活動爲您自己的廣播註冊一個高優先級BroadcastReceiver,並讓其他清單註冊BroadcastReceiver爲您自己的廣播實施普通優先級BroadcastReceiver。如果活動獲得廣播,它將顯示您的彈出窗口(ick)並中止廣播。如果您的「backstop」BroadcastReceiver獲得廣播,則顯示NotificationHere is a blog post有關此模式的更詳細信息,以及here is a sample project演示了這種有序廣播的使用。

+0

請您詳細說明這個部分請詳細一點嗎? 「讓活動爲您自己的廣播註冊高優先級的BroadcastReceiver,並讓另一個清單註冊的BroadcastReceiver爲您自己的廣播實現普通優先級的BroadcastReceiver。」我明天也會檢查一下。我需要安靜的時間來測試所有這些:) – yoshi 2012-04-27 15:07:40

+0

@yoshi:我專門提供了超鏈接到博客文章和一個示例項目,以提供更多細節。 – CommonsWare 2012-04-27 15:11:11

+0

對不起,遲到的迴應。就在收到你的回答後,我對整個c2dm系統有了一點戲劇性。我喜歡你在文章中描述的模式。真的很好用這種方式使用有序的廣播。無論如何,閱讀後我意識到所有的工作已經完成。我只是不明白,即使沒有活動運行,清單中註冊的BroadcastReceiver也會執行。甜蜜:) – yoshi 2012-05-03 19:38:19

相關問題