Implementação no iOS

Os exemplos a seguir ajudarão você a implementar o ID da instância em um cliente iOS. Observe que estes exemplos usam o escopo do GCM, que seria usado para gerenciar tokens de um cliente iOS no Firebase Cloud Messaging.

Configurar as dependências do CocoaPods

O ID da instância usa o CocoaPods para instalar e gerenciar dependências. Abra uma janela do terminal e navegue até o local do projeto Xcode do seu aplicativo. Se você ainda não tiver criado um Podfile para seu aplicativo, crie um agora:

pod init

Abra o Podfile criado para seu aplicativo e adicione o seguinte:

pod 'FirebaseInstanceId'

Salve o arquivo e execute:

pod install

Isso cria um arquivo .xcworkspace para o aplicativo. Use esse arquivo futuramente no desenvolvimento do aplicativo.

Gerar um token

A geração de tokens requer um ID de projeto gerado pelo 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) {
                      // ...
}];

Gerenciar tokens e IDs de instância

Com o ID da instância, é possível excluir e atualizar tokens.

Excluir tokens e IDs de instância

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];

Também é possível excluir o próprio ID da instância. Nesse caso, na próxima vez que você chamar getInstance(), um novo ID será gerado:

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

Tokens de atualização

O serviço de ID da instância pode criar ou gerar tokens novamente. Quando isso ocorrer, uma notificação será enviada. Você pode detectar essa notificação adicionando um observador para elas chamado kFIRInstanceIDTokenRefreshNotification.

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

Esse observador precisa ser criado antes da criação do token, por exemplo, antes de chamar [FIRApp configure]. O token mais recente pode ser recuperado chamando [[FIRInstanceID instanceID] token].

Para observar a geração de tokens do Cloud Messaging, há um delegado específico disponível.