iOS 10.3+
setAlternateIconNameと呼ばれるメソッドがあります。これはiOS10.3で導入されており、アプリのアイコンを変更できますが、これらのアイコンは事前に定義しておく必要があります。これは、アイコンをアプリのバンドルに追加し、で参照する必要があることを意味しますinfo.plist
。
例:
典型的なinfo.plistは次のようになります。
<key>CFBundleIcons</key>
<dict>
<key>CFBundleAlternateIcons</key>
<dict>
<key>alternate_icon_name</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>alternate_icon_file</string>
</array>
<key>UIPrerenderedIcon</key>
<false/>
</dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>default_icon_file</string>
</array>
<key>UIPrerenderedIcon</key>
<false/>
</dict>
</dict>
</dict>
次のようなコードを実装します。
Objective C:
[[UIApplication sharedApplication] setAlternateIconName:@"alternate_icon_name" completionHandler:^(NSError * _Nullable error) {
NSLog(@"Error...");
}];
スウィフト3:
if UIApplication.shared.supportsAlternateIcons
{
UIApplication.shared.setAlternateIconName("alternate_icon_name", completionHandler: { (error) in
print(error ?? "")
})
}
iOS10.3より前
アイコンファイル名はアプリケーションのplistに保存されているため、アイコンファイルを動的に変更することはできません。
。
アプリケーションplistは読み取り専用のアプリケーションバンドルに保存されているため、動的に変更することはできません。
したがって、あなたの要件は不可能です。