[英]Twilio SDK General error #31000
我們在iOS應用中使用Twilio SDK。 它工作正常,但是有時調用didStopListeningForIncomingConnections回調,錯誤= 31000(“常規錯誤”)。 此后,設備變成一個奇怪的狀態:它似乎在線,但無法調用它。 並且它在設備上顯示“未連接”狀態。
因此,問題是:1.此31000錯誤意味着什么? 2.在這種情況下我們該怎么辦? 如何將設備重新連接到Twilio?
來自Twilio的Megan。
但是,正如您所描述的,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負責將listen
和updateCapabilitiyToken:
方法調度到當前線程以執行,因此可以安全地在didStopListeningForIncomingConnections
直接調用它們。 停止監聽委托方法始終由Grand Central Dispatch的dispatch_get_main_queue()
觸發。
希望這對其他遇到相同一般錯誤的人有所幫助。
這可能是問題,也可能不是問題,我們在開發過程中兩次遇到31000個錯誤,這兩個都是在服務器api上生成JWT的結果。 要明確的是,該錯誤是客戶端上的31000,但這是因為JWT的構造,以及我們希望twilio返回給我們的應用程序的參數。
當將對象傳遞給allow_client_outgoing
或allow_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.