应用图标未在CallKit界面显示

8
我已经配置了CallKit iOS的提供程序配置。其中,我还设置了“iconTemplateImageData”以在CallKit UI中显示应用程序图标。但是应用程序图标没有显示。它显示为一个白色的正方形框。

enter image description here

提供者配置代码:
    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()];

我在“Images.xcassets”中使用了AppIcon图像,大小如下: 1x: 40*40、2x: 80*80、3x: 120*120。
请帮忙解决我的应用程序图标不显示的问题。
提前感谢。

这个演示应用程序可能会对您有所帮助:https://developer.apple.com/library/content/samplecode/Speakerbox/Introduction/Intro.html - Dhaval Bhadania
我已经看过了。这里他们也使用了相同的方法来设置配置中的AppIcon。例如....... 如果图标掩模图片被解析为UIImage,则providerConfiguration.iconTemplateImageData将被设置为UIImagePNGRepresentation(iconMaskImage)。 - Asif Raza
打开 var iconTemplateImageData: Data? // 图像应该是一个边长为40点的正方形 - Dhaval Bhadania
我知道尺寸应该是40个点,就像我之前解释的那样。我还检查了苹果在上面提供的链接中使用的是和我使用的相同。 - Asif Raza
2个回答

11

这可能是因为您正在使用AppIcon图像,它是完全不透明的图像,即该图像的任何部分都不是透明的或具有alpha=0。

要获得所需的效果,您必须使用一个部分(或大部分)透明的不同图像。本机呼叫UI将仅使用您提供的图像的alpha通道,因此它会忽略颜色。我建议您遵循Speakerbox示例应用程序中的示例并在图像资源目录中提供一个带透明度的辅助PNG图像。


我编辑了我的现有标志,使得只有边框可见,其余部分是透明的。最终结果看起来很酷。谢谢@Stuart M,它在我的这一侧起作用了。你的答案应该被接受。 - AndaluZ

1
您需要使用以下代码来为即将到来的VOIP呼叫设置应用程序名称和应用程序图标。
let localizedName = NSLocalizedString("App-Name", comment: "Name of application")
let providerConfiguration = CXProviderConfiguration(localizedName: localizedName)
providerConfiguration.iconTemplateImageData = UIImage.init(named: "appicon-Name")?.pngData()

注意:您的应用程序图标必须是透明的。结果将如下图所示。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接