[当通话为视频时,在CallKit来电屏幕中显示视频按钮

问题描述 投票:0回答:1

我正在使用以下代码在应用程序中接收视频通话。我的应用程序具有音频和视频通话功能,并且我正在使用linphone + callkit。

- (void)config {
    CXProviderConfiguration *config = [[CXProviderConfiguration alloc]
                                       initWithLocalizedName:[NSBundle.mainBundle objectForInfoDictionaryKey:@"CFBundleName"]];
    config.ringtoneSound = @"notes_of_the_optimistic.caf";

    config.supportsVideo = TRUE;

    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.provider = [[CXProvider alloc] initWithConfiguration:config];
    [self.provider setDelegate:self queue:dispatch_get_main_queue()];
}



- (void)reportIncomingCall:(LinphoneCall *) call withUUID:(NSUUID *)uuid handle:(NSString *)handle video:(BOOL)video
{
    CXCallUpdate *update = [[CXCallUpdate alloc] init];
    update.remoteHandle = [[CXHandle alloc] initWithType:CXHandleTypeGeneric value:handle];
    update.supportsDTMF = TRUE;
    update.supportsHolding = TRUE;
    update.supportsGrouping = TRUE;
    update.supportsUngrouping = TRUE;
    update.hasVideo = video;
    linphone_call_ref(call);
    // Report incoming call to system
    LOGD(@"CallKit: report new incoming call");

    [self.provider reportNewIncomingCallWithUUID:uuid
                                          update:update
                                      completion:^(NSError *error) {
                                          if (error) {
                                              LOGE(@"CallKit: cannot complete incoming call from [%@] caused by [%@]",handle,[error localizedDescription]);
                                              if (   [error code] == CXErrorCodeIncomingCallErrorFilteredByDoNotDisturb
                                                  || [error code] == CXErrorCodeIncomingCallErrorFilteredByBlockList) {
                                                  linphone_call_decline(call,LinphoneReasonBusy); /*to give a chance for other devices to answer*/
                                              } else {
                                                  linphone_call_decline(call,LinphoneReasonUnknown);
                                              }
                                          }
                                          linphone_call_unref(call);
                                      }];
}

[收到来电时,请参阅附件的屏幕截图。现在它显示用于音频和视频通话的相同UI(按钮)。我想在通话为视频时显示视频通话按钮。可以使用callkit吗?如果可能,需要进行哪些更改。提前致谢enter image description here

ios video callkit incoming-call
1个回答
1
投票

没有,不幸的是,无法自定义CallKit来电UI。这就是为什么诸如WhatApp之类的应用程序使用推送通知来通知视频通话,而不是依赖CallKit的原因。

© www.soinside.com 2019 - 2024. All rights reserved.