Apple 有几个 UIApplication API,允许应用管理其图标:
-
UIApplication.SupportsAlternateIcons - 如果
true
应用具有一组备用图标。 -
UIApplication.AlternateIconName - 返回当前选定的备用图标的名称,如果使用的是主图标则返回
null
。 - UIApplication.SetAlternateIconName - 使用此方法将应用的图标切换到给定的备用图标。
-
UNUserNotificationCenter.Current.SetBadgeCount
- 在主屏幕中设置应用图标的徽章数量(在 iOS 16+ 和 tvOS 16+ 中已弃用)。
当应用更改其图标 时,
将备用图标添加到 .NET 项目
若要允许应用切换到备用图标,需要将包含图标图像集合的新 .appiconset
文件夹包含在项目的资产目录中:
在 Finder 中打开项目的资产目录(Assets.xcassets):
创建现有
AppIcon.appiconset
文件夹的副本:将复制文件夹中的每个图标替换为匹配大小的新图标:
使用
AppIcon
属性将应用图标添加到项目文件:<PropertyGroup> <AppIcon>AppIcon</AppIcon> </PropertyGroup>
注意
现有项目通常使用
Info.plist
文件中的XSAppIconAssets
键来指定应用图标 - 这仍然可以使用,但建议改为在项目文件中使用AppIcon
属性(这样更简单,因为它的值是图标名称,而不是资源路径)。使用
AlternativeAppIcons
项组将备用图标添加到项目文件:<ItemGroup> <AlternativeAppIcon Include="AlternativeAppIcons" /> </ItemGroup>
管理应用的图标
使用 .NET 项目中包含的图标图像,开发人员可以采用以下方法来控制应用的图标。
UIApplication 类的 SupportsAlternateIcons 属性允许开发人员查看应用是否支持备用图标。 例如:
// Can the app select a different icon?
primaryIconButton.Enabled = UIApplication.SharedApplication.SupportsAlternateIcons;
alternateIconButton.Enabled = UIApplication.SharedApplication.SupportsAlternateIcons;
UIApplication 类的 ApplicationIconBadgeNumber 属性允许开发人员获取或设置 Springboard 中应用程序图标的当前徽章数。 默认值为零(0)。 例如:
// Set the badge number to 1
var badgeCount = 1;
UNUserNotificationCenter.Current.SetBadgeCount (badgeCount, (error) => {
Console.WriteLine ($"Set badge count to {badgeCount}: {(error is null ? "successfully" : error.ToString ())}");
}
注意
UNUserNotificationCenter.SetBadgeCount
需要在 iOS 上获得用户授权,授权可以在设置应用图标标记计数之前,通过调用 UNUserNotificationCenter.Current.RequestAuthorization
来获取。
UIApplication 类的 AlternateIconName 属性允许开发人员获取当前选定的备用应用图标的名称,或者如果应用正在使用主图标,它将返回 null
。 例如:
// Get the name of the currently selected alternate
// icon set
var name = UIApplication.SharedApplication.AlternateIconName;
if (name != null ) {
// Do something with the name
}
UIApplication 类的 SetAlternameIconName 属性允许开发人员更改应用图标。 输入图标名称以选择图标,或输入 null
返回到主图标。 例如:
void UsePrimaryIcon (Foundation.NSObject sender)
{
UIApplication.SharedApplication.SetAlternateIconName (null, (error) => {
Console.WriteLine ($"Set Primary Icon: {(error is null ? "successfully" : error.ToString ())}");
});
}
void UseAlternateIcon (Foundation.NSObject sender)
{
UIApplication.SharedApplication.SetAlternateIconName ("AlternateAppIcons", (error) => {
Console.WriteLine ($"Set Alternate Icon: {(error is null ? "successfully" : error.ToString ())}");
});
}
当应用运行时,用户选择备用图标时,将显示如下所示的警报:
如果用户切换回主图标,将显示如下所示的警报:
当应用更改为主图标时