2016-10-10 124 views
12

使用「新」Firebase雲消息傳遞,我想將客戶端設備registration_id令牌可靠地保存到本地服務器數據庫,以便服務器軟件可以向他們發送推送通知。FCM註冊ID令牌的最大長度是多少?

我應該用來保存100%的客戶端註冊令牌的最小數據庫字段大小是多少?

我已經發現了兩個differentlibraries使用TextFieldVarChar(255),但沒有明確界定的最大長度。另外,我希望服務器代碼在收到令牌時進行快速檢查,以確保它們「看起來」是正確的 - 將檢查的最小長度和一組字符是什麼?

回答

9

我認爲FCM的這一部分仍然與GCM相同。因此,您應該參考@TrevorJohns的answer

該文檔沒有指定任何模式,因此任何有效的字符串都是允許的。 格式未來可能會更改;請不要根據任何模式驗證此輸入,因爲如果發生這種情況,這可能會導致您的應用程序中斷。

與「registration_id」字段一樣,大小的上限是cookie的最大大小,即4K(4096字節)。

強調對格式可能會在未來部分改變,我會建議保持安全和有超出一般的MAX(如上所述)的長度。由於註冊令牌的格式和長度也可能有所不同。

對於通常長度和字符,你可以參考這些twoanswers後者更明確

我還沒有看到關於GCM registrationId的格式的任何官方消息,但我VE分析了此類標識的數據庫,並可以進行如下結論:

    在大多數情況下registrationID的長度等於符號
  • ,但可以變化,以也可能是其他長度的符號;
  • 它只包括從這個字符:[0-9a-zA-Z\-\_]*
  • 每個REGID包含「分隔符」的一個或兩個: - (減號)或_(下劃線)
+3

我們還在我們的令牌中使用':'。文檔https://firebase.google.com/docs/cloud-messaging/server顯示一個示例標記爲'bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1 ...',它肯定有':'。 – jamesc

+1

@jamesc我也見過':'之前的代幣。我認爲它是有效的分隔字符。 –

+0

@jamesc我通常會看到用於Chrome Client應用程序註冊令牌的':'。但我想即使是Android和iOS也是可以的。無論如何,我想我的答案几乎給了你一個想法,並涵蓋了你的查詢。如果您同意,請接受它作爲正確答案,以便將其標記爲已答覆。乾杯! –

5

我現在用的火力地堡雲端通訊,而不是的GCM。

的registration_id我已經得到的長度是152

我也得到了「:」在像什麼jamesc提到的(例如bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1)一開始每次。

我使令牌爲varchar(255)這是我的工作。

但是,registration_id的長度與4k的大小 沒有關係。您可以通過 網絡發送任何大小的數據。通常情況下,Cookie限制爲4096個字節,其中包含 名稱,數值,有效日期等。

+0

是的,它在大多數時間裏有152個字符。 – zhilevan