CallKit - 在最近通话列表中显示去电
CallKit - displaying outgoing call into recent call list
我正在实施一个 VoIP 应用程序,在那里我处理了远程方的来电,例如
- (NSUUID *)reportIncomingCallWithContactIdentifier:(NSString *)identifier name:(NSString *)name telNumber:(NSString *)telnum completion:(ADCallKitManagerCompletion)completion {
NSUUID *callUUID = [NSUUID UUID];
CXCallUpdate *callUpdate = [[CXCallUpdate alloc] init];
//callUpdate.callerIdentifier = identifier;
callUpdate.localizedCallerName = name;
callUpdate.supportsHolding = NO;
callUpdate.supportsUngrouping = NO;
callUpdate.supportsGrouping = NO;
callUpdate.remoteHandle = [[CXHandle alloc] initWithType:CXHandleTypePhoneNumber value:telnum];
[self.provider reportNewIncomingCallWithUUID:callUUID update:callUpdate completion:completion];
return callUUID;
}
因此,来电显示在最近的 phone 通话列表中。但是当我拨出电话时,该号码没有显示在最近通话列表中(系统的 phone 应用程序)。当前实施:
- (NSUUID *)reportOutgoingCallContactIdentifier:(NSString *)identifier destination:(NSString *)name telNumber:(NSString *)telnum completion:(ADCallKitManagerCompletion)completion {
NSUUID *callUUID = [NSUUID UUID];
//MARK::change in constructor, defined new handler
CXHandle *handle = [[CXHandle alloc] initWithType:CXHandleTypePhoneNumber value:telnum];
CXStartCallAction *action = [[CXStartCallAction alloc] initWithCallUUID:callUUID handle:handle];
action.contactIdentifier = identifier;
action.destination = name;
[self.callController requestTransaction:[CXTransaction transactionWithActions:@[action]] completion:^(NSError * _Nullable error) {
NSLog(@"error %@",[error description]);
}];
return callUUID;
}
我需要知道如何为任何拨出呼叫更新远程处理程序,以便它显示在远程 phone 呼叫列表中。
谢谢:)
您需要创建一个 CXStartCallAction 并使用此操作请求一个 CXTransaction,以便您的 reportOutgoingCall 工作。
对于去电,在执行 requestTransaction
后立即使用 reportCallWithUUID
更新呼叫即可。但我不确定这是否是正确的方法,因为 reportCallWithUUID
用于更新正在进行的通话中的任何更改。
- (NSUUID *)reportOutgoingCallContactIdentifier:(NSString *)identifier destination:(NSString *)name telNumber:(NSString *)telnum completion:(ADCallKitManagerCompletion)completion {
NSUUID *callUUID = [NSUUID UUID];
//MARK::change in constructor, defined new handler
CXHandle *handle = [[CXHandle alloc] initWithType:CXHandleTypePhoneNumber value:telnum];
CXStartCallAction *action = [[CXStartCallAction alloc] initWithCallUUID:callUUID handle:handle];
action.contactIdentifier = identifier;
action.destination = name;
[self.callController requestTransaction:[CXTransaction transactionWithActions:@[action]] completion:^(NSError * _Nullable error) {
NSLog(@"error %@",[error description]);
}];
CXCallUpdate *callUpdate = [[CXCallUpdate alloc] init];
[callUpdate setRemoteHandle:[[CXHandle alloc] initWithType:CXHandleTypePhoneNumber value:telnum]];
callUpdate.localizedCallerName = @"NAME";
[_provider reportCallWithUUID:callUUID updated:callUpdate];
return callUUID;
}
我正在实施一个 VoIP 应用程序,在那里我处理了远程方的来电,例如
- (NSUUID *)reportIncomingCallWithContactIdentifier:(NSString *)identifier name:(NSString *)name telNumber:(NSString *)telnum completion:(ADCallKitManagerCompletion)completion {
NSUUID *callUUID = [NSUUID UUID];
CXCallUpdate *callUpdate = [[CXCallUpdate alloc] init];
//callUpdate.callerIdentifier = identifier;
callUpdate.localizedCallerName = name;
callUpdate.supportsHolding = NO;
callUpdate.supportsUngrouping = NO;
callUpdate.supportsGrouping = NO;
callUpdate.remoteHandle = [[CXHandle alloc] initWithType:CXHandleTypePhoneNumber value:telnum];
[self.provider reportNewIncomingCallWithUUID:callUUID update:callUpdate completion:completion];
return callUUID;
}
因此,来电显示在最近的 phone 通话列表中。但是当我拨出电话时,该号码没有显示在最近通话列表中(系统的 phone 应用程序)。当前实施:
- (NSUUID *)reportOutgoingCallContactIdentifier:(NSString *)identifier destination:(NSString *)name telNumber:(NSString *)telnum completion:(ADCallKitManagerCompletion)completion {
NSUUID *callUUID = [NSUUID UUID];
//MARK::change in constructor, defined new handler
CXHandle *handle = [[CXHandle alloc] initWithType:CXHandleTypePhoneNumber value:telnum];
CXStartCallAction *action = [[CXStartCallAction alloc] initWithCallUUID:callUUID handle:handle];
action.contactIdentifier = identifier;
action.destination = name;
[self.callController requestTransaction:[CXTransaction transactionWithActions:@[action]] completion:^(NSError * _Nullable error) {
NSLog(@"error %@",[error description]);
}];
return callUUID;
}
我需要知道如何为任何拨出呼叫更新远程处理程序,以便它显示在远程 phone 呼叫列表中。
谢谢:)
您需要创建一个 CXStartCallAction 并使用此操作请求一个 CXTransaction,以便您的 reportOutgoingCall 工作。
对于去电,在执行 requestTransaction
后立即使用 reportCallWithUUID
更新呼叫即可。但我不确定这是否是正确的方法,因为 reportCallWithUUID
用于更新正在进行的通话中的任何更改。
- (NSUUID *)reportOutgoingCallContactIdentifier:(NSString *)identifier destination:(NSString *)name telNumber:(NSString *)telnum completion:(ADCallKitManagerCompletion)completion {
NSUUID *callUUID = [NSUUID UUID];
//MARK::change in constructor, defined new handler
CXHandle *handle = [[CXHandle alloc] initWithType:CXHandleTypePhoneNumber value:telnum];
CXStartCallAction *action = [[CXStartCallAction alloc] initWithCallUUID:callUUID handle:handle];
action.contactIdentifier = identifier;
action.destination = name;
[self.callController requestTransaction:[CXTransaction transactionWithActions:@[action]] completion:^(NSError * _Nullable error) {
NSLog(@"error %@",[error description]);
}];
CXCallUpdate *callUpdate = [[CXCallUpdate alloc] init];
[callUpdate setRemoteHandle:[[CXHandle alloc] initWithType:CXHandleTypePhoneNumber value:telnum]];
callUpdate.localizedCallerName = @"NAME";
[_provider reportCallWithUUID:callUUID updated:callUpdate];
return callUUID;
}