次の方法で共有


iOS および tvOS 用 .NET の代替アプリ アイコン

Apple には、アプリがアイコンを管理できるようにするいくつかの UIApplication API があります。

  • UIApplication.SupportsAlternateIcons - アプリに true アイコンの代替セットがある場合。
  • UIApplication.AlternateIconName - 現在選択されている代替アイコンの名前を返します。プライマリ アイコンを使用している場合は null
  • UIApplication.SetAlternateIconName - このメソッドを使用して、アプリのアイコンを特定の代替アイコンに切り替えます。
  • UNUserNotificationCenter.Current.SetBadgeCount - Springboard のアプリ アイコンのバッジ数を設定します (iOS 16 以降および tvOS 16 以降では非推奨)。

アプリがアイコン を変更したときのサンプル アラート

.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 は、バッジ数を設定する前に UNUserNotificationCenter.Current.RequestAuthorization を呼び出すことによって取得できる、iOS 上のユーザーからの承認を必要とします。

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 ())}");
    });
}

アプリが実行され、ユーザーが代替アイコンを選択すると、次のようなアラートが表示されます。

アプリがアイコン を変更したときのサンプル アラート

ユーザーがプライマリ アイコンに戻ると、次のようなアラートが表示されます。

アプリがプライマリ アイコン に変更されたときのサンプル アラート

参照してください