Fixar blocos secundários em Iniciar

Este tópico orienta você nas etapas para criar um bloco secundário para seu aplicativo do Windows e fixá-lo no menu Iniciar.

Screenshot of secondary tiles

Para saber mais sobre os blocos secundários, confira a Visão geral dos blocos secundários.

Adicionar namespace

O namespace do Windows.UI.StartScreen inclui a classe SecondaryTile.

using Windows.UI.StartScreen;

Inicializar o bloco secundário

Os blocos secundários são compostos por alguns componentes principais...

  • TileId: um identificador exclusivo que permite identificar o bloco entre seus outros blocos secundários.
  • DisplayName: o nome que você deseja mostrar no bloco.
  • Argumentos: os argumentos que você deseja transmitir ao seu aplicativo quando o usuário clica no seu bloco.
  • Square150x150Logo: o logotipo necessário, exibido no bloco de tamanho médio (e redimensionado para bloco de tamanho pequeno se nenhum logotipo pequeno for fornecido).

Você DEVE fornecer valores inicializados para todas as propriedades acima, caso contrário receberá uma exceção.

Há uma variedade de construtores que você pode usar, mas usar o construtor que usa tileId, displayName, arguments, square150x150Logo e desiredSize ajuda a garantir que você defina todas as propriedades necessárias.

// Construct a unique tile ID, which you will need to use later for updating the tile
string tileId = "City" + zipCode;

// Use a display name you like
string displayName = cityName;

// Provide all the required info in arguments so that when user
// clicks your tile, you can navigate them to the correct content
string arguments = "action=viewCity&zipCode=" + zipCode;

// Initialize the tile with required arguments
SecondaryTile tile = new SecondaryTile(
    tileId,
    displayName,
    arguments,
    new Uri("ms-appx:///Assets/CityTiles/Square150x150Logo.png"),
    TileSize.Default);

Opcional: adicionar suporte para tamanhos de bloco maiores

Se você for exibir notificações de blocos avançadas em seu bloco secundário, provavelmente desejará permitir que o usuário redimensione seu bloco para ser mais largo ou maior, para poder ver ainda mais do seu conteúdo.

Para habilitar tamanhos de bloco largos e grandes, você precisa fornecer o Wide310x150Logo e Square310x310Logo. Além disso, se possível, você deve fornecer o Square71x71Logo para o tamanho do bloco pequeno (caso contrário, reduziremos o tamanho necessário do Square150x150Logo para o bloco pequeno).

Você também pode fornecer um Square44x44Logo exclusivo, que é opcionalmente exibido no canto inferior direito quando uma notificação está presente. Se você não fornecer um, o Square44x44Logo do seu bloco primário será usado.

// Enable wide and large tile sizes
tile.VisualElements.Wide310x150Logo = new Uri("ms-appx:///Assets/CityTiles/Wide310x150Logo.png");
tile.VisualElements.Square310x310Logo = new Uri("ms-appx:///Assets/CityTiles/Square310x310Logo.png");

// Add a small size logo for better looking small tile
tile.VisualElements.Square71x71Logo = new Uri("ms-appx:///Assets/CityTiles/Square71x71Logo.png");

// Add a unique corner logo for the secondary tile
tile.VisualElements.Square44x44Logo = new Uri("ms-appx:///Assets/CityTiles/Square44x44Logo.png");

Opcional: habilitar a exibição do nome de exibição

Por padrão, o nome de exibição NÃO será mostrado. Para mostrar o nome de exibição em médio/largo/grande, adicione o código a seguir.

// Show the display name on all sizes
tile.VisualElements.ShowNameOnSquare150x150Logo = true;
tile.VisualElements.ShowNameOnWide310x150Logo = true;
tile.VisualElements.ShowNameOnSquare310x310Logo = true;

Opcional: blocos secundários 3D

Você pode aprimorar seu bloco secundário para o Windows Mixed Reality adicionando ativos 3D. Os usuários podem colocar blocos 3D diretamente na página inicial do Windows Mixed Reality, em vez do menu Iniciar, ao usar seu aplicativo em um ambiente de Realidade Misturada. Por exemplo, você pode criar fotosferas de 360° que se vinculam diretamente a um aplicativo visualizador de fotos de 360° ou permitir que os usuários coloquem um modelo 3D de uma cadeira de um catálogo de móveis que abre uma página de detalhes sobre os preços e opções de cores para esse objeto quando selecionado. Para começar, consulte a documentação do desenvolvedor de Realidade Misturada.

Fixar o bloco secundário

Por fim, solicite a fixação do bloco. Observe que isso deve ser chamado de um thread de interface do usuário. Na Área de Trabalho, uma caixa de diálogo será exibida solicitando que o usuário confirme se deseja fixar o bloco.

Importante

Se você for um aplicativo de área de trabalho que usa a ponte de Desktop, primeiro deverá executar uma etapa extra, conforme descrito em Fixar em aplicativos de área de trabalho

// Pin the tile
bool isPinned = await tile.RequestCreateAsync();

// TODO: Update UI to reflect whether user can now either unpin or pin

Verificar se existe um bloco secundário

Se o usuário visitar uma página do seu aplicativo que já foi fixada em Iniciar, você desejará exibir um botão "Desafixar".

Portanto, ao escolher qual botão exibir, você precisará primeiro verificar se o bloco secundário está fixado no momento.

// Check if the secondary tile is pinned
bool isPinned = SecondaryTile.Exists(tileId);

// TODO: Update UI to reflect whether user can either unpin or pin

Desafixando um bloco secundário

Se o bloco estiver fixado no momento e o usuário clicar no botão de desafixar, você desejará desafixar (excluir) o bloco.

// Initialize a secondary tile with the same tile ID you want removed
SecondaryTile toBeDeleted = new SecondaryTile(tileId);

// And then unpin the tile
await toBeDeleted.RequestDeleteAsync();

Atualizando um bloco secundário

Se precisar atualizar os logotipos, o nome de exibição ou qualquer outra coisa no bloco secundário, você poderá usar Request UpdateAsync.

// Initialize a secondary tile with the same tile ID you want to update
SecondaryTile tile = new SecondaryTile(tileId);

// Assign ALL properties, including ones you aren't changing

// And then update it
await tile.UpdateAsync();

Enumerando todos os blocos secundários fixados

Se você precisar descobrir todos os blocos que o usuário fixou, em vez de usar SecondaryTile.Exists, você poderá usar SecondaryTile.FindAllAsync().

// Get all secondary tiles
var tiles = await SecondaryTile.FindAllAsync();

Enviar uma notificação de bloco

Para saber como exibir conteúdo avançado em seu bloco por meio de notificações de bloco, confira Enviar uma notificação de bloco local.