14

我正在嘗試爲Android和iOS創建應用程序,並且我希望在這兩個應用程序上都使用推送通知。我將要有一個將發送通知的服務器應用程序。Google/Apple推送通知服務(APNS/GCM)

我想弄清楚的是我們如何存儲用戶的設備,以便我知道哪些服務需要使用APNS或GCM。

其中一個方向是讓應用程序設置手機類型並將此信息存儲在服務器端,但如果用戶將手機從iOS更改爲Android,則需要涉及數據存儲用戶和收集每個用戶的信息,而不是涵蓋用戶使用Android平板電腦和iOS電話時的情況。

使其更通用並同時向APNS和GCM服務發送通知,其中一個會返回錯誤?

很想聽聽這種情況下的最佳做法嗎?

+2

你確實有設備令牌存儲在某個地方嗎?我們在專用表中存儲設備標記和設備類型(以及在設備上運行的應用程序版本...)。因此,每個用戶可以擁有儘可能多的註冊設備。通知 - 工作線程然後知道在向任何設備發送消息時使用哪個進程和服務器。每次用戶登錄時,這個(令牌,類型,版本)都會發送到服務器。 –

+1

任何您不會使用www.parse.com來管理您的推送的原因?它可以每個月免費推送很多,併爲您處理所有這些。 –

+0

http://stackoverflow.com/questions/33339774/gcm-google-cloud-messaging-for-ios-apps/35546895#35546895#answer-35546895 – abhi1992

回答

24

這是非常簡單的實現APNS和GCM:

  • 當APNS(iOS設備)和GCM(Android設備)寄存器對於Apple和Google Server上的推送通知,它會爲每個設備生成一個唯一的令牌。
  • 之後,您需要使用設備ID或用戶ID(服務器上設備的唯一ID)和設備的操作系統來保存設備令牌。

像和iOS設備發送服務器(後端)這個信息,您可以使用此JSON格式 - {"token":"abcdedfgehik2bd3d3ff3sffssdff","os":"iOS","userid":34}

爲Android設備將是 - {"token":"erydnfbdbdjskd76ndjs7nnshdjs","os":"Android","userid":35}

通過這個,你可以識別設備的操作系統,以及將用於發送推送通知的用戶信息和唯一令牌。

3

當設備向推送服務註冊時,您可以創建一個Unique id (UUID),然後將唯一ID與註冊密鑰以及您想要的任何其他信息一起發送到服務器。這樣,你有全部使用有設備和調度通知到所有這些

+0

進行測試這聽起來對iOS設備有效,但我如何區分iOS和Android設備,我需要在服務器上決定將通知轉發給APNS或GCM。或者只是創建邏輯,說如果不是APSN,它是GCM? –

+0

當你發送信息是什麼類型的設備時發送一個標誌 – tyczj