android google-cloud-messaging

Agregar Google Cloud Messagin(GCM) para Android: proceso de registro



google-cloud-messaging (1)

¿Es mi respuesta con el código fuente en su pregunta ¿Cómo implementar GCM Hello World para Android con Android Studio no es suficiente para crear dos proyectos simples de GCM (del lado del servidor y del lado del cliente) todavía? :)

Por supuesto, el código de muestra que utilicé es solo para un caso muy básico "la aplicación del servidor envía, la aplicación del cliente recibe y muestra el mensaje" .

Para resumir, debe seguir los siguientes pasos:

  1. Crea un nuevo proyecto en Google Developers Console . En este paso, para simplificar, solo necesita tomar nota de 2 valores: Project Number , que se usará como SENDER_ID en mi proyecto de cliente; y la API server key (creada en Credenciales ), que se utilizará como API_KEY en mi proyecto de servidor.
  2. Cree un nuevo proyecto simple de Android para el lado del servidor (con el código fuente básico como respuesta en su pregunta anterior).
  3. Cree un nuevo proyecto de Android simple para el lado del cliente (con el código fuente básico como respuesta en su pregunta anterior, lo personalicé desde la fuente original en Google Cloud Messaging - GitHub ).
  4. Ejecute la aplicación cliente, obtendrá el token de registro (significa que su dispositivo se ha registrado correctamente ). Luego, pegue (codifique) este token en la variable CLIENT_REGISTRATION_TOKEN en la aplicación del servidor.
  5. Ejecute la aplicación del servidor y verifique el resultado (la aplicación cliente recibió el mensaje o no)

¡Espero que esto ayude!

P / S: no utilizo ningún archivo appengine-web.xml

He estado luchando con la implementación de GCM durante algunas semanas, pero cómo realmente quiero llegar a entender cómo funciona, decidí dar ''pequeños pasos''.

En primer lugar, como se menciona here , entendí que lo primero que debo hacer es registrar mi dispositivo / aplicación primero debe registrarse con GCM.

Para verificar que pueden enviar y recibir mensajes, las aplicaciones del cliente deben registrarse con GCM. En este proceso, el cliente obtiene un token de registro único.

Me gustaría saber si el procedimiento y el código a continuación representan el código mínimo necesario para realizar dicho registro (el '' código mínimo necesario '' se debe a que cuando aprendí OpenGL ES 2.0 y comencé a tratar con sombreadores, lo vi al tratar con conceptos difíciles / confusos, si comprende el código mínimo necesario, puede comprender luego qué es el código "periférico")

Procedimiento para registrar la aplicación con GCM:

  1. Crea un proyecto en Google Developer Console;

    1. Active la API "Cloud Messaging para Android";
    2. Cree una clave API de servidor en "Credenciales";
    3. Tome nota de la identificación del proyecto;
    4. Tome nota del número del proyecto;
    5. Tome nota de la clave API del servidor;
  2. Crear un proyecto de Android Studio;

    1. Agregue un tipo de módulo "App Engine Backend con CGM";
    2. En la ventana "appengine-web.xml" que se abrirá, escriba el ID de la aplicación y la clave API del servidor.
    3. Cree una actividad principal, utilizando el número de proyecto (SENDER_ID).

Después de hacer todo eso y ejecutar la aplicación, obtuve un token con 152 caracteres. ¿Es todo eso correcto? Teniendo en cuenta que recibí un token, ¿mi dispositivo está registrado en GCM?

appengine-web.xml:

<?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <application>mygcmtest...</application> <version>1</version> <threadsafe>true</threadsafe> <system-properties> <property name="java.util.logging.config.file" value="WEB-INF/logging.properties" /> <property name="gcm.api.key" value="AIza..." /> </system-properties> </appengine-web-app>

Actividad principal:

public class MainActivity extends AppCompatActivity { private final Context mContext = this; private final String SENDER_ID = "319899..."; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getGCMToken(); } private void getGCMToken() { new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... params) { try { InstanceID instanceID = InstanceID.getInstance(mContext); String token = instanceID.getToken(SENDER_ID, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); Log.e("GCM Token", token); } catch (IOException e) { e.printStackTrace(); } return null; } }.execute(); } }

Manifiesto:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.aninha.mygcmtest..." > <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <permission android:name="com.example.gcm.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.example.gcm.permission.C2D_MESSAGE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>