didRegisterForRemoteNotificationsWithDeviceToken调用了两次?

Nor*_*sen 12 push-notification apple-push-notifications ios

有点类似于什么时候调用didRegisterForRemoteNotificationsWithDeviceToken?.

当用户首次安装应用程序并提示是否接受通知时,didRegisterForRemoteNotificationsWithDeviceToken如果用户接受通知,则会调用该应用程序?

我正在registerForRemoteNotificationTypes用户成功登录或创建帐户后拨打电话.

在随后的启动中,didRegisterForRemoteNotificationsWithDeviceToken即使不在registerForRemoteNotificationTypesAppDelegate中调用,也会调用该委托.

如果我按照文档和示例代码:

通过每次启动应用程序时请求设备令牌并将其传递给提供程序,您可以帮助确保提供程序具有设备的当前令牌.

- (void)applicationDidFinishLaunching:(UIApplication *)app {

   // other setup tasks here....
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:...
}
Run Code Online (Sandbox Code Playgroud)

但是,当应用程序启动时请求令牌,代理将被调用两次.

需要几个问题和清晰度:

  1. 对于初始提示,registerForRemoteNotificationTypes必须要求提示才能显示提示?但是,如果我在AppDelegate中手动调用该代理,则会调用该代理两次.这是假设吗?

  2. 如果用户接受初始提示,将didRegisterForRemoteNotificationsWithDeviceToken自动调用?或者我们必须registerForRemoteNotificationTypes在AppDelegate中调用 吗?但是,代表将在未来的发布会上被召集两次?

  3. 如果用户拒绝并稍后通过设置接受它,会发生什么?

UPDATE

0.对于初始提示,registerForRemoteNotificationTypes必须要求提示才能显示提示?但是,如果我在AppDelegate中手动调用该代理,则会调用该代理两次.这是假设吗? 事实并非如此.发现实际上有2个registerForRemoteNotiicationTypes在AppDelegate中制作.

tha*_*rem 7

如果用户接受初始提示,是否会自动调用didRegisterForRemoteNotificationsWithDeviceToken?不,当单击"允许访问"时,您的远程通知注册过程开始,但仅在成功进行APNS注册时才调用didRegisterForRemoteNotificationsWithDeviceToken方法.

如果您的应用程序先前已注册,则调用registerForRemoteNotificationTypes:会导致操作系统立即将设备令牌传递给代理,而不会产生额外的开销

您可以通过检查应用程序状态来确定是否由于用户点击操作按钮而启动了应用程序,或者是否已将通知传递给已在运行的应用程序.在委托的应用程序实现中:didReceiveRemoteNotification:或application:didReceiveLocalNotification:方法,获取applicationState属性的值并对其进行评估.如果值为UIApplicationStateInactive,则用户点击操作按钮; 如果值为UIApplicationStateActive,则应用程序在收到通知时位于最前端.