2013-01-17 103 views
4

如果我可以將發生在我的服務器上的重要事件通知給應用程序用戶,我正在進行研究。所以,我試着Google-Cloud-Messaging實施推送通知。 不幸的是,我可以看到郵件遲交,沒有確切的延遲交貨時間。我甚至用 通過在Gmail中發送郵件進行嘗試,並且推送通知本身到達遲到,沒有時間限制。 因此,我發現我無法使用谷歌雲消息服務向用戶提供重要事件。 有沒有其他辦法可以通知用戶重要事件?Google-Cloud-Messaging服務的可靠性

注意:我不想使用短信。而且我不想從應用程序拉太多,因爲它會消耗電池壽命。

感謝您的幫助提前。

回答

1

GCM是您用來將消息儘快推送給用戶的方式。您可以在消息中指定何時需要傳遞消息 - 可能是使用delay_while_idle標誌保存電池的gmail。根據我的經驗,GCM真的非常快。如果您要在很短的時間內將多個更新推送到同一設備,則只應該體驗節流。

https://developer.android.com/google/gcm/adv.html

1

也許是由於其他問題,也可能是由於發送服務器的地理位置和接收方的IP地址。

2

其實,它5228,5229,5230端口是在我的服務器塊所致。所以,它需要被網絡管理員解鎖。另外,如果facebook應用,gmail等其他接收器處於活動狀態並表示它們已被您的服務器管理員佔用,則它們將同步進行,而不會成功,並且在稍後同步您的應用時需要時間。

1

這可能是由Google Cloud Messaging中不現實的心跳間隔造成的。

GCM通過維護從Android設備到Google服務器的空閒套接字連接工作。這很好,因爲它幾乎不消耗電池電量(與輪詢相反),並且它允許在消息到達時立即喚醒設備。

爲確保連接保持活動狀態,Android會在移動連接上每28分鐘發送一次心跳,並在WiFi上每15分鐘發一次心跳。如果心跳失敗,連接已終止,GCM將重新建立並嘗試檢索任何掛起的推送通知。心跳間隔越高,電池消耗越少,設備從睡眠中醒來的次數也越少。

但是,這樣做的代價很大:心跳間隔越長,識別斷開的套接字連接所用的時間就越長。在部署GCM之前,谷歌尚未在實際情況下對這些時間間隔進行足夠徹底的測試。這些時間間隔的問題是由網絡路由器和移動運營商所造成的,他們在閒置幾分鐘後斷開空閒套接字連接。

更多信息,請在我的博客:

http://eladnava.com/google-cloud-messaging-extremely-unreliable/