Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Solicitação de atualização do aplicativo usando Cimbalino Windows Phone Toolkit

From Wiki
Jump to: navigation, search

Este artigo explica como criar um simples "Verificar por atualizações" que notifica o utilizador da última versão da aplicação.

SignpostIcon XAML 40.png
WP Metro Icon WP8.png
Article Metadata

Exemplo de código
Testado com
SDK: Windows Phone 8.0 SDK
Aparelho(s): Nokia Lumia 820, Nokia Lumia 920

Compatibilidade
Plataforma(s):
Windows Phone 8
Dependencies: Cimbalino Windows Phone Toolkit

Artigo
Tradução:
Por saramgsilva
Última alteração feita por hamishwillee em 18 Nov 2013

Contents

Introdução

Este artigo explica como criar um simples "Verificar por atualizações"" que notifica o utilizador da última versão da aplicação. Isso é útil porque incentiva os utilizadores a atualizar as suas aplicações, mesmo se eles ignorarem as notificações do sistema para fazê-lo, reduzindo assim o número de pessoas que utilizam versões mais antigas, menos funcionais e menos estável.


O código de exemplo compara a versão instalada da aplicação com a versão atualmente disponível no mercado. Se houver uma nova versão disponível, o utilizador será alertado e levado para a página de mercado da aplicação. O exemplo tem código adicional para determinar se o utilizador já tiver sido solicitado a atualizar a aplicação, e para controlar a taxa em que eles devem ser lembrados, se optou por ignorar um pedido de atualização.

Check for update screenshot.png

Note.pngNote: O artigo Como verificar atualizações dentro da própria aplicação explica a partir de primeiros princípios como o Cimbalino Windows Phone Toolkit determina se uma atualização é necessária.


Pré-requisitos

O único pré-requisito para este exemplo é que você vai precisar instalar o excelente "Cimbalino Windows Phone Toolkit". Isso pode ser feito usando nuget ou pode ser baixado a partir de aqui (para mais informações, consulte Como instalar os pacotes Cimbalino Windows Phone Toolkit).


Configurando o ficheiro de manifesto

Existem algumas coisas que você precisa para configurar no arquivo de manifesto do aplicativo.Em primeiro lugar você vai precisar para assegurar que o "ProductID" no manifesto coincide com a App ID do seu aplicativo publicado (sso pode ser encontrado na aba de detalhes da sua aplicação no portal Windows Phone Developer Dashboard).Você também precisa certificar-se de que atualiza o número da versão.


Criando a classe Update Reminder

A classe ApplicationUpdateReminder atua como um wrapper para os serviços utilizados para verificar o mercado para atualizações, e o código que define o comportamento re-perguntar.


Adicione esta classe ao seu projeto do Windows Phone.

 public class ApplicationUpdateReminder
{
 
public string CurrentVersion { get; set; }
public int? RecurrencePerUsageCount { get; set; }
public string MessagePrompt { get; set; }
public string MessageTitle { get; set; }
 
public int UpdateRejectedCount
{
get
{
return _rejectCount;
}
}
 
private int _usageCount = 0;
private int _rejectCount = 0;
private string _MessagePrompt;
private string _MessageTitle;
private const string LAUNCH_COUNT = "LAUNCH_COUNT";
private const string REJECT_UPDATE_COUNT = "REJECT_UPDATE_COUNT";
private const string MESSAGE_PROMPT = "Do you want to install the new version now?";
private const string MESSAGE_TITLE = "Update Available";
 
public ApplicationUpdateReminder()
{
LoadState();
}
 
private void LoadState()
{
this._usageCount = AppSettings.Read<int>(LAUNCH_COUNT, 0);
_usageCount++;
 
this._rejectCount = AppSettings.Read<int>(REJECT_UPDATE_COUNT, 0);
 
}
 
private void StoreState()
{
AppSettings.Write(LAUNCH_COUNT, _usageCount);
 
AppSettings.Write(REJECT_UPDATE_COUNT, _rejectCount);
}
 
public void Notify()
{
if (RecurrencePerUsageCount.HasValue)
{
if (_usageCount >= RecurrencePerUsageCount.Value)
{
_usageCount = 0; //reset because check has been fired;
CheckForUpdates();
}
}
else
{
CheckForUpdates();
}
 
StoreState();
}
 
 
private async void CheckForUpdates()
{
try
{
var _informationService = new MarketplaceInformationService();
var _applicationManifestService = new ApplicationManifestService();
var result = await _informationService.GetAppInformationAsync();
var appInfo = _applicationManifestService.GetApplicationManifest();
Version myVersion;
 
if (String.IsNullOrEmpty(CurrentVersion))
{
myVersion = new Version(appInfo.App.Version);
}
else
{
myVersion = new Version(CurrentVersion);
}
 
 
var updatedVersion = new Version(result.Entry.Version);
 
 
if (String.IsNullOrEmpty(MessageTitle))
{
_MessageTitle = MESSAGE_TITLE;
}
else
{
_MessageTitle = MessageTitle;
}
 
 
if (String.IsNullOrEmpty(MessagePrompt))
{
_MessagePrompt = MESSAGE_PROMPT;
}
else
{
_MessagePrompt = MessagePrompt;
}
 
 
if (updatedVersion > myVersion)
{
if (MessageBox.Show(_MessagePrompt, _MessageTitle, MessageBoxButton.OKCancel) == MessageBoxResult.OK)
{
new MarketplaceDetailTask().Show();
}
else
{
_rejectCount++;
}
 
}
}
catch (Exception ex)
{
//Log the error somehow
 
}
}
 
public void ForceCheckForUpdates()
{
CheckForUpdates();
}
}

Configurando a classe lembrete

Agora precisamos configurar o lembrete para o utilizador. Em primeiro lugar, adicionar uma propriedade pública para a ApplicationUpdateReminder class em 'App.xaml.cs':

 public ApplicationUpdateReminder updateReminder;

Em seguida, adicione o seguinte código para o construtor da classe App:

  updateReminder = new ApplicationUpdateReminder();
updateReminder.RecurrencePerUsageCount = 3;

Este irá verificar se há atualizações a cada terceira vez que a aplicação é executada.


Verificando atualizações

O código para verificação da aplicação agora é bastante simples. Em seu construtor de página, adicione um dos seguintes trechos de código:

  //this will use the RecurrencePerUsageCount
(App.Current as App).updateReminder.Notify();
 
// this will ignore RecurrencePerUsageCount
(App.Current as App).updateReminder.ForceCheckForUpdates();


Código Fonte

O código fonte pode ser obtido aqui File:CheckForUpdatesSource.zip

Sumário

Esta é uma maneira fácil de garantir que todos os utilizadores estão executando a última versão da sua aplicação e pode realmente ajudar com comentários como "o aplicativo está quebrado", quando os usuários estão executando versões mais antigas da sua aplicação. Há também uma propriedade UpdateRejectedCount que poderá usar para desativar depois de um número especificado de rejeições se desejar.

Version Hint

Windows Phone: [[Category:Windows Phone]]
[[Category:Windows Phone 7.5]]
[[Category:Windows Phone 8]]

Nokia Asha: [[Category:Nokia Asha]]
[[Category:Nokia Asha Platform 1.0]]

Series 40: [[Category:Series 40]]
[[Category:Series 40 1st Edition]] [[Category:Series 40 2nd Edition]]
[[Category:Series 40 3rd Edition (initial release)]] [[Category:Series 40 3rd Edition FP1]] [[Category:Series 40 3rd Edition FP2]]
[[Category:Series 40 5th Edition (initial release)]] [[Category:Series 40 5th Edition FP1]]
[[Category:Series 40 6th Edition (initial release)]] [[Category:Series 40 6th Edition FP1]] [[Category:Series 40 Developer Platform 1.0]] [[Category:Series 40 Developer Platform 1.1]] [[Category:Series 40 Developer Platform 2.0]]

Symbian: [[Category:Symbian]]
[[Category:S60 1st Edition]] [[Category:S60 2nd Edition (initial release)]] [[Category:S60 2nd Edition FP1]] [[Category:S60 2nd Edition FP2]] [[Category:S60 2nd Edition FP3]]
[[Category:S60 3rd Edition (initial release)]] [[Category:S60 3rd Edition FP1]] [[Category:S60 3rd Edition FP2]]
[[Category:S60 5th Edition]]
[[Category:Symbian^3]] [[Category:Symbian Anna]] [[Category:Nokia Belle]]

This page was last modified on 18 November 2013, at 01:39.
178 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×