2016-05-30 27 views
0

Ich möchte App-To-App mit Sinch anrufen können. Ich habe die Schritte befolgt und den Code in Swift konvertiert. Aus irgendeinem Grund wird die Methode didReceiveIncomingCall nie aufgerufen. Ich werde etwas von meinem Code einfügen, damit Sie sehen können, wie ich den SinchClientSinch didReceiveIncomingCall nie aufgerufen

in meiner viewDidLoad Methode, die ich habe, initiiert habe.

Dann mache ich einen Anruf von Benutzer1 zu Benutzer2 mit den folgenden.

if(clientStarted){ 
    let callClient = sinchClient.callClient() 
    callClient.callUserWithId("user2") 
    sinchCall.delegate = self 
} 

Dies ist mein Delegatmethoden für die SINCallClientDelegate

extension CallViewController: SINCallClientDelegate{ 
    func client(client: SINCallClient!, didReceiveIncomingCall call: SINCall!) { 
    print("GOT ME AN INCOMING CALL") 
    sinchCall = call 
    sinchCall.delegate = self 
    sinchCall.answer() 
    } 
} 

Aus irgendeinem Grund didRecieveIncomingCall das Verfahren wird nie genannt. Manchmal bekomme ich auch folgenden Fehler: WARNUNG: Delegierter für SINCallClient nicht zugewiesen? Der Delegat sollte eingehende Anrufe bearbeiten. (siehe - [SIN allClient Delegieren Sie notifyDelegate fIncomingCall:])

Ich denke, vielleicht könnte es etwas mit sinchClient.startListeningOnActiveConnection() zu tun haben, aber ich bin mir nicht sicher.

paar Dinge zu beachten ist, dass ich weiß, wann mein sinchClient gestartet wird, weil ich darauf in meinem Delegat zu hören. Wenn clientDidStart aufgerufen wird, ändere ich die Variable für clientStarted: Bool. Ich habe auch drei Delegierte in einer Datei (SINCallClientDelegate, SINCallDelegate und SINClientDelegate). Es wartet darauf, dass sinchClient gestartet wird, bevor irgendwelche Anrufe getätigt werden.

+0

sind die Client- und Callclient-zugewiesenen Variablen, die den gesamten App-Lebenszyklus oder zumindest den Viewcontroller-Lebenszyklus durchlaufen? Auch müssen Sie entweder starten, um aktive Verbindung oder Unterstützung push – cjensen

+0

Hey Christian, gut von dir so schnell zu hören. Mein Problem war, dass ich, obwohl ich sinchClient.delegate = self gesetzt habe, nie sinchClient.callClient(). Delegate = self gesetzt habe. Nachdem ich es eingestellt habe, habe ich die Funktion zu arbeiten. Ich habe es herausgefunden und getestet. Funktioniert unglaublich. Übrigens habe ich es gerade getestet, also ist die sinchClient-Variable vorübergehend für den viewcontroller-Lebenszyklus, aber ich werde es für den App-Lebenszyklus haben, Anrufe von überall in der App zu empfangen. Danke, dass Sie sich das für mich angesehen haben. –

Antwort

1

So war meine Lösung so einfach. Ich setze nie die sinchClient.callClient().delegate = self. Bitte lesen Sie die Kommentare zu der Frage.

sinchClient.callClient().delegate = self 
sinchClient.setSupportCalling(true) 
sinchClient.delegate = self 
sinchClient.start() 
sinchClient.startListeningOnActiveConnection()