Альтернативные значки приложений в Xamarin.iOS
В этой статье рассматриваются альтернативные значки приложений в Xamarin.iOS.
Apple добавила несколько улучшений в iOS 10.3, которые позволяют приложению управлять своим значком:
ApplicationIconBadgeNumber
— Получает или задает значок приложения в Springboard.SupportsAlternateIcons
— Еслиtrue
у приложения есть альтернативный набор значков.AlternateIconName
— Возвращает имя альтернативного значка, выбранного в данный момент илиnull
если используется первичный значок.SetAlternameIconName
— Используйте этот метод для переключения значка приложения на заданный альтернативный значок.
Добавление альтернативных значков в проект Xamarin.iOS
Чтобы разрешить приложению переключиться на альтернативный значок, необходимо включить коллекцию изображений значков в проект приложения Xamarin.iOS. Эти изображения нельзя добавить в проект с помощью типичного Assets.xcassets
метода, они должны быть добавлены непосредственно в папку Resources .
Выполните следующие действия.
Выберите необходимые изображения значков в папке, выберите все и перетащите их в папку "Ресурсы" в Обозреватель решений:
При появлении запроса нажмите кнопку "Копировать", используйте одно действие для всех выбранных файлов и нажмите кнопку "ОК ":
Папка Resources должна выглядеть следующим образом после завершения.
Изменение файла Info.plist
При добавлении необходимых изображений в папку Resources ключ CFBundleAlternateIcons необходимо добавить в файл Info.plist проекта. Этот ключ определяет имя нового значка и изображения, составляющие его.
Выполните следующие действия.
- В Обозревателе решений дважды щелкните файл Info.plist, чтобы открыть его для редактирования.
- Перейдите в представление исходного кода.
- Добавьте ключ значков пакета и оставьте тип в словаре.
CFBundleAlternateIcons
Добавьте ключ и задайте типсловаря.AppIcon2
Добавьте ключ и задайте типсловаря. Это будет имя нового альтернативного набора значков приложения.CFBundleIconFiles
Добавление ключа и установка типав массив- Добавьте новую строку в
CFBundleIconFiles
массив для каждого файла значка, оставляя расширение и@2x
@3x
суффиксы и т. д. (например100_icon
). Повторите этот шаг для каждого файла, который создает альтернативный набор значков. UIPrerenderedIcon
Добавьте ключ вAppIcon2
словарь, задайте для типалогическое значение и значение No.- Сохраните изменения в файле.
Полученный файл Info.plist должен выглядеть следующим образом после завершения:
Или же, если он открыт в текстовом редакторе:
<key>CFBundleIcons</key>
<dict>
<key>CFBundleAlternateIcons</key>
<dict>
<key>AppIcon2</key>
<dict>
<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>
Управление значком приложения
С помощью изображений значков, включенных в проект Xamarin.iOS и файла Info.plist , разработчик может использовать одну из многих новых функций, добавленных в iOS 10.3, для управления значком приложения.
Свойство SupportsAlternateIcons
UIApplication
класса позволяет разработчику узнать, поддерживает ли приложение альтернативные значки. Например:
// Can the app select a different icon?
PrimaryIconButton.Enabled = UIApplication.SharedApplication.SupportsAlternateIcons;
AlternateIconButton.Enabled = UIApplication.SharedApplication.SupportsAlternateIcons;
Свойство ApplicationIconBadgeNumber
класса позволяет разработчику получить или задать текущий номер значка UIApplication
приложения в Springboard. Значение по умолчанию равно нулю (0). Например:
// Set the badge number to 1
UIApplication.SharedApplication.ApplicationIconBadgeNumber = 1;
AlternateIconName
Свойство UIApplication
класса позволяет разработчику получить имя выбранного альтернативного значка приложения или вернутьnull
, если приложение использует первичный значок. Например:
// Get the name of the currently selected alternate
// icon set
var name = UIApplication.SharedApplication.AlternateIconName;
if (name != null ) {
// Do something with the name
}
Свойство SetAlternameIconName
UIApplication
класса позволяет разработчику изменить значок приложения. Передайте имя значка, чтобы выбрать или null
вернуться на первичный значок. Например:
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);
});
}
Когда приложение запускается и пользователь выбирает альтернативный значок, отобразится оповещение, например следующее:
Если пользователь переключается обратно на первичный значок, отобразится предупреждение, например следующее:
Итоги
В этой статье описано добавление альтернативных значков приложений в проект Xamarin.iOS и их использование внутри приложения.