2012-07-26 17 views
47

Jaka jest maksymalna długość identyfikatora rejestracyjnego wydanego przez serwery GCM? Dokumentacja GCM nie zawiera tych informacji. Googlowanie w ten sposób ujawnia, że ​​identyfikator rejestracji nie ma stałej długości i może mieć długość do 4K (4096 bajtów). Ale to nie są oficjalne odpowiedzi od Google. Obecnie otrzymuję identyfikatory rejestracyjne o długości 162 znaków. Czy ktokolwiek może pomóc?GCM - Maksymalna długość dla identyfikatora rejestracji

+1

możliwy duplikat [maksymalna długość rejestracji w systemie Android GCM] (http://stackoverflow.com/questions/11324666/android-gcm-registration-id-max-length) –

Odpowiedz

21

Chcę się również o tym dowiedzieć. Mój rozmiar reg id to 183 znaków. Podejrzewam, że nie będzie to dłużej niż 512 znaków, nie mówiąc o 4K. Wyobraź sobie wysyłanie powiadomień masowych o rozmiarze 4K reg id x 1000 = 4MB!

Ostatecznie po prostu używam typu "tekst" w mojej tabeli MySQL do przechowywania identyfikatora rejestracji. Więc nawet jeśli google wyśle ​​mi identyfikator 1K, 2K lub 4K (bardzo mało prawdopodobne), będę mógł sobie z tym poradzić.

Aktualizacja: mam natknąć nowej wielkości reg ID: 205.

+1

, więc maksymalna długość gcmId to 512 znaków? –

+1

Po prostu nie wiemy, jak długo to możliwe. Jak dotąd najdłużej widziałem 205 znaków. Być może inni mogą dzwonić, jeśli widzą dłuższego. – azgolfer

+0

Nazwa twojego pakietu ma wpływ na rozmiar. Podczas moich testów zauważyliśmy, że zmniejszając długość pakietu, zmniejsza on rozmiar tokena rejestracji wysyłanego z GCM. –

42

na forum android-gcm programistów Google za confirms to 4k

+0

Kolejny wątek, ta sama odpowiedź od programisty Google: https://groups.google.com/forum/#!topic/android-c2dm/AUGlvmJPyMM Jako potwierdzenie ... –

+1

mogą potwierdzić, co chcą! Jedyną rzeczą, jakiej potrzebuje programista, jest przyzwoita dokumentacja tej wartości ... czy to takie trudne? w ten sposób pojawiają się błędy w aplikacji, gdy oczekujesz wpisu 255 znaków (rozsądna wartość, ale nie fakty) i otrzymujesz> 255 później ... – mwm

+6

Czytanie w tym samym wpisie grupowym Google, wydaje się, że to był błąd , 4k jest limitem dla ładunku wiadomości, a nie reg. 255 wydaje się być bezpiecznym limitem, również zgodnie z tym postem. – diegopau

0

To jest to, co powiedział w GCM doc,

Obiekt JSON, którego pola reprezentują pary klucz-wartość danych ładunku danych komunikatu. Jeśli jest obecny, dane ładunku zostaną uwzględnione w danych Intent jako aplikacji, przy czym kluczem jest nazwa dodatkowego. Na przykład "dane": {"wynik": "3x1"} spowodowałoby powstanie dodatkowego wyniku o nazwie, którego wartością jest ciąg 3x1.

Nie ma ograniczenia liczby par klucz/wartość, chociaż istnieje ograniczenie całkowitego rozmiaru wiadomości (4 kb). Wartości mogą być dowolnymi obiektami JSON, ale zalecamy używanie ciągów, ponieważ wartości będą konwertowane na ciągi na serwerze GCM.

Jeśli chcesz dołączyć obiekty lub inne nie-łańcuchowe typy danych (takie jak liczby całkowite lub booleany), musisz wykonać konwersję, aby napisać samodzielnie. Pamiętaj też, że klucz nie może być słowem zastrzeżonym (ani żadnego słowa rozpoczynającego się od google.).

Aby nieco komplikować sprawy, istnieje kilka zastrzeżonych słów (takich jak collapse_key), które są technicznie dozwolone w danych ładunku. Jeśli jednak żądanie zawiera również słowo, wartość w żądaniu nadpisze wartość w danych ładunku. W związku z tym używanie słów zdefiniowanych jako nazwy pól w tej tabeli nie jest zalecane, nawet w przypadkach, gdy są one technicznie dozwolone. Opcjonalny.

+4

Dotyczy to ładunku powiadomienia, a nie identyfikatora rejestracji. – Jake

Powiązane problemy