方法didInvalidatePushTokenForType未使用Twilio调用令牌过期

时间:2017-07-26 10:07:55

标签: ios twilio callkit pushkit

我正在使用适用于iOS的Twilio Voice Objective-C快速入门。我可以在创建访问令牌后注册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 )方法创建了5分钟的令牌

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

应在令牌过期后调用。但是 didInvalidatePushTokenForType 没有调用,多次尝试过。

如何检查当前访问令牌是否已过期,传入' registerWithAccessToken '?
我想在当前访问令牌过期后重新注册TwilioVoice和AccessToken。

请提前帮助,谢谢。

1 个答案:

答案 0 :(得分:2)

Twilio开发者传道者在这里。

想在这里完成这个圈子,this question was also asked and may have follow up on the GitHub project for the quickstart application。以下是Bobie在可编程语音SDK团队工作的答案:

  

- (void)pushRegistry:(PKPushRegistry *)注册表didInvalidatePushTokenForType :( PKPushType)类型委托方法在Apple VoIP服务先前发布的设备令牌已过期或不再有效时被调用。 Apple在本文档中提供了更多详细信息。

     

使用访问令牌的主要思想是为拨打电话时提供“一次性”操作认证,用于注册请求或信令握手。话虽如此,我们仍然建议您在拨打电话时生成到期时间等于或长于1小时的访问令牌。

     

至于刷新注册表,除非您明确注销(或者PushKit令牌已过期),否则您实际上不必重新注册。该应用程序仍然可以从Twilio接收推送通知。

只是为了补充一点,如果您想在应用程序中获得自动访问令牌管理,那么您可以使用Twilio AccessManager SDK。这是可编程语音,聊天,视频和同步之间共享的常见SDK。有instructions for installing it in the Chat documentation

然后,此页面会显示how to use the AccessManager with the Chat SDK。您可以替换可编程语音SDK,它应该可以正常工作。

让我知道这是否有帮助。