2016-07-29 4 views
1

Ich implementiere den Videoanruf von ttilio in meiner iOS-Anwendung. Das Problem ist, dass ich nach einer Möglichkeit suche, zu wissen, wann die Gegenanwendung tot ist, um ihm eine VoIP-Push-Benachrichtigung zu senden.Twilio iOS-Videoanruf: Fehlermeldung "Benutzer ist nicht verfügbar", wenn der Benutzer den Anruf ablehnt

Die Lösung, die ich versuchte zu implementieren war, dass, wenn der Anruf "Benutzer nicht verfügbar" Fehler zurückgibt, dann würde ich meinem Backend VoIP-Benachrichtigung an das Gegenstück zu senden, das Problem mit dieser Lösung ist, dass ich einen Twilio-Fehler gefunden wo manchmal, wenn der Benutzer den Anruf ablehnt, das SDK von Twilio eine falsche Fehlermeldung zurückgibt, die sagt, dass "Benutzer nicht verfügbar ist" statt eines Fehlers mit "Benutzer lehnt den Anruf ab" Nachricht. So kann ich nicht wissen, ob der Benutzer wirklich nicht verfügbar war (um die VoiP-Benachrichtigung zu senden) oder wenn der Benutzer gerade den Anruf zurückgewiesen hat

Wie reproduzieren Sie den Fehler? 1. Verbinden Sie zwei Clients mit fester ID. Zum Beispiel "identity1" und "identity2" 2. Machen Sie einen Anruf von "identity1" zu "identity2" und weisen Sie ihn von "identity2" zurück. Sie erhalten die korrekte Fehlermeldung "Benutzer lehnt den Anruf ab" 3. Schließen Sie die App in "identity2" OHNE CALLING UNLISTEN, nur die App zu töten. 4. Dann starten Sie die App erneut in "identity2" (ändern Sie das Token, wenn Sie wollen, aber lassen Sie die gleiche ID). 5. Machen Sie einen Anruf von "identity1" zu "identity2" und weisen Sie ihn von "identity2" zurück. Sie erhalten die falsche Fehlermeldung "Benutzer ist nicht verfügbar" anstelle von "Benutzer lehnt den Anruf ab".

Das ist das Problem ist wie Twilio würde nicht die alte Client-Instanz entfernen, wenn wir nicht unlisten anrufen. Und wenn ich nicht unterscheiden kann, wenn der Benutzer nicht erreichbar ist oder wenn der Anruf nur abgelehnt wird, kann ich den VoIP-Push nicht senden, wenn es wirklich benötigt wird.

Antwort

0

Um einen eingehenden Anruf zu erhalten, müssen Sie bei jedem Start der App die API listen aufrufen. Es scheint, Sie könnten die App nach listen töten, aber nach dem Neustart listen wurde nicht auf Client aufgerufen. Wenn die entfernte Partei einen ausgehenden Anruf tätigt, erhält sie TWCErrorCodeConversationParticipantNotAvailable.

Sobald der Konversations-Client auf eingehende Anrufe wartet, sollte die Gegenstelle TWCErrorCodeConversationRejected auf Ablehnung erhalten.

Mit anderen Worten, wenn A B nennt, und B nicht hören (also nicht listen auf Client genannt), wird eine Fehlermeldung „Benutzer ist nicht verfügbar“.

The example in Swift:

/* Create an AccessManager - this provides a single place to update your Twilio 
Access Token when using multiple Twilio SDKs */ 
var accessManager = TwilioAccessManager(token:self.accessToken, delegate:self) 

// Create a Conversations Client and listen for IncomingInvites 
var client = TwilioConversationsClient(accessManager: accessManager, delegate: self) 
client!.listen() 


// MARK: TwilioConversationsClientDelegate 

// Selectively handle IncomingInvites based on the originator 
func conversationsClient(conversationsClient: TwilioConversationsClient, 
         didReceiveInvite invite: TWCIncomingInvite) { 
    if (invite.from == "ringo") { 
     invite.reject() 
    } else { 
     /* See the "Specify Local Media Constraints when Creating a 
     Conversation" guide for instructions on constructing LocalMedia */ 
     invite.acceptWithLocalMedia(self.localMedia!) { conversation, error in 
      self.conversation = conversation 
      self.conversation!.delegate = self 
     } 
    } 
} 

Bitte lassen Ich weiß, ob das überhaupt hilft!

+0

Hallo Megan danke für deine Zeit.Nein das ist nicht das Problem.Ich höre wieder zu, wenn die App startet.Auch wenn B an A anruft, dann empfängt A den eingehenden Anruf und kann ihn beantworten was bedeutet, dass A wieder zuhört. Das Problem ist t Wenn ich den Anruf ablehne, erhält B den Fehler "Nicht verfügbar" anstelle des Fehlers "Abgelehnter Anruf". Es ist wie ein Twilio-Bug. Wie sie die letzte Client-Instanz nicht entfernen, wenn ich nicht explizit "Unlisten" anrufe. Es ist wie ein Twilio-Bug. Wie sie die letzte Clientinstanz nicht entfernen, wenn ich nicht explizit "Unlisten" anrufe –

Verwandte Themen