iOS 13 (Objective C) 未调用 didRegisterForRemoteNotificationsWithDeviceToken

didRegisterForRemoteNotificationsWithDeviceToken not called for iOS 13 (Objective C)

我正在使用以下代码注册推送通知提醒。

UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
center.delegate = self;
NSLog(@"fapa=1");
[center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error){
    NSLog(@"fapa=error==%@", error);
    if(!error){
        NSLog(@"fapa=registering now");
        dispatch_async(dispatch_get_main_queue(), ^{
            NSLog(@"fapa=registering now 2");
             [[UIApplication sharedApplication] registerForRemoteNotifications];
        });
    }
}];

下面是我拿到token的地方

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

但是问题是此方法不是从 iOS 13 调用的(不确定是仅 iOS 13.4.1 还是所有 iOS 13)。

有没有人知道为什么会这样,或者 Apple 更新了一些东西或者这是一个错误?


抱歉添加了 Swift 标签,但我只是添加了,因为大多数开发人员仅使用 Swift 问题过滤 SO(即使他们知道 Objective C。所以只是为了引起注意,我也添加了 swift。


编辑 1

有点奇怪。

当我从 WIFI 连接到移动网络时,我得到了令牌并 didRegisterForRemoteNotificationsWithDeviceToken 开始工作。

现在,当我再次回到 WIFI 时,RegisterForRemoteNotificationsWithDeviceToken 开始工作了。

这是什么?有人遇到过这个奇怪的问题吗?


编辑 2

我所做的是将上面的代码(注册推送通知)放在一个函数中,并每 5 秒调用一次该函数。 出乎意料的是,我现在得到了token,但是iOS 13以后的token,和之前得到的token不一样了。我需要进一步检查这个问题。一旦我检查,我会post回答这个问题。

但是每 5 秒调用一次注册推送功能就可以了。

我所做的是将上面的代码(注册推送通知)放在一个函数中,并每 5 秒调用一次该函数。 奇怪的是,我现在得到了token,但是iOS 13以后的token,和之前得到的token不一样了。我需要进一步检查这个问题。一旦我检查,我会post回答这个问题。

但每 5 秒调用一次注册推送功能就可以了。

我提出这个答案是因为没有人会理解我上面的编辑 1 就是答案。最好有问题的答案。