[英]How to resume a CallKit call on hold
我在我的Objective-C應用程序中使用CallKit。
我可以使用CallKit撥打電話。 如果第二個電話打進來,我成功將其設置為保留。 當我結束第二個通話時,
- (void)provider:(CXProvider *)provider performEndCallAction:(CXEndCallAction *)action
和
- (void)callObserver:(CXCallObserver *)callObserver callChanged:(CXCall *)call
方法確實被調用。
但是
- (void)provider:(CXProvider *)provider performSetHeldCallAction:(CXSetHeldCallAction *)action
方法不會自動調用。
我是否必須手動觸發它,例如通過類似方法
- (void)performHoldCallActionWithUUID:(NSUUID *)uuid onHold:(BOOL)onHold {
//...
CXSetHeldCallAction *holdCallAction = [[CXSetHeldCallAction alloc] initWithCallUUID:uuid onHold:onHold];
CXTransaction *transaction = [[CXTransaction alloc] initWithAction:holdCallAction];
[self.callKitCallController requestTransaction:transaction completion:^(NSError *error) {
//...
}];
}
還是當用戶結束第二次呼叫時,有沒有辦法讓提供商“自動”調用它?
謝謝。
系統僅通知您呼叫已終止(使用UUID)並且呼叫狀態已更改,但不會更改呼叫狀態,您需要手動執行此操作。
系統通過通知您時,保留中的選項退出
- (void)callObserver:(CXCallObserver *)callObserver callChanged:(CXCall *)call
為此,您會收到已更改的呼叫,並且可以訪問呼叫的UUID。 您可以知道該呼叫已結束,並比較UUID以了解該呼叫是否是應用程序的呼叫。 如果:
那么您可以通過以下方式退出保留的通話:
CXSetHeldCallAction *holdCallAction = [[CXSetHeldCallAction alloc] initWithCallUUID:appCallUUID onHold:NO];
CXTransaction *transaction = [[CXTransaction alloc] initWithAction:holdCallAction];
[self.callKitCallController requestTransaction:transaction completion:^(NSError *error) {
//...
}];
我想幫助您更多地編寫代碼,但是我在用手機書寫,所以我不記得如何訪問通話信息。
希望對您有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.