1

我知道,在從未版本的GCM中,您可以根據userId而不是設備ID來關閉通知。這實質上是將此操作與用戶使用相同Google帳戶的所有設備同步。這個文檔頁面,可以在這裏找到,這是非常有幫助如何使用GCM通知同步

http://developer.android.com/google/gcm/notifications.html

只有我不從那裏瞭解的是: 我需要在我的應用程序編寫代碼來聯繫GCM服務器或我的自己的服務器觸發在其他設備上解僱或當通知被解僱或打開時自動發生?

這是導致我認爲需要手動完成的部分,但我不確定: 「您應該設計您的應用,以處理應用收到解僱消息但尚未顯示正在被解僱的通知「。

回答

2

是的,你必須在你的應用程序中編寫代碼來觸發解僱消息,以及處理它。

注意:通知解除消息就像任何其他上游消息,這意味着它將被傳遞到屬於指定的notification_key的其他設備。您應該設計您的應用,以處理應用收到解僱消息的情況,但尚未顯示正在解僱的通知。您可以通過緩存解僱並將其與相應的通知進行協調來解決此問題。

這很有道理,因爲GCM不知道您的應用如何處理到達的GCM消息。您的應用可能會顯示通知(如果已經在屬於同一用戶的其他設備上處理了該通知),或者可能會與服務器執行一些後臺同步(在這種情況下不需要發送解除消息)。

這個新功能的要點是,您只需向單個通知鍵發送一條消息,而不是將其發送到多個註冊ID,並且安裝在屬於同一用戶的任何設備上的應用程序不需要知道所有這些設備的註冊ID。它只需要知道notification_key以便與其他設備進行通信。

+1

謝謝你的解釋。我發現這種邏輯,但這個新功能的意義沒有意義,因爲只有一件事是用一個標識符而不是一個列表來引用一組設備。在此之前,同樣的事情是可能的,你只需要向用戶設備發送多播消息並自己定義解除消息。我對這個事實感到失望,但你的回答很好,正是我期待的。唯一有用的東西是最佳實踐實例的鏈接,所以如果你知道一些實例,請將其添加爲特徵參考。 – PSIXO

0

我認爲您的服務器需要聯繫 這可以保持流量一致性,並且在聯繫GCM服務器發送消息時,您需要提供您的API密鑰和項目ID ......這對於存儲在移動應用程序中。

這就是爲什麼你應該聯繫你的服務器,在輪到他,你的服務器將聯繫GCM服務器

這是我的看法。

+0

謝謝你的回答。所以我必須手動觸發同步消息?那麼我就不明白這個新功能的重點。由於所有較舊的應用都必須重寫才能使用,因此您可以在此之前完成此操作,方法是定義您自己的清除通知消息並將其發送給用戶設備。 – PSIXO

+0

好了,經過第二次查看和更多的搜索,我發現它應該由移動應用程序發送到所有使用相同的谷歌帳戶註冊的設備,但它會使用notification_key,這是一個獲得像從GCM服務器regId獲得的關鍵,它代表多設備下相同的谷歌帳戶,並在第一時間當你發送消息,你應該使用notification_key(不知道)...看看這裏...一些有趣的信息http://captechconsulting.com/blog/antoine-campbell/google-cloud-messaging-cloud-connection-server-tutorial – Yazan