When iOS device registers for remote notifications, it registers with the Apple Service by calling the method:
registerForRemoteNotificationTypes:
Is that method synchronous or asynchronous?
What happens if the device for some reason cannot obtain token immediatley? Does it call didFailToRegisterForRemoteNotificationsWithError or it just keeps waiting?
According developer.apple.com, registerForRemoteNotificationTypes is asynchronous:
When you send this message, the device initiates the registration process with Apple Push Service. If it succeeds, the application delegate receives a device token in the application:didRegisterForRemoteNotificationsWithDeviceToken: method; if registration doesn’t succeed or failed to receive token, the delegate is informed via the application:didFailToRegisterForRemoteNotificationsWithError: method.