方法didInvalidatePushTokenForType不会调用使用Twilio过期的令牌

我正在使用iOS的Twilio Voice Objective-C快速入门 。 创build访问令牌后,我可以注册TwilioVoice,如下所述: –

#pragma mark - PKPushRegistryDelegate - (void)pushRegistry:(PKPushRegistry *)registry didUpdatePushCredentials:(PKPushCredentials *)credentials forType:(NSString *)type { NSLog(@"pushRegistry:didUpdatePushCredentials:forType:"); if ([type isEqualToString:PKPushTypeVoIP]) { self.deviceTokenString = [credentials.token description]; [[PhoneCallModel sharedInstanse] getAccessTokenResponse:^(NSString *accessToken) { [[TwilioVoice sharedInstance] registerWithAccessToken:accessToken deviceToken:self.deviceTokenString completion:^(NSError *error) { if (error) { NSLog(@"An error occurred while registering: %@", [error localizedDescription]); } else { NSLog(@"Successfully registered for VoIP push notifications."); } }]; }]; } } 

根据Pushkit( PKPushRegistry )方法,我创build了5分钟的令牌

 - (void)pushRegistry:(PKPushRegistry *)registry didInvalidatePushTokenForType:(PKPushType)type 

在令牌过期后应该调用。 但didInvalidatePushTokenForType不调用,尝试了很多次。

我如何检查当前的访问令牌是否已过期,并在“ registerWithAccessToken ”中传递?
我想在当前访问令牌过期后重新注册TwilioVoice和AccessToken。

请帮助,提前谢谢。

Twilio开发者在这里传道。

想要在这里完成这个圈子,因为这个问题也被问到,并且可能会跟进GitHub项目的快速启动应用程序 。 这是Bobie在Programmable Voice SDK团队工作的答案:

当先前由Apple VoIP服务发布的设备令牌已过期或不再有效时,将调用 – (void)pushRegistry:(PKPushRegistry *)registrydidInvalidatePushTokenForType:(PKPushType)types委托方法。 Apple在本文档中提供更多详细信息。

使用Access Token的主要思想是提供“一次性”操作authentication,用于注册请求或打出电话时的信令握手。 也就是说,我们仍然build议您在拨打电话时生成等于或超过1小时的有效令牌。

至于刷新registry,你实际上不必重新注册,除非你有明确的注销(或PushKit令牌已过期)。 该应用程序仍然能够收到来自Twilio的推送通知。

只是为了补充一点,如果你想在你的应用程序中获得自动访问令牌pipe理,那么你可以使用Twilio AccessManager SDK。 这是可编程语音,聊天,video和同步之间共享的通用SDK。 有聊天文档中安装它的说明 。

这个页面然后显示如何使用AccessManager和Chat SDK 。 你可以用可编程语音SDK代替它,但它应该可以工作。

让我知道这是否有帮助。