Ícones de aplicativos alternativos no Xamarin.iOS

Este artigo aborda o uso de ícones de aplicativos alternativos no Xamarin.iOS.

A Apple adicionou várias melhorias ao iOS 10.3 que permitem que um aplicativo gerencie seu ícone:

  • ApplicationIconBadgeNumber - Obtém ou define o emblema do ícone do aplicativo no Springboard.
  • SupportsAlternateIcons - Se true o aplicativo tiver um conjunto alternativo de ícones.
  • AlternateIconName - Retorna o nome do ícone alternativo atualmente selecionado ou null se estiver usando o ícone principal.
  • SetAlternameIconName - Use este método para alternar o ícone do aplicativo para o ícone alternativo fornecido.

Um alerta de exemplo quando um aplicativo altera seu ícone

Adicionando ícones alternativos a um projeto Xamarin.iOS

Para permitir que um aplicativo alterne para um ícone alternativo, uma coleção de imagens de ícone precisará ser incluída no projeto de aplicativo Xamarin.iOS. Essas imagens não podem ser adicionadas ao projeto usando o método típico Assets.xcassets , elas devem ser adicionadas à pasta Recursos diretamente.

Faça o seguinte:

  1. Selecione as imagens de ícone necessárias em uma pasta, selecione todas e arraste-as para a pasta Recursos no Gerenciador de Soluções:

    Selecione as imagens dos ícones de uma pasta

  2. Quando solicitado, selecione Copiar, Usar a mesma ação para todos os arquivos selecionados e clique no botão OK:

    A caixa de diálogo Adicionar Arquivo à Pasta

  3. A pasta Recursos deve ter a seguinte aparência quando concluída:

    A pasta Recursos deve ter esta aparência

Modificando o arquivo Info.plist

Com as imagens necessárias adicionadas à pasta Recursos, a chave CFBundleAlternateIcons precisará ser adicionada ao arquivo Info.plist do projeto. Essa chave definirá o nome do novo ícone e as imagens que o compõem.

Faça o seguinte:

  1. No Gerenciador de Soluções, clique duas vezes no arquivo Info.plist para abri-lo para edição.
  2. Alterne para o modo de exibição de Código-fonte.
  3. Adicione uma chave de ícones de pacote e deixe o Tipo definido como Dicionário.
  4. Adicione uma CFBundleAlternateIcons chave e defina o Tipo como Dicionário.
  5. Adicione uma AppIcon2 chave e defina o Tipo como Dicionário. Esse será o nome do novo conjunto de ícones de aplicativo alternativo.
  6. Adicionar uma CFBundleIconFiles chave e definir o Tipo como Matriz
  7. Adicione uma nova cadeia de caracteres à CFBundleIconFiles matriz para cada arquivo de ícone, deixando de fora a extensão e os sufixos @2x, @3x, etc. (exemplo 100_icon). Repita esta etapa para cada arquivo que compõe o conjunto de ícones alternativos.
  8. Adicione uma UIPrerenderedIcon chave ao AppIcon2 dicionário, defina o Tipo como Booleano e o valor como Não.
  9. Salve as alterações no arquivo.

O arquivo Info.plist resultante deve ter a seguinte aparência quando concluído:

O arquivo Info.plist concluído

Ou assim se aberto em um editor de texto:

<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>

Gerenciando o ícone do aplicativo

Com as imagens de ícone incluídas no projeto Xamarin.iOS e o arquivo Info.plist configurado corretamente, o desenvolvedor pode usar um dos muitos novos recursos adicionados ao iOS 10.3 para controlar o ícone do aplicativo.

A SupportsAlternateIcons propriedade da UIApplication classe permite que o desenvolvedor veja se um aplicativo oferece suporte a ícones alternativos. Por exemplo:

// Can the app select a different icon?
PrimaryIconButton.Enabled = UIApplication.SharedApplication.SupportsAlternateIcons;
AlternateIconButton.Enabled = UIApplication.SharedApplication.SupportsAlternateIcons;

A ApplicationIconBadgeNumber propriedade da UIApplication classe permite que o desenvolvedor obtenha ou defina o número de selo atual do ícone do aplicativo no Springboard. O valor padrão é zero (0). Por exemplo:

// Set the badge number to 1
UIApplication.SharedApplication.ApplicationIconBadgeNumber = 1;

A AlternateIconName propriedade da UIApplication classe permite que o desenvolvedor obtenha o nome do ícone de aplicativo alternativo selecionado no momento ou retorna null se o aplicativo estiver usando o ícone principal. Por exemplo:

// Get the name of the currently selected alternate
// icon set
var name = UIApplication.SharedApplication.AlternateIconName;

if (name != null ) {
    // Do something with the name
}

A SetAlternameIconName propriedade da classe permite que o desenvolvedor altere o ícone do UIApplication aplicativo. Passe o nome do ícone para selecionar ou null retornar ao ícone principal. Por exemplo:

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

Quando o aplicativo for executado e o usuário selecionar um ícone alternativo, um alerta como o seguinte será exibido:

Um alerta de exemplo quando um aplicativo altera seu ícone

Se o usuário voltar para o ícone principal, um alerta como o seguinte será exibido:

Um alerta de exemplo quando um aplicativo muda para o ícone principal

Resumo

Este artigo abordou a adição de ícones de aplicativos alternativos a um projeto Xamarin.iOS e o uso deles dentro do aplicativo.