簡體   English   中英

Twilio SDK一般錯誤#31000

[英]Twilio SDK General error #31000

我們在iOS應用中使用Twilio SDK。 它工作正常,但是有時調用didStopListeningForIncomingConnections回調,錯誤= 31000(“常規錯誤”)。 此后,設備變成一個奇怪的狀態:它似乎在線,但無法調用它。 並且它在設備上顯示“未連接”狀態。

因此,問題是:1.此31000錯誤意味着什么? 2.在這種情況下我們該怎么辦? 如何將設備重新連接到Twilio?

來自Twilio的Megan。

  1. 您可以在此處查看Twilio Client錯誤的含義: https ://www.twilio.com/docs/api/client/errors

但是,正如您所描述的,31000是一個相當模糊且不理想的錯誤消息。 在這種情況下,當應用程序在后台運行時,Twilio功能令牌可能已過期,並且如果僅在接收到31000 generic error時調用listen方法,則可能會導致客戶端SDK導致錯誤重試循環並最終導致應用程序崩潰。

在使用TwilioClient iOS SDK v1.2.5撰寫本文時 ,建議在did-stop-listening回調中使用以下示例代碼:

- (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直接調用它們。 停止監聽委托方法始終由Grand Central Dispatch的dispatch_get_main_queue()觸發。

希望這對其他遇到相同一般錯誤的人有所幫助。

這可能是問題,也可能不是問題,我們在開發過程中兩次遇到31000個錯誤,這兩個都是在服務器api上生成JWT的結果。 要明確的是,該錯誤是客戶端上的31000,但這是因為JWT的構造,以及我們希望twilio返回給我們的應用程序的參數。

當將對象傳遞給allow_client_outgoingallow_client_incoming ,twilio sdk在其JWT的scope屬性中將其全部合並。 它將其添加到看起來像查詢字符串的scope:client:outgoing?appSid= 這意味着它的大小限制為2048。因此,超過此長度會產生31000錯誤。

另外,添加對象似乎並不總是會隱式正確地序列化對象,它還會引入會在其相應的移動SDK(但不會在其Web SDK ...怪異)中產生錯誤的字符,因此我們通過顯式序列化對象來解決此問題。 JSON插入JWT之前。

我希望這兩個示例都能幫助您找到問題所在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM