Ios VOIP呼叫断开后如何关闭Callkit屏幕
一旦voip呼叫被源或目标断开,我将尝试删除callkit屏幕 我用了这个密码Ios VOIP呼叫断开后如何关闭Callkit屏幕,ios,voip,pjsip,callkit,pushkit,Ios,Voip,Pjsip,Callkit,Pushkit,一旦voip呼叫被源或目标断开,我将尝试删除callkit屏幕 我用了这个密码 CXEndCallAction *endaction = [[CXEndCallAction alloc] initWithCallUUID:[NSUUID UUID]]; CXCallController *callController = [[CXCallController alloc] initWithQueue:dispatch_get_main_queue()]; requestTransaction:[
CXEndCallAction *endaction = [[CXEndCallAction alloc] initWithCallUUID:[NSUUID UUID]];
CXCallController *callController = [[CXCallController alloc] initWithQueue:dispatch_get_main_queue()];
requestTransaction:[CXTransaction transactionWithActions:nil completion:completion]];
但关闭呼叫包是行不通的。有人能帮我解决这个问题吗?您必须将您的
CXTransaction
和CXEndCallAction
传递到您的requestTransaction
中
首先,在initwithcalluid
中,您必须传递当前呼叫nsuid
。然后,您可以在CXCallController
上调用requestTransaction
,并将[CXTransaction Transaction WithActions:@[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");
}
}];
}
您好,这个方法可以工作吗:provider.reportCall(使用:calluid,endedAt:Date(),原因:.remoteEnded)