2013-03-28 116 views
3

我正在從服務器獲取推送通知。服務器始終在有效負載中發送badge = 1。iOS6中的自動遞增推送通知徽章

服務器端開發人員對此一無所知。任何人都可以告訴我服務器端開發人員如何處理徽章計數值,以便iOS應用程序能夠獲得更新的徽章數量(自動遞增的徽章數量)?

  1. 我可以在iOS應用程序端自動增加它嗎?如果是這樣,怎麼樣?

  2. 如果沒有,那麼服務器開發人員如何處理服務器上的徽章數?我看到幾個鏈接告訴我服務器端應該處理徽章數量。

任何樣品或參考將有所幫助。

回答

4

徽章計數是可以從服務器的Apple推送通知有效內容中發送的參數之一。徽章計數通常反映服務器知道的某種新數據(如未讀電子郵件)的數量,並希望向應用程序用戶發出警報。 因此它應該在服務器端完成。當前始終在徽章計數中發送1的代碼應更改爲選擇正確的計數。

您可以在客戶端執行此操作(無論何時推送通知到達時都增加一個),但這不是一個好主意,因爲不能保證推送通知到達。此外,只有當通知中除了徽章號碼之外還包含警報並且用戶點擊通知才能打開應用程序(否則,如果通知數據尚未運行,您的應用程序就不會收到通知數據) 。

+0

是的......這是我的擔心,好像我的應用程序沒有運行我不會得到任何數據,所以無法更新徽章。感謝您的解釋。 – iOSAppDev

+0

你能告訴我,如果用戶收到徽章計數= 8並且用戶打開應用程序,會發生什麼情況。然後我將清除服務器上的徽章數量。然後在清除服務器上的徽章數之前說,服務器發送了另外1個帶有徽章值= 9(8 + 1)的推送通知。現在用戶會看到徽章計數= 9。對嗎? – iOSAppDev

+0

@iOSAppDev這是正確的。但假設此時應用程序將在前臺運行(因爲用戶剛打開它),您可以立即清除客戶端中的徽章,並且用​​戶可能不會看到它。 – Eran

6

我認爲你不能做到iOS應用程序端。它必須來自服務器。

我做什麼:

  • 服務器存儲在數據庫中的每個用戶的應用程序證件號碼。
  • 當服務器發送通知時,它將該數字增加1.
  • 您還需要創建一個Web服務來重置在啓動應用程序時將調用的徽章編號。

您可以用該行(例如,在applicationDidBecomeActive)應用程式變更證件號碼:

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    application.applicationIconBadgeNumber = 0; 
} 

希望這有助於。

+1

感謝您的解決方案。 – iOSAppDev