This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Download Microsoft Edge
More info about Internet Explorer and Microsoft Edge
This article covers using alternate app icons in Xamarin.iOS.
Apple has added several enhancements to iOS 10.3 that allow an app to manage its icon:
ApplicationIconBadgeNumber
- Gets or sets the badge of the app icon in the Springboard.
SupportsAlternateIcons
- If
true
the app has an alternate set of icons.
AlternateIconName
- Returns the name of the alternate icon currently selected or
null
if using the primary icon.
SetAlternameIconName
- Use this method to switch the app's icon to the given alternate icon.
Adding Alternate Icons to a Xamarin.iOS Project
To allow an app to switch to an alternate icon, a collection of icon images will need to be included in the Xamarin.iOS app project. These images cannot be added to the project using the typical
Assets.xcassets
method, they must be added to the
Resources
folder directly.
Do the following:
Select the required icon images in a folder, select all and drag them to the
Resources
folder in the
Solution Explorer
:
When prompted, select
Copy
,
Use the same action for all selected files
and click the
OK
button:
The
Resources
folder should look like the following when completed:
Modifying the Info.plist File
With the required images added to the
Resources
folder, the
CFBundleAlternateIcons
key will need to be added to the project's
Info.plist
file. This key will define the name of the new icon and the images that compose it.
Do the following:
In the
Solution Explorer
, double-click the
Info.plist
file to open it for editing.
Switch to the
Source
view.
Add a
Bundle icons
key and leave the
Type
set to
Dictionary
.
Add a
CFBundleAlternateIcons
key and set the
Type
to
Dictionary
.
Add a
AppIcon2
key and set the
Type
to
Dictionary
. This will be the name of the new alternate app icon set.
Add a
CFBundleIconFiles
key and set the
Type
to
Array
Add a new string to the
CFBundleIconFiles
array for each icon file leaving out the extension and the
@2x
,
@3x
, etc. suffixes (example
100_icon
). Repeat this step for every file that makes up the alternate icon set.
Add a
UIPrerenderedIcon
key to the
AppIcon2
dictionary, set the
Type
to
Boolean
and the value to
No
.
Save the changes to the file.
The resulting
Info.plist
file should look like the following when completed:
Or like this if opened in a text editor:
<key>CFBundleIcons</key>
<key>CFBundleAlternateIcons</key>
<key>AppIcon2</key>
<key>CFBundleIconFiles</key>
<array>
<string>100_icon</string>
<string>114_icon</string>
<string>120_icon</string>
<string>144_icon</string>
<string>152_icon</string>
<string>167_icon</string>
<string>180_icon</string>
<string>29_icon</string>
<string>40_icon</string>
<string>50_icon</string>
<string>512_icon</string>
<string>57_icon</string>
<string>58_icon</string>
<string>72_icon</string>
<string>76_icon</string>
<string>80_icon</string>
<string>87_icon</string>
</array>
<key>UIPrerenderedIcon</key>
<false/>
</dict>
</dict>
</dict>
Managing the App's Icon
With the icon images included in the Xamarin.iOS project and the Info.plist file correctly configured, the developer can use one of many new features added to iOS 10.3 to control the app's icon.
The SupportsAlternateIcons
property of the UIApplication
class allows the developer to see if an app supports alternate icons. For example:
// Can the app select a different icon?
PrimaryIconButton.Enabled = UIApplication.SharedApplication.SupportsAlternateIcons;
AlternateIconButton.Enabled = UIApplication.SharedApplication.SupportsAlternateIcons;
The ApplicationIconBadgeNumber
property of the UIApplication
class allows the developer to get or set the current badge number of the app icon in the Springboard. The default value is zero (0). For example:
// Set the badge number to 1
UIApplication.SharedApplication.ApplicationIconBadgeNumber = 1;
The AlternateIconName
property of the UIApplication
class allows the developer to get the name of the currently selected alternate app icon or it returns null
if the app is using the Primary Icon. For example:
// Get the name of the currently selected alternate
// icon set
var name = UIApplication.SharedApplication.AlternateIconName;
if (name != null ) {
// Do something with the name
The SetAlternameIconName
property of the UIApplication
class allows the developer to change the app icon. Pass the name of the icon to select or null
to return to the primary icon. For example:
partial void UsePrimaryIcon (Foundation.NSObject sender)
UIApplication.SharedApplication.SetAlternateIconName (null, (err) => {
Console.WriteLine ("Set Primary Icon: {0}", err);
partial void UseAlternateIcon (Foundation.NSObject sender)
UIApplication.SharedApplication.SetAlternateIconName ("AppIcon2", (err) => {
Console.WriteLine ("Set Alternate Icon: {0}", err);
When the app is run and the user select an alternate icon, an alert like the following will be displayed:
If the user switches back to the primary icon, an alert like the following will be displayed:
Summary
This article has covered adding alternate app icons to a Xamarin.iOS project and using them inside of the app.
iOSTenThree Sample