NSString * nameA = [NSBundle.mainBundle objectForInfoDictionaryKey:@“ CFBundleDisplayName”]CXProviderConfiguration * config = [[CXProviderConfiguration alloc] initWithLocalizedName:nameA];config.supportsVideo = FALSE;config.iconTemplateImageData = UIImagePNGRepresentation([UIImage imageNamed:@“ callkit_logo”]);
NSArray *ar = @[ [NSNumber numberWithInt:(int)CXHandleTypeGeneric] ];
NSSet *handleTypes = [[NSSet alloc] initWithArray:ar];
[config setSupportedHandleTypes:handleTypes];
[config setMaximumCallGroups:2];
[config setMaximumCallsPerCallGroup:1];
self.cxProvider = [[CXProvider alloc] initWithConfiguration:config];
NSDictionary *dict = [payload.dictionaryPayload objectForKey:@"aps"];
NSString * callm = [dict objectForKey:@"callfrom"];
if (callm.length ==0) {
callm = @"CALL BB";
}
CXHandle *callHandle = [[CXHandle alloc] initWithType:CXHandleTypeGeneric value:callm];
CXCallUpdate *callUpdate = [[CXCallUpdate alloc] init];
callUpdate.remoteHandle = callHandle;
callUpdate.supportsDTMF = YES;
callUpdate.supportsHolding = YES;
callUpdate.supportsGrouping = NO;
callUpdate.supportsUngrouping = NO;
callUpdate.hasVideo = NO;
self.uuid = [NSUUID UUID];
[self.cxProvider reportNewIncomingCallWithUUID:self.uuid update:callUpdate completion:^(NSError *error) {
NSLog(@"error1 ----> %@",error);
if (error) {
if (@available(iOS 13.0, *)) {
[self.cxProvider reportCallWithUUID:self.uuid endedAtDate:[NSDate now] reason:CXCallEndedReasonFailed];
} else {
}
}
}];
CXCallController *callController = [[CXCallController alloc] initWithQueue:dispatch_get_main_queue()];
dispatch_async(dispatch_get_main_queue(), ^{
CXEndCallAction *endCallAction = [[CXEndCallAction alloc] initWithCallUUID:self.uuid];
CXTransaction *transaction = [[CXTransaction alloc] initWithAction:endCallAction];
[callController requestTransaction:transaction completion:^(NSError *error) {
NSLog(@"error2 ----> %@",error);
if (@available(iOS 13.0, *)) {
[self.cxProvider reportCallWithUUID:self.uuid endedAtDate:[NSDate now] reason:CXCallEndedReasonRemoteEnded];
} else {
}
}];
});
[self processPush:payload.dictionaryPayload];
dispatch_async(dispatch_get_main_queue(), ^{completion();});
}
---(void)pushRegistry:(PKPushRegistry *)registry didReceiveIncomingPushWithPayload:(PKPushPayload *)payload forType:(PKPushType)type withCompletionHandler:(void(^)(void))completion {NSString ...