Twilio SDK一般错误#31000

时间:2015-08-18 17:12:19

标签: ios twilio voip

我们在iOS应用中使用Twilio SDK。它工作正常,但有时会调用toStopListeningForIncomingConnections回调,错误= 31000("一般错误")。之后,设备变为奇怪的状态:它似乎在线,但无法调用它。它显示"未连接"在设备上陈述。

所以问题是: 1.这31000错误意味着什么? 在这种情况下我们该怎么做?如何将设备重新连接到Twilio?

2 个答案:

答案 0 :(得分:0)

来自Twilio的梅根在这里。

  1. 您可以在此处查看Twilio客户端的错误含义:https://www.twilio.com/docs/api/client/errors
  2. 然而,31000是一个相当模糊且不太理想的错误消息,正如您所描述的那样。在这种情况下,Twilio功能令牌很可能在应用程序处于后台时已过期,如果您只是在收到31000 generic error时调用listen方法,则可能会导致客户端SDK导致错误重试循环并最终导致应用程序崩溃。

    在您使用TwilioClient iOS SDK v1.2.5撰写本文时,建议您在已停止监听的回调中使用以下示例代码:

    - (void)device:(TCDevice*)device didStopListeningForIncomingConnections:(NSError*)error {
        if ( [self checkCapabilityTokenStillValid] ) {
            // if the token has not yet expired, use the `listen` method of `TCDevice` to resume the listening state
            [self.device listen];
        }
        else {
            // restart all over by requesting a new capability token and initialize/update the `TCDevice` instance again
            [self login];
        }
    }
    

    TwilioClient iOS SDK负责将listenupdateCapabilitiyToken:方法分派给当前线程执行,因此可以直接在didStopListeningForIncomingConnections中调用它们。始终使用dispatch_get_main_queue() Grand Central Dispatch触发了停止监听的委托方法。

    希望如果遇到同样的一般性错误,这可能对其他人有帮助。

答案 1 :(得分:0)

这可能是也可能不是问题,我们在开发过程中遇到过两次31000个错误,两者都是在我们的服务器api上生成JWT的结果。要明确的是客户端的错误是31000,但原因在于JWT的构建,以及我们希望twilio发送回我们的应用程序的params。

当将对象传递给allow_client_outgoingallow_client_incoming时,twilio sdk会在他们的JWT中的scope属性中对此进行汇总。它将它添加到scope:client:outgoing?appSid=,它看起来像一个查询字符串。这意味着它的大小限制为2048.超过此长度会产生31000错误。

另外添加对象似乎并不总是隐式序列化对象,它引入了可能在相应的移动sdks中产生错误的字符(但不是他们的web sdk ......很奇怪)所以我们照顾好了这是通过在将对象插入JWT之前显式地将对象序列化为JSON。

我希望这些例子都可以帮助您追踪问题。