我正在开发一个应用程序,该应用程序有一个部分,用户可以在其中点击手机号码进行蜂窝电话。为了进行调用,我使用以下代码。
if let phoneCallURL = URL(string: "tel://(9999999999)") {
let application:UIApplication = UIApplication.shared
if (application.canOpenURL(phoneCallURL)) {
if #available(iOS 10.0, *) {
application.open(phoneCallURL, options: [:], completionHandler: nil)
} else {
// Fallback on earlier versions
application.openURL(phoneCallURL)
}
}
}
这将显示一个警报,其中包含呼叫或取消选项。现在,当我选择呼叫选项时,我需要检查正在进行的呼叫的状态。 为此,我正在使用CallKit框架。
var callObserver = CXCallObserver()
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
callObserver.setDelegate(self, queue: nil)
}
func callObserver(_ callObserver: CXCallObserver, callChanged call: CXCall) {
if call.hasConnected {
}
if call.isOutgoing {
}
if call.hasEnded {
}
if call.isOnHold {
}
}
此委托方法在传出呼叫开始或结束时接收回调。
现在,由于我的应用程序没有任何与VOIP相关的功能,我只想知道是否可以像这样使用CallKit框架来了解呼叫状态。
如果我像这样使用CallKit并且应用程序中没有VOIP功能,我的应用程序是否会被拒绝上传亚马逊应用商店? 对此的任何帮助将不胜感激。
一般来说,CallKit.framework的CXCallObserver
API可以被任何应用程序使用,无论该应用程序本身是否提供VoIP呼叫功能。
但请注意,不能保证你的应用观察到的任何特定调用都是用户根据应用打开的tel:
URL 决定调用的结果。用户可能拒绝打开你的应用提供打开的tel:
URL,而是单独拨打呼叫或在同一时间段内收到传入呼叫,并且你的应用无论如何都会收到外观相似的CXCallObserver
委托回调。无法可靠地区分在应用外部发起的调用和从应用启动的调用。