Implementación en Android

Los siguientes ejemplos te ayudarán a implementar el ID de instancia en un cliente de Android. Ten en cuenta que estos ejemplos usan el alcance de GCM, que solo es útil con fines demostrativos, ya que Google Cloud Messaging dejó de estar disponible.

Cómo configurar los Servicios de Google Play

Para escribir tu aplicación cliente, usa el SDK de los Servicios de Google Play, como se describe en Cómo configurar el SDK de los Servicios de Google Play. La biblioteca de Play Services 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 requiere un ID de proyecto que genere Google Play 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 tokens y IDs de instancias

El ID de instancia te permite borrar y actualizar tokens.

Cómo borrar tokens y IDs de instancia

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

También puedes borrar el ID de instancia, incluidos todos los tokens asociados. 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 ID de instancia inicia devoluciones de llamada periódicamente (por ejemplo, cada 6 meses) y solicita que tu app actualice sus tokens. También puede iniciar devoluciones de llamada en los siguientes casos:

  • Hay problemas de seguridad, por ejemplo, problemas de SSL o de la plataforma.
  • La información del dispositivo ya no es válida, por ejemplo, la copia de seguridad y el restablecimiento.
  • El servicio de ID de instancia se ve afectado de otra manera.

Implementa el servicio de objeto de escucha de ID de instancia en tu app para recibir estas callbacks:

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>