Sinch确实收到了呼叫从未打过电话

时间:2016-05-30 08:23:19

标签: ios objective-c swift delegates sinch

我希望能够使用Sinch拨打App-To-App。我已按照步骤将代码转换为Swift。由于某种原因,永远不会调用方法didReceiveIncomingCall。我将粘贴一些代码,以便您可以看到我如何启动SinchClient

我的viewDidLoad方法。

sinchClient = Sinch.clientWithApplicationKey("key", applicationSecret: "secret", environmentHost: "sandbox.sinch.com", userId: "idOfUser")

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

然后我使用以下方法从user1拨打电话给user2。

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

这是我SINCallClientDelegate

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

由于某种原因,方法didRecieveIncomingCall永远不会被调用。有时我也会收到以下错误: 警告:未分配SINCallClient代表?代表应处理来电。 (参见 - [SIN allClient Delegate notifyDelegate fIncomingCall:])

我想也许它可能与sinchClient.startListeningOnActiveConnection()有关,但我不确定。

需要注意的是,我确实知道我的sinchClient何时启动,因为我在我的代表中听取了它。调用clientDidStart时,我会更改clientStarted: Bool的变量。我在一个文件中也有三​​个代表(SINCallClientDelegateSINCallDelegateSINClientDelegate)。它等待sinchClient在进行任何调用之前启动。

1 个答案:

答案 0 :(得分:2)

所以我的解决方案非常简单。我从未设置sinchClient.callClient().delegate = self。请阅读有关该问题的评论。

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