web-dev-qa-db-fra.com

Quelle est la longueur maximale d'un jeton d'identification d'enregistrement FCM?

En travaillant avec le "nouveau" Firebase Cloud Messaging, je souhaite enregistrer de manière fiable les jetons de périphérique client registration_id Dans la base de données du serveur local afin que le logiciel serveur puisse leur envoyer des notifications Push.

Quelle est la plus petite taille de champ de base de données que je devrais utiliser pour enregistrer 100% des jetons d’enregistrement client générés?

J'ai trouvé deux différentsbibliothèques qui utilisent TextField et VarChar(255) mais rien ne définit catégoriquement la longueur maximale. De plus, j'aimerais que le code serveur effectue une vérification rapide de la longueur lors de la réception des jetons afin de s'assurer qu'ils "ont l'air" corrects - quelle serait une bonne longueur minimale et un ensemble de caractères à vérifier?

25
jamesc

Je pense que cette partie de la FCM est toujours la même que GCM. Par conséquent, vous devriez vous référer à ceci réponse par @TrevorJohns:

La documentation ne spécifie aucun modèle, donc toute chaîne valide est autorisée. Le format peut changer dans le futur ; veuillez ne pas valider cette entrée par rapport au modèle any, car cela pourrait entraîner la casse de votre application si cela se produisait.

Comme pour le champ "registration_id", la limite supérieure de la taille correspond à la taille maximale d'un cookie, soit 4 Ko (4096 octets).

En mettant l'accent sur la partie Le format peut changer à l'avenir, je suggérerais de rester en sécurité et de dépasser la longueur maximale habituelle (mentionnée ci-dessus). Étant donné que le format et la longueur d'un jeton d'enregistrement peuvent également varier.

Pour la longueur et les caractères habituels, vous pouvez vous référer à ceux-ci deuxréponses le dernier étant beaucoup plus définitif:

Je n'ai pas vu d'informations officielles sur le format de registrationMID de GCM, mais j'ai analysé notre base de données de ces identifiants et je peux tirer les conclusions suivantes:

  • dans la plupart des cas, la longueur d'un registrationID est égale à 162 symboles , mais il peut s'agir de variations de 119 symboles, peut-être d'autres longueurs aussi;
  • il ne consiste que de ce caractère: [0-9a-zA-Z\-\_]*
  • chaque regID contient un ou les deux "délimiteurs": - (moins) ou _ (souligné)
18
AL.

J'utilise maintenant Firebase Cloud Messaging au lieu de GCM.

La longueur de registration_id que j'ai est 152.

J'ai aussi à chaque début le caractère ":" comme ce que jamesc a mentionné (par exemple, bk3RNwTe3H0: CI2k_HHwgIpoDKCIZvvMEDUxFd3Q1).

Je fais le jeton comme varchar (255) qui fonctionne pour moi.

Cependant, la longueur de registration_id n'a aucun lien avec la taille de 4k. Vous êtes autorisé à envoyer n'importe quelle taille de données via le réseau. En règle générale, les cookies sont limités à 4096 octets, composés du nom, de la valeur, de la date d'expiration, etc.

13
Fred