我正在使用适用于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。
请提前帮助,谢谢。
答案 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,它应该可以正常工作。
让我知道这是否有帮助。