Implementación en Android

Los siguientes ejemplos te ayudarán a implementar un ID de instancia en una aplicación cliente. Ten en cuenta que estos ejemplos utilizan el alcance de GCM, que es útil solo con fines demostrativos porque Google Cloud Messaging se dejará de estar disponible.

Configura los Servicios de Google Play

Para escribir tu aplicación cliente, usa el SDK de Servicios de Google Play, como se describe en Cómo configurar Google Play SDK de Servicios. La biblioteca de Servicios de Play incluye la biblioteca de Instance ID.

Obtén un ID de instancia

La siguiente línea de código muestra un ID de instancia:

String iid = InstanceID.getInstance(context).getId();

Genera un token

Para generar tokens, se necesita un ID del proyecto generado por el Google Developers Console.

String authorizedEntity = PROJECT_ID; // Project id from Google Developer Console
String scope = "GCM"; // e.g. communicating using GCM, but you can use any
                      // URL-safe characters up to a maximum of 1000, or
                      // you can also leave it blank.
String token = InstanceID.getInstance(context).getToken(authorizedEntity,scope);

Administra los IDs de instancia y tokens

El ID de instancia te permite borrar y actualizar tokens.

Borrar IDs de instancia y tokens

String authorizedEntity = PROJECT_ID;
String scope = "GCM";
InstanceID.getInstance(context).deleteToken(authorizedEntity,scope);

También puedes borrar el ID de la instancia, incluidos todos los tokens. La próxima vez que llames a getInstance(), obtendrás un nuevo ID de instancia:

InstanceID.getInstance(context).deleteInstanceID();
String newIID = InstanceID.getInstance(context).getId();

Tokens de actualización

El servicio de Instance ID inicia devoluciones de llamada de forma periódica (por ejemplo, cada 6 meses) y solicitará que tu app actualice los tokens. También puede iniciar devoluciones de llamada en los siguientes casos:

  • Si hay problemas de seguridad, por ejemplo, problemas de SSL o de plataforma.
  • La información del dispositivo ya no es válida. como copias de seguridad y restablecimiento.
  • De lo contrario, el servicio de Instance ID se ve afectado.

Implementa el servicio de objeto de escucha de Instance ID en tu app para recibir estas alertas. devoluciones de llamada:

public class MyInstanceIDService extends InstanceIDListenerService {
  public void onTokenRefresh() {
    refreshAllTokens();
  }

  private void refreshAllTokens() {
    // assuming you have defined TokenList as
    // some generalized store for your tokens
    ArrayList<TokenList> tokenList = TokensList.get();
    InstanceID iid = InstanceID.getInstance(this);
    for(tokenItem : tokenList) {
      tokenItem.token =
        iid.getToken(tokenItem.authorizedEntity,tokenItem.scope,tokenItem.options);
      // send this tokenItem.token to your server
    }
  }
};

También debes configurar este servicio en el archivo de manifiesto del proyecto:

<service android:name=".MyInstanceIDService" android:exported="false">
  <intent-filter>
        <action android:name="com.google.android.gms.iid.InstanceID"/>
  </intent-filter>
</service>