2012-03-31 59 views
1

嗨,我是一名學生,我正在開發一個android應用程序作爲我的軟件設計課程的一個項目。C2DM得到相同的信息

因此,我設法使整個C2DM過程有效,並且我的設備可以接收通知。然而,即使我推送不同的信息,每次我推送某些東西時,我所獲得的信息也總是相同的。

我下面在這裏提到的教程: http://www.vogella.de/articles/AndroidCloudToDeviceMessaging/article.html

有時候,我得到正確的消息,但是我必須等待30分鐘以上,以推動新的消息。在推送另一條消息之前,我需要等多少時間? (我嘗試了2分鐘的等待時間,但我收到了相同的信息),還是有什麼我做錯了。

+0

你說「我得到的信息每次都是一樣的」和「有時我確實得到正確的信息」,但這似乎是矛盾的。 – 2012-04-01 09:29:54

+0

只有在我再次推送前等待30分鐘纔會收到正確的信息。 – L4chong 2012-04-01 15:54:24

回答

0

檢查您是否濫用了collapse_key,因爲這可能會導致您看到的內容。

我已經使用了C2DM相當數量,我從來沒有見過這種情況。我經常一個接一個地發送一連串的信息,他們到達了。

我也仔細檢查,確保您收到您認爲您的消息 - 查看意圖參數。

2

教程代碼存在問題,其中掛起的意圖是使用相同的上下文,requestCode,意向和標誌作爲先前調用創建的,並且在處理後未取消。所以收件人(MessageReceivedActivity)顯然引用了之前的PendingIntent。解決此

方式一: 的「requestCode」屬性還沒有使用,所以做出的PendingIntent唯一可以提供獨特的價值存在,例如:

int ukey = (int) System.currentTimeMillis(); 
PendingIntent pendingIntent = PendingIntent.getActivity(context, ukey, 
       intent, 0); 

這將使MessageReceivedActivity到得到你打算的意圖(雙關語/ :)以便接收。

也許有一種方法可以取消pendingIntent,但是我無法解決問題。

+0

太棒了,這對我很有用。但未來這些保證不會破壞的保證是什麼? – Solata 2012-05-27 21:35:34

+0

而在MessageReceivedActivity類中,您必須具有setIntent(intent)調用的onNewIntent事件。這意味着當前(舊的有效載荷數據)意圖將被刷新爲這個(新的 - 新的有效載荷數據)。 – Solata 2012-05-28 08:23:10

1

當跟隨Lars Vogel的教程時,我遇到了同樣的問題。很可能你有同樣的問題,即你實際上收到了良好的信息,但顯示它的活動沒有按照應有的方式工作。

爲確保您收到正確的消息,請在onReceive函數中添加一個斷點或日誌,並查看所得結果。

如果您確實收到不同的信息,那麼您的問題與我的問題相同:信息顯示不正確。

Vogel教程中的MessageReceivedActivity在方法的末尾調用super.onCreate(savedInstanceState);,它應該在該方法中調用它的第一件事。 See my detailed solution to a related question here.