由于应用程序用户的特定网络设置问题(通常是 WiFi 路由器阻止某些必需内容),Twilio 有时会拒绝工作。当您无法依赖受影响用户的与技术技能时,这可能是一个令人头疼的难题。本项目为您提供了一个在您的应用程序中构建 Twilio 诊断功能的方法,这样您就可以拦截 Twilio 尝试建立通话的详细日志。
TwilioTest 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中:
pod "TwilioTest"
要运行示例项目,克隆存储库,然后首先从 Example 目录运行 `pod install`。
#import <TwilioTest\TwilioTest.h>
TwilioTest twilioTest = [[TwilioTest alloc] init];
// Adjust timeouts if desired
twilioTest.testPageFetchTimeout = 5; // Timeout for fetching Twilio test page
twilioTest.connectionAttemptTimeout = 30; // Timeout for establishing Twilio call
TwilioTest 可以尝试从 Twilio 测试页面 http://clientsupport.twilio.com 捕获 Twilio 功能令牌,因此您无需提供自己的令牌。
[twilioTest performTestWithCompletionHandler:^(NSData *logData, NSError *error) {
if (error) {
// NB: 'error' will be of a custom error type (see TwilioTest.h)
NSLog(@"Twilio test failed with error: %@", error.localizedDescription);
}
else {
NSLog(@"Twilio test passed");
}
NSLog(@"Captured console log of length %zd", logData.length);
}];
由于 Twilio 测试页面是通过 HTTP 提供的,因此您需要在 iOS 9 上为 TwilioTest 配置一个安全异常才能正常工作。您可以通过在 Info.plist 文件中添加以下内容来实现这一点:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>twilio.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
如果您想使用自己的功能令牌和连接参数,可以调用以下方法代替:
- (void)performTestWithCapabilityToken:(NSString *)token
parameters:(NSDictionary *)parameters
completionHandler:(void (^)(NSData *logData, NSError *error))handler;
在这里,'parameters' 是您通常传递给 `TCDevice connect` 函数的字典,可以是 nil。
TwilioTest 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。