Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

App icon is not showing in CallKit UI

Tags:

ios

ios10

callkit

I have configured my Provider Configuration for CallKit iOS. In which I have also set 'iconTemplateImageData' for displaying app icon in CallKit UI. But app icon is not showing. It shows a white square box.

enter image description here

Provider Configuration Code:

    CXProviderConfiguration *configuration = [[CXProviderConfiguration alloc] initWithLocalizedName:[NSString stringWithFormat:@"%@\n", _title]];
    configuration.maximumCallGroups = 1;
    configuration.maximumCallsPerCallGroup = 1;
    UIImage *callkitIcon = [UIImage imageNamed:@"AppIcon"];
    configuration.iconTemplateImageData = UIImagePNGRepresentation(callkitIcon);

    _callKitProvider = [[CXProvider alloc] initWithConfiguration:configuration];
    [_callKitProvider setDelegate:self queue:nil];

    _callKitCallController = [[CXCallController alloc] initWithQueue:dispatch_get_main_queue()];

I have used AppIcon images in 'Images.xcassets' with sizes: - 1x: 40*40, 2x: 80*80, 3x: 120*120

Please help why my app icon is not showing.

Thanks in advance.

like image 437
Asif Raza Avatar asked Aug 09 '17 04:08

Asif Raza


2 Answers

This is likely because you are using your AppIcon image, which is a fully opaque image, i.e. no part of that image is transparent or has alpha=0.

To get the desired effect, you have to use a different image which is partly (or mostly) transparent. The native in-call UI will only use the alpha channel of the image you provide, so it ignores colors. I suggest following the example in the Speakerbox sample app and providing a secondary PNG image in your image asset catalog with transparency.

like image 165
Stuart M Avatar answered Nov 11 '22 01:11

Stuart M


You need to use below code in order to set app name and app icon for incoming VOIP calls

let localizedName = NSLocalizedString("App-Name", comment: "Name of application")
let providerConfiguration = CXProviderConfiguration(localizedName: localizedName)
providerConfiguration.iconTemplateImageData = UIImage.init(named: "appicon-Name")?.pngData()

Note: Your app icon must be transparent. result will be like in below image

enter image description here

like image 1
Asad Farooq Avatar answered Nov 11 '22 01:11

Asad Farooq