Implementación en iOS

En los siguientes ejemplos, se muestra cómo implementar el ID de instancia en un cliente de iOS. Ten en cuenta que estos ejemplos usan el alcance de GCM, que usarías para administrar tokens para un cliente de iOS para Firebase Cloud Messaging.

Configura tus dependencias de CocoaPods

El ID de instancia usa CocoaPods para instalar y administrar dependencias. Abre una ventana de la terminal y navega a la ubicación del proyecto de Xcode para tu aplicación. Si aún no creaste un Podfile para tu aplicación, sigue estos pasos para crearlo:

pod init

Abre el Podfile que creaste para tu aplicación y agrega lo siguiente:

pod 'FirebaseInstanceId'

Guarda el archivo y ejecuta:

pod install

Esto crea un archivo .xcworkspace para tu aplicación. Usa este archivo para todo el desarrollo futuro de tu aplicación.

Genera un token

Para generar tokens, se requiere un ID de proyecto generado por la Google Developers Console.

NSString *authorizedEntity = PROJECT_ID;
String *scope = kFIRInstanceIDScopeFirebaseMessaging;
NSDictionary *options = @{
  @"apns_token" : <APNS Token data>,
  // 1 if APNS sandbox token else 0
  @"apns_sandbox" : @(1),
};
[[FIRInstanceID instanceID] tokenWithAuthorizedEntity:authorizedEntity
                                                scope:scope
                                              options:options
                                              handler:
                  ^(NSString * _Nullable token, NSError * _Nullable error) {
                      // ...
}];

Administra tokens y IDs de instancia

El ID de instancia te permite borrar y actualizar tokens.

Borra tokens y IDs de instancia

NSString *authorizedEntity = PROJECT_ID; // Project ID
String *scope = kFIRInstanceIDScopeFirebaseMessaging;
FIRInstanceIDDeleteTokenHandler handler = ^void(NSError *error) {
  if (error) {
    // Failed to delete the token. Check error and do an exponential
    // backoff to retry again.
  } else {
    // Successfully deleted the token.
  }
};
[[FIRInstanceID instanceID]
    deleteTokenWithAuthorizedEntity:authorizedEntity
                              scope:scope
                            handler:handler];

También puedes borrar el ID de instancia en sí, en cuyo caso, la próxima vez que llames a getInstance(), obtendrás un ID de instancia nuevo:

[FIRInstanceID instanceID] deleteIDWithHandler:^(NSError *error) {
      if error != nil {
        NSLog(@"Error deleting instance ID: %@", error);
      }
    }];

Tokens de actualización

El servicio de ID de instancia puede crear o regenerar tokens. Cuando esto ocurre, se envía una notificación. Para escuchar esta notificación, agrega un observador para las notificaciones llamadas kFIRInstanceIDTokenRefreshNotification.

[[NSNotificationCenter defaultCenter] addObserver:self
         selector:@selector(tokenRefreshNotification:) 
         name:kFIRInstanceIDTokenRefreshNotification object:nil];

Este observador se debe crear antes de que se cree el token, por ejemplo, antes de llamar a [FIRApp configure]. Para recuperar el token más reciente, llama a [[FIRInstanceID instanceID] token].

Ten en cuenta que, para observar la generación de tokens para Cloud Messaging, hay un delegado específico disponible.