如何在VOIP呼叫断开后关闭Callkit屏幕
问题描述:
我试图在我的voip呼叫被源或目的地断开连接后删除callkit屏幕。如何在VOIP呼叫断开后关闭Callkit屏幕
我用这个代码
CXEndCallAction *endaction = [[CXEndCallAction alloc] initWithCallUUID:[NSUUID UUID]];
CXCallController *callController = [[CXCallController alloc] initWithQueue:dispatch_get_main_queue()];
requestTransaction:[CXTransaction transactionWithActions:nil completion:completion]];
但它不工作,关闭callkit。任何人都可以帮我解决这个问题吗?
答
您必须将您的CXTransaction
与CXEndCallAction
合并为您的requestTransaction
。
首先在initWithCallUUID
你必须通过你目前的电话NSUUID
。那么你可以拨打requestTransaction
在你的CXCallController
并通过[CXTransaction transactionWithActions:@[endaction]
进入它,而不是你所做的nil
。
CXEndCallAction *endaction = [[CXEndCallAction alloc] initWithCallUUID:[NSUUID UUID]]; // your current call UUID
CXCallController *callController = [[CXCallController alloc] initWithQueue:dispatch_get_main_queue()];
[callController requestTransaction:[CXTransaction transactionWithActions:@[endaction]] completion:completion];
答
您可以在通话断开方法中使用以下方法。
@property (nonatomic, strong) CXCallController *callKitCallController;
- (void)performEndCallActionWithUUID:(NSUUID *)uuid {
if (uuid == nil) {
return;
}
CXEndCallAction *endCallAction = [[CXEndCallAction alloc] initWithCallUUID:uuid];
CXTransaction *transaction = [[CXTransaction alloc] initWithAction:endCallAction];
[self.callKitCallController requestTransaction:transaction completion:^(NSError *error) {
if (error) {
NSLog(@"EndCallAction transaction request failed: %@", [error localizedDescription]);
}
else {
NSLog(@"EndCallAction transaction request successful");
}
}];
}