如果我使用 CallKit 框架检查正在进行的通话状态,即使我的应用程序没有任何 VOIP 功能,我的应用程序是否会被拒绝?

Will my app be rejected if I use CallKit framework to check status of ongoing call even if my app does not have any VOIP functionality?

我正在开发一款应用程序,该应用程序有一个部分,用户可以在其中点击手机号码拨打手机电话。要拨打电话,我使用以下代码。

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)
            }
        }
    }

这显示了一个带有呼叫或取消选项的提醒。现在当我 select 呼叫选项时,我需要检查正在进行的呼叫的状态。 为此,我使用了 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 上传拒绝? 对此的任何帮助将不胜感激。

一般来说,CallKit.framework 的 CXCallObserver API 可以被任何应用程序使用,无论该应用程序本身是否提供 VoIP 呼叫功能。

但请注意,不能保证您的应用观察到的任何特定调用都是用户根据您的应用打开 tel: URL 决定调用的结果。有可能用户拒绝打开您的应用提供的 tel: URL 打开,而是单独拨打电话或在同一时间段接到来电,您的应用会收到类似的-looking CXCallObserver 无论如何委托回调。无法可靠地区分在您的应用程序外部发起的调用和从您的应用程序发起的调用。