【发布时间】:2016-05-30 08:23:18
【问题描述】:
我希望能够使用 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。我在一个文件中也有三个代表(SINCallClientDelegate、SINCallDelegate 和 SINClientDelegate)。在进行任何调用之前,它会等待 sinchClient 启动。
【问题讨论】:
-
是 teh sinch 客户端和 callclient 分配的变量,它们贯穿整个应用程序生命周期或至少是视图控制器生命周期?此外,您需要开始监听活动连接或支持推送
-
嗨克里斯蒂安,很高兴这么快就收到您的来信。我的问题是,虽然我设置了 sinchClient.delegate = self,但我从未设置 sinchClient.callClient().delegate = self。设置后,我就可以使用该功能了。我想通了并测试了它。工作令人难以置信。顺便说一句,我只是在测试它,因此 sinchClient 变量暂时用于 viewcontroller 生命周期,但我将在应用程序生命周期中使用它来接收来自应用程序内任何位置的调用。感谢您为我调查此事。
标签: ios objective-c swift delegates sinch