2016-11-12 44 views
1

試圖註冊一個用戶的Twilio語音客戶端我收到以下錯誤:錯誤推送通知,而註冊爲iOS Twilio語音客戶端

[ERROR VoiceClient] Inside register:deviceToken:completion:, failed to register for Twilio push notifications. Error:Failed to register. Code: 6.

下面是設置:

  • 推送憑證已在Twilio中註冊。 VoIP Push證書已被註冊,並且這些推送只在生產模式下進行。假設應用程序ID是「com.bundle.appIDX」。
  • 已設置服務器端,以便將正確的推送憑據提供給IpMessagingGrant對象。
  • 在客戶端,執行以下一段代碼: VoiceClient.sharedInstance().register(withAccessToken: self.accessToken, deviceToken: self.voipToken)
  • 這會立即失敗,並顯示上述錯誤。
  • 對於TwilioVoiceClient使用version'= 2.0.0-beta4',對於twilio-node服務器端組件使用版本'2.9.1'(https://github.com/twilio/twilio-node/tree/2.9.1)。
  • 嘗試使用「使用此憑據發送到沙盒APN」選項,但沒有結果。
  • 嘗試在客戶端使用開發和設置配置文件爲應用程序ID「com.bundle.appIDX」。

Twilio是否真的支持VoIP推送?如果是的話,這個設置有什麼問題?

謝謝, Guven。

======= 維克多的指導後編輯: 我現在手動創建VoiceGrant。我將關鍵屬性的值設置爲'voice'。這是授予的樣子:

{ 
    outgoing_application_sid: 'APXX', 
    push_credential_sid: 'CRXX', 
    endpoint_id: 'XX' 
} 

仍然收到註冊錯誤。

我自己也嘗試這種格式,因爲這是它的外觀在2.11.0版本:

{ outgoing: { application_sid: 'APXX' }, 
    push_credential_sid: 'CRXX', 
    endpoint_id: 'XX' 
} 

任何想法是哪裏的問題可能是什麼?連接雲代碼以及:

var accessToken = new twilio.AccessToken("ACXX", "SKXX", "PPXX", accessTokenOptions); 

    var voiceGrantConfig = {"outgoingApplicationSid": "APXX", 
           "endpointId": clientName, 
           "pushCredentialSid": "CRXX"}; 

    var voiceGrant = new VoiceGrant(voiceGrantConfig); 
    voiceGrant.key = "voice"; 
    console.log(voiceGrant.toPayload()); 
    accessToken.addGrant(voiceGrant); 

    var token = accessToken.toJwt(); 

編輯2:其實我已經升級到twilio節點2.11.0,仍然得到錯誤。這是生成jwt之前的訪問令牌。

AccessToken { 
    accountSid: 'ACXX', 
    keySid: 'SKXX', 
    secret: 'PPXX', 
    ttl: 86400, 
    identity: undefined, 
    nbf: undefined, 
    grants: 
    [ VoiceGrant { 
     outgoingApplicationSid: 'APXX', 
     outgoingApplicationParams: undefined, 
     pushCredentialSid: 'CRXX', 
     endpointId: 'XX' } ] } 
+1

嗨Guven,你能確認你使用的是訪問令牌:https://www.twilio.com/docs/api/rest/access-tokens而不是能力令牌:https://www.twilio.com/文檔/ API /客戶/能力的令牌? –

+0

@MeganSpeir嘿梅根,是的,我可以證實這一點。我也爲訪問令牌添加了IpMessagingGrant。這可能是一個問題,但。 2.9.1 twilio節點沒有VoiceGrant,它只在2.11.0版本中引入。 – Guven

回答

3

[編輯根據反饋居文]

你需要一個 「聲音」 資助。否則,您的請求將被拒絕給語音產品。您需要在簽名之前手動將該部分添加到JSON中,否則您需要升級到2.11.0版本。具體而言,您的令牌需要如下所示:

{ 
    "sub": "ACxxxx", 
    "iss": "SKxxxx", 
    "grants": { 
    "voice": { 
     "outgoing": { 
     "application_sid": "APxxxx" 
     }, 
     "push_credential_sid": "CRxxxxx" 
    }, 
    "identity": "voice_test" 
    }, 
    "jti": "SKxxxxx", 
    "exp": 1479315711 
} 

請注意,「身份」元素也是如此。這是你的用戶的標識符。通常它的用戶名或系統中用戶記錄的ID。

檢出quickstart app的代碼示例,用於生成正確的令牌(它是Python中的,但應該給你一個如何入門的好主意)。

+0

這正是我所期待的,謝謝Viktor。我對Twilio的支持感到非常失望,至今已有2天沒有迴應。我不認爲這是一個複雜的案例。文檔可以真正改進。 – Guven

+0

嘿Viktor,似乎還有一個問題,我已經更新了我的問題。你可以看一下嗎? – Guven