2017-12-01 3 views
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의 CXCallObserver API는 해당 앱이 VoIP 기능을 제공하는지 여부에 관계없이 모든 앱에서 사용할 수 있습니다.

그러나 사용자의 앱이 관찰하는 특정 호출이 앱의 tel: URL 열림에 따라 전화를 결정한 결과라고 보장 할 수는 없습니다. 사용자가 앱에서 제공 한 tel: URL을 열지 않아도 같은 기간에 개별적으로 전화를 걸거나 수신 전화가 왔을 때와 비슷하게 앱에 유사한 CXCallObserver 대의 대표자 콜백이 표시됩니다. 앱 외부에서 시작된 통화와 앱에서 시작한 통화를 확실하게 구분할 수 없습니다.

+0

앱 스토어 업로드와 관련하여 저의 의구심을 해소 해 주신 Stuart에게 감사드립니다. 네, 또한 전화 걸기로 만든 전화가 이러한 위임 콜백을 트리거 할 수도 있다는 데 동의합니다. 건배... – AMUL

관련 문제