适用于 iOS 和 tvOS 的 .NET 中的备用应用图标

Apple 有几个 UIApplication API,允许应用管理其图标:

当应用更改其图标 时,示例警报

将备用图标添加到 .NET 项目

若要允许应用切换到备用图标,需要将包含图标图像集合的新 .appiconset 文件夹包含在项目的资产目录中:

  1. 在 Finder 中打开项目的资产目录(Assets.xcassets):

    打开资产目录

  2. 创建现有 AppIcon.appiconset 文件夹的副本:

    复制 appiconset 文件夹

  3. 将复制文件夹中的每个图标替换为匹配大小的新图标:

    创建新图标

  4. 使用 AppIcon 属性将应用图标添加到项目文件:

    <PropertyGroup>
        <AppIcon>AppIcon</AppIcon>
    </PropertyGroup>
    

    注意

    现有项目通常使用 Info.plist 文件中的 XSAppIconAssets 键来指定应用图标 - 这仍然可以使用,但建议改为在项目文件中使用 AppIcon 属性(这样更简单,因为它的值是图标名称,而不是资源路径)。

  5. 使用 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 ())}");
    });
}

当应用运行时,用户选择备用图标时,将显示如下所示的警报:

一个示例警报,当应用更改其图标时

如果用户切换回主图标,将显示如下所示的警报:

当应用更改为主图标时 示例警报

另请参阅