如何将PushKit的完成处理程序用于reportNewIncomingCallWithUUID

我正在为我的应用程序使用CallKit。

- (void)pushRegistry:(PKPushRegistry *)registry didReceiveIncomingPushWithPayload:(PKPushPayload *)payload forType:(NSString *)type withCompletionHandler:(nonnull void (^)(void))completion
{
    NSDictionary *payloadDict = payload.dictionaryPayload[@"aps"];           

    [self reportIncomingCallFrom:callerName withUUID:self.uuidCallkit completion:^(NSError * _Nullable error) {

    }];
    if (completion) {
        completion();
    }
}

我的问题是:我应该写是否完成然后调用完成,或者直接调用completion();?那么哪个是正确的?

- (void)pushRegistry:(PKPushRegistry *)registry didReceiveIncomingPushWithPayload:(PKPushPayload *)payload forType:(NSString *)type withCompletionHandler:(nonnull void (^)(void))completion
{
    NSDictionary *payloadDict = payload.dictionaryPayload[@"aps"];           

    [self reportIncomingCallFrom:callerName withUUID:self.uuidCallkit completion:^(NSError * _Nullable error) {

    }];

    completion();
}

这是报告来电的方法。

- (void)reportIncomingCallFrom:(NSString *) from withUUID:(NSUUID *)uuid completion:(nullable void (^)(NSError *_Nullable error))completion
{
    CXHandle *callHandle = [[CXHandle alloc] initWithType:CXHandleTypeGeneric value:from];
    CXCallUpdate *callUpdate = [[CXCallUpdate alloc] init];

    callUpdate.remoteHandle = callHandle;
    callUpdate.supportsDTMF = YES;
    callUpdate.supportsHolding = NO;
    callUpdate.supportsGrouping = NO;
    callUpdate.supportsUngrouping = NO;
    callUpdate.hasVideo = NO;

    NSLog(@"income uuid here for income call %@",uuid);

    [self.callKitProvider reportNewIncomingCallWithUUID: uuid update:callUpdate completion:^(NSError *error) {
        if (!error) {
            NSLog(@"Incoming call successfully reported.");
        } else {
            NSLog(@"Failed to report incoming call successfully: %@.",[error localizedDescription]);
        }

        completion(error);
    }];
}

有时我没有收到后台推送。

我想知道我上面的方法是否正确。

rlh834844153 回答:如何将PushKit的完成处理程序用于reportNewIncomingCallWithUUID

在这种情况下,直接调用completion()或检查之前是否不是nil,这是等效的,因为completion已声明为nonnull

因此,您可以直接致电completion(),如果遇到问题,不是因为这个原因。

本文链接:https://www.f2er.com/3022678.html

大家都在问