我想开发一个SOS应用程序。当我尝试使用URL ()时,它将显示一个警报,但我的要求是在尝试调用时连接调用,而不需要任何警报或弹出。所以我找到了一个使用CallKit的解决方案。当我在我的应用程序中实现CallKit时,它不请求任何许可,发出的呼叫会被放置,但被调用者不会收到任何调用。有什么解决办法吗?
我已经尝试了下面的代码来连接呼叫。
@IBAction func buttonCallTapped(_ sender: Any) {
let provider = CXProvider(configuration: CXProviderConfiguration(localizedName: "My App"))
provider.setDelegate(self, queue: nil)
let controller = CXCallController()
let transaction = CXTransaction(action: CXStartCallAction(call: UUID(), handle: CXHandle(type: .phoneNumber, value: "\(number)")))
controller.request(transaction, completion: { error in })
DispatchQueue.main.asyncAfter(wallDeadline: DispatchWallTime.now() + 5) {
provider.reportOutgoingCall(with: controller.callObserver.calls[0].uuid, connectedAt: nil)
}
}发布于 2020-03-03 13:16:53
没有用户操作,任何iOS应用程序都无法进行本机调用。
将显示一个带有电话号码的警报,两个按钮将可用"Call“和"Cancel”,这两个按钮是从OS级别出现的。
就像我们显示弹出删除照片应用程序的照片一样。
解决方案
如果您想要实现(是的,它可以使用VoIP服务),但是您可以在app处于活动状态时进行调用(可以在没有用户操作的情况下完成,因为那里有互联网连接)。
注意:接收方也应该支持VoIP.
如何实现VoIP
我们需要IP语音业务的许可来在iPhone设备之间进行呼叫。
VoIP应用程序必须在Xcode项目>功能窗格中启用后台模式。选中“IP语音”复选框
此外,如果您真的想实现CallKit跟随CallKit教程,则只为VoIP应用程序缩进VoIP。
发布于 2020-02-06 14:32:23
您只是不能通过CallKit进行标准的本机调用。CallKit框架,正如文档中明确指出的,用于开发自定义VoIP应用程序,并将它们与本机电话接口集成。
https://stackoverflow.com/questions/60094032
复制相似问题