我正在开发一个应用程序,其中有一个部分,用户可以通过该部分点按手机号码进行手机通话。要拨打电话,我正在使用以下代码。
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功能,我的应用程序会因Appstore上传而被拒绝吗? 对此的任何帮助将不胜感激。
答案 0 :(得分:1)
一般情况下,任何应用都可以使用CallKit.framework的CXCallObserver
API,无论该应用是否自行提供VoIP通话功能。
但请注意,我们无法保证您的应用所观察到的任何特定通话都是用户根据您的应用打开tel:
网址决定拨打电话的结果。用户可能拒绝打开您的应用提供的tel:
网址,而是单独拨打电话或在同一时间段内接听来电,您的应用会看到类似的CXCallObserver
1}}无论如何委托回调。无法可靠地区分在您的应用外发起的通话和从您的应用启动的通话。