2017-12-01 7 views
1

私は携帯電話番号をタップして携帯電話をかけることができるセクションから1つのセクションを持つアプリケーションに取り組んでいます。コールするには、次のコードを使用しています。私のアプリケーションにVOIP機能がない場合でも、CallKitフレームワークを使用して進行中のコールのステータスをチェックすると、私のアプリケーションは拒否されますか?

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のアップロードで自分のアプリが拒否されますか? これに関するお手伝いをさせていただきます。

答えて

1

通常、CallKit.frameworkのAPI CXCallObserverは、そのアプリケーションがVoIP呼び出し機能を提供するかどうかにかかわらず、どのアプリでも使用できます。

ただし、あなたのアプリが守っている特定の通話は、アプリの開店に基づいてtel:というURLに基​​づいて電話することを決定したものではありません。ユーザーが開こうとしたtel:のURLを開こうとしなかった可能性があり、その代わりに別途にダイヤルしたり、同じ時間帯に着信を受けたりしても、アプリケーションは同じようにCXCallObserver代理コールバックを受信します。アプリ外で開始されたコールとアプリで開始されたコールを確実に区別することはできません。

+0

App Storeのアップロードに関する疑問を解決してくれてありがとうStuart。はい、私はまた、ダイヤラから行われたコールがこれらのデリゲートコールバックをトリガできることにも同意します。乾杯... – AMUL

関連する問題