title: FCM notification is not working in iOS app
body: <p>I am integrating FCM notification and cloud messaging in my app. I have followed exactly same steps mentioned in Firebase doc. Even I have tried with sample code given by FCM. It is just throwing some warnings as:</p>
  
  <p><code>&lt;FIRInstanceID/WARNING&gt; Failed to fetch APNS token Error Domain=com.firebase.iid Code=1001 "The operation couldn’t be completed. and &lt;FIRMessaging/WARNING&gt; FIRMessaging registration is not ready with auth credentials.</code> </p>
  
  <p>My code written in Appdelegate.m is:</p>
  
  <pre><code>- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
      // Register for remote notifications
      if (floor(NSFoundationVersionNumber) &lt;= NSFoundationVersionNumber_iOS_7_1) {
          // iOS 7.1 or earlier
          UIRemoteNotificationType allNotificationTypes =
          (UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge);
          [application registerForRemoteNotificationTypes:allNotificationTypes];
      } else {
          // iOS 8 or later
          // [END_EXCLUDE]
          UIUserNotificationType allNotificationTypes =
          (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge);
          UIUserNotificationSettings *settings =
          [UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil];
          [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
          [[UIApplication sharedApplication] registerForRemoteNotifications];
      }
  
      // [START configure_firebase]
      [FIRApp configure];
      // [END configure_firebase]
  
      // Add observer for InstanceID token refresh callback.
      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tokenRefreshNotification:)
                                                   name:kFIRInstanceIDTokenRefreshNotification object:nil];
      return YES;
  }
  
  // [START receive_message]
  - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
  fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
      // If you are receiving a notification message while your app is in the background,
      // this callback will not be fired till the user taps on the notification launching the application.
      // TODO: Handle data of notification
  
      // Print message ID.
      NSLog(@"Message ID: %@", userInfo[@"gcm.message_id"]);
  
      // Pring full message.
      NSLog(@"%@", userInfo);
  }
  // [END receive_message]
  
  // [START refresh_token]
  - (void)tokenRefreshNotification:(NSNotification *)notification {
      // Note that this callback will be fired everytime a new token is generated, including the first
      // time. So if you need to retrieve the token as soon as it is available this is where that
      // should be done.
      NSString *refreshedToken = [[FIRInstanceID instanceID] token];
      NSLog(@"InstanceID token: %@", refreshedToken);
  
      // Connect to FCM since connection may have failed when attempted before having a token.
      [self connectToFcm];
  
      // TODO: If necessary send token to appliation server.
  }
  // [END refresh_token]
  
  // [START connect_to_fcm]
  - (void)connectToFcm {
      [[FIRMessaging messaging] connectWithCompletion:^(NSError * _Nullable error) {
          if (error != nil) {
              NSLog(@"Unable to connect to FCM. %@", error);
          } else {
              NSLog(@"Connected to FCM.");
          }
      }];
  }
  // [END connect_to_fcm]
  
  - (void)applicationDidBecomeActive:(UIApplication *)application {
      [self connectToFcm];
  }
  
  // [START disconnect_from_fcm]
  - (void)applicationDidEnterBackground:(UIApplication *)application {
      [[FIRMessaging messaging] disconnect];
      NSLog(@"Disconnected from FCM");
  }
  // [END disconnect_from_fcm]
  </code></pre>