Próbuję uruchomić aplikację z Google Cloud Messaging. Obserwuję aplikację Szybki start Google Cloud Messaging, którą można znaleźć tutaj pod adresem github.Co to jest authorizedEntity? Nie można znaleźć pliku gcm_defaultSenderId we własnej aplikacji
W aplikacji QuickStart w pewnym momencie prosimy usługę Google Cloud Messaging o token rejestracji, aby ta instancja naszej aplikacji mogła komunikować się z chmurą.
znajdę ten wiersz kodu:
RegistrationIntentService.java::onHandleIntent(Intent intent):
InstanceID instanceID = InstanceID.getInstance(this);
String gcmRegistrationToken = instanceID.getToken(getString(R.string.gcm_defaultSenderId),
GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
część, która jest mylące mnie jest to wartość: R.string.gcm_defaultSenderId
To jest zdefiniowana w swojej aplikacji QuickStart ale jest generowany automatycznie.
W jaki sposób mam wygenerować tę wartość dla mojej aplikacji?
Patrzę docs dla InstanceID.getToken co jest heregetToken(java.lang.String, java.lang.String)
InstanceID.getoken
zwraca tokenu, który upoważnia jednostki (przykład: cloud service), aby wykonać działanie na rzecz zastosowania zidentyfikowane przez Instance ID. Jest to podobne do tokena OAuth2
, z tym że dotyczy ono instancji aplikacji zamiast użytkownika.
nagłówku funkcji wygląda następująco:
public String getToken (String authorizedEntity, String scope)
widzę, że pierwszy arg że getToken
chce to String authorizedEntity
. , więc co to za autoryzowany ciąg znaków?
Jednoznacznie identyfikuje wystąpienie aplikacji wysyłającej żądanie, ale jak mam ją wygenerować? W aplikacji QuickStart nie mogę znaleźć to określono w res/value/strings.xml
, mogę tylko znaleźć to określono w R.java i app/build/generated/res/google-services/debug/values/values.xml
To wygląda następująco:
<resources>
<string name="gcm_defaultSenderId">175643285</string>
</resources>
Jest tylko jeden ciąg, który się tym, że plik, a ten plik jest głęboko zakopany w strukturze projektu. Nie mogę znaleźć nigdzie w kodzie, w którym programowo generowane jest to gcm_defaultSenderId
.
Jestem zdezorientowany, ponieważ, skąd miałem wiedzieć, że sznurek tam był? Nigdy nie zdefiniowałem tego ciągu, a użycie google dla "nie można rozwiązać gcm_DefaultSenderId
" nie daje żadnych wyników. Próbuję zaimplementować Google Cloud Messaging w mojej własnej aplikacji, więc oczywiście moja własna aplikacja nie będzie automatycznie wiedzieć, jak wygenerować ten ciąg. Jak mam zrobić ten numer identyfikacyjny?
Dlatego uważam, że ważne jest, aby zrozumieć, co to ciąg znaków authorizedEntity, że InstanceID.getToken chce, tak, że mogę właściwie wygenerować jeden, aby dać getToken. Być może mój pomysł jest całkowicie błędny, być może nie mam generować gcm_defaultSenderId, ale wiem, że nie powinienem zmieniać R.java, a plik values.xml
również znajduje się pod "wygenerowanym" folderem.
Pomoc proszę? Jeśli znajdę odpowiedź w moich wyszukiwaniach, z przyjemnością opublikuję odpowiedź.Każda pomoc doceniona, uwaga: mój projekt został wyeksportowany do Gradle z Eclipse, więc nadal będzie miał strukturę projektu/folderu Eclipse, która nie powinna powodować żadnych problemów, ale plik values.xml
znajduje się w innym miejscu.
Identyfikator nadawcy pochodzi z konsoli programistów, ale jeśli wykonałeś krótki krok, został wygenerowany w pliku google-services.json skopiowanym do katalogu projektu. – Koh
Możesz upuścić identyfikator R.string i otrzymać wartość według nazwy: http://stackoverflow.com/a/38995785/606351 – Vaiden