試圖註冊一個用戶的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' } ] }
嗨Guven,你能確認你使用的是訪問令牌:https://www.twilio.com/docs/api/rest/access-tokens而不是能力令牌:https://www.twilio.com/文檔/ API /客戶/能力的令牌? –
@MeganSpeir嘿梅根,是的,我可以證實這一點。我也爲訪問令牌添加了IpMessagingGrant。這可能是一個問題,但。 2.9.1 twilio節點沒有VoiceGrant,它只在2.11.0版本中引入。 – Guven