2014-02-12 26 views
1

我正在使用Windows Azure通知中心和Android,通過GCM測試通知推送服務。 我正在使用標籤,推送來自與Windows Azure集成的Web應用程序(後端)的通知,並從Android應用程序訂閱以收聽這些標籤。windows azure通知中心標記

問題是:我不知道如何取消訂閱這些標籤。即使我在模擬器中重新啓動應用程序,並且沒有使用GCM或Azure註冊,我仍會繼續接收我之前認購的每個標記的通知。

這些標籤存儲在哪裏?我怎樣才能停止收聽這些標籤?

+1

基於build talk(http://channel9.msdn.com/Events/Build/2014/2-616)我剛聽完標籤只存儲在Hub後端,並在每次註冊時被覆蓋,你有沒有嘗試發送一個空的標籤列表(我還沒有檢查出API,所以不知道你會怎麼做)? –

回答

0

從GCM收到註冊ID後,即使重新啓動應用程序,也可以隨時使用它向您的應用程序發送消息。

基本上,當您調用NotificationHub.register(...)將指定的註冊ID和標記發送到您的Azure通知中心(NH)時。然後,當您的後端發送消息標記爲「A」時,NH只是掃描其註冊列表以查找標籤「A」。然後所有帶有標籤「A」的註冊都會通過GCM端點與消息一起發送。所以你的應用程序收到這個消息

要停止接收通知,您可以調用NotificationHub.unregister(...)。

此外,GCM可能會在一段時間後過期註冊ID,然後NH會計算出來並從其數據庫中刪除該ID。

此外,如果應用程序在90天內未處於活動狀態,則NH會自動從DB中刪除註冊ID過期。

2

您還可以使用Visual Studio(服務器資源管理器,天藍色,集線器,從設備列表中刪除)刪除天藍色的通知中心註冊。

此外,如果您嘗試在不存在GCM上發送消息時,您的GCM重新生成(或過期)通知中心會刪除註冊。

P.S.任何時候重新啓動應用程序時都不應在集線器上創建新的註冊。更好的方法 - 將設備存儲在設備上並在後臺使用並檢查是否存在註冊。

+0

不知道你可以在Visual Studio中查看Hub註冊,謝謝!奇怪的是,使用不同的標籤註冊相同的設備ID有時會創建多個註冊(而不是覆蓋)。 – Dunc

+0

由於DeviceId對於天藍色的通知集線器註冊(它有註冊ID)並非UniqId))如果您想覆蓋 - 您應該保留註冊ID(例如在移動設備上),並且在創建新註冊之前 - 檢查「如果註冊存在,則獲取並更新,否則生成新的ID並創建「。 –

+0

謝謝 - 我試圖尋找一種方法來做到這一點,但只有高級'register' /'unregister'方法在Android API中可用[NotificationHub](https://github.com/Azure/azure-notificationhubs/)斑點/主/ Android設備/通知-集線器-SDK/SRC /主/ JAVA/COM /微軟/ windowsazure /消息/ NotificationHub.java) – Dunc

相關問題