iOS-реализация

Следующие примеры помогут вам реализовать идентификатор экземпляра в клиенте iOS. Обратите внимание, что в этих примерах используется область GCM, которую вы могли бы использовать для управления токенами iOS-клиента для Firebase Cloud Messaging .

Настройте зависимости CocoaPods

Идентификатор экземпляра использует CocoaPods для установки зависимостей и управления ими. Откройте окно терминала и перейдите к местоположению проекта Xcode для вашего приложения. Если вы еще не создали подфайл для своего приложения, создайте его сейчас:

pod init

Откройте подфайл, созданный для вашего приложения, и добавьте следующее:

pod 'FirebaseInstanceId'

Сохраните файл и запустите:

pod install

При этом для вашего приложения будет создан файл .xcworkspace . Используйте этот файл для всей будущей разработки вашего приложения.

Создать токен

Для создания токенов требуется идентификатор проекта, сгенерированный консолью разработчиков Google .

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) {
                      // ...
}];

Управление токенами и идентификаторами экземпляров

Идентификатор экземпляра позволяет удалять и обновлять токены.

Удаление токенов и идентификаторов экземпляров

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

Вы также можете удалить сам идентификатор экземпляра, и в этом случае при следующем вызове getInstance() вы получите новый идентификатор экземпляра:

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

Обновить токены

Служба идентификатора экземпляра может создавать или восстанавливать токены. Когда это произойдет, будет отправлено уведомление. Вы можете прослушивать это уведомление, добавив наблюдателя для уведомлений с именем kFIRInstanceIDTokenRefreshNotification .

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

Этот наблюдатель должен быть создан до создания токена, например, перед вызовом [FIRApp configure] . Последний токен можно получить, вызвав [[FIRInstanceID instanceID] token] .

Обратите внимание, что для наблюдения за генерацией токенов для Cloud Messaging доступен специальный делегат .