Описание
VoIP-вызов в делегате pushkit didReceiveIncomingPushWithPayload - работает нормально в фоновом состоянии . Но в выключенном состоянии это не работает, приложение падает на main.m . Даже в состоянии kill метод didReceiveIncomingPushWithPayload не вызывается.
- (void)pushRegistry:(PKPushRegistry *)registry didReceiveIncomingPushWithPayload:(PKPushPayload *)payload forType:(PKPushType)type withCompletionHandler:(void (^)(void))completion
{
NSLog(@"<<<<<<<<<<<<<<************* %s",__PRETTY_FUNCTION__);
NSLog(@"payload.dictionaryPayload = %@",payload.dictionaryPayload);
NSLog(@"UTC payload.dictionaryPayload = %f",[[NSDate date] timeIntervalSince1970]);
if (type == PKPushTypeVoIP) {
//Call kit configration
CXProviderConfiguration *providerConfig = [[CXProviderConfiguration alloc] initWithLocalizedName:@"Push Voip Call"];
providerConfig.supportsVideo = NO;
providerConfig.supportedHandleTypes = [[NSSet alloc] initWithObjects:[NSNumber numberWithInteger:CXHandleTypeEmailAddress], nil];
CXCallUpdate *callUpdate = [CXCallUpdate new];
NSString *uniqueIdentifier = @"Demo call";
CXCallUpdate *update = [[CXCallUpdate alloc] init];
update.remoteHandle = [[CXHandle alloc] initWithType:CXHandleTypeEmailAddress value:uniqueIdentifier];
update.localizedCallerName = uniqueIdentifier;
update.hasVideo = NO;
NSUUID *callId = [NSUUID UUID];
CXProvider *provider = [[CXProvider alloc]initWithConfiguration:providerConfig];
[provider setDelegate:self queue:nil];
[provider reportNewIncomingCallWithUUID:callId update:callUpdate completion:^(NSError * _Nullable error) {
NSLog(@"reportNewIncomingCallWithUUID error: %@",error);
//completion();
}];
completion();
}
}
Я не мог понять, в чем проблема. Пожалуйста, помогите мне разобраться в проблеме.