segunda-feira, 17 de junho de 2013

Criando aplicações Trial no Windows Phone

O SDK do Windows Phone nos permite liberar aplicativos que contenham uma versão de avaliação do aplicativo, onde o usuário consegue utilizar a aplicação (mesmo que sem utilizar todos os recursos do app) fazendo então uma avaliação e então decidir pela compra... ou não.

Se o aplicativo que você está desenvolvendo será cobrado, mesmo que o preço mínimo da loja, disponibilize uma versão de avaliação para o usuário. A maioria das pessoas não irá comprar seu aplicativo sem antes experimentá-lo.

Planeje quais funcionalidades do seu aplicativo estarão disponíveis na versão Trial, não use a tática de liberar acesso a tudo por um período de data, isto não é confiável, o melhor é colocar restrições no uso do aplicativo, como por exemplo permitir somente a entrada de X itens numa lista, etc.

Para verificar se um aplicativo está na versão de avaliação ou não, utilizamos o objeto LicenseInformation, este objeto só funciona após o seu app estar publicado no Marketplace, então, para testar, teremos que simular o resultado deste objeto.

O primeiro passo é abrir o arquivo App.xaml.cs, e nele adicionar a referência para a biblioteca Microsoft.Phone.Marketplace, criar o objeto LicenseInformation e a propriedade (readonly, só tem o get, nada de set) isTrial:

using Microsoft.Phone.Marketplace;
 
private static LicenseInformation _licenseInfo = new LicenseInformation();
 
private static bool _isTrial = true;
        public bool IsTrial
        {
            get
            {
                return _isTrial;
            }
        } 

O teste para saber se a aplicação está no modo de avaliação, ou não, deve ser executada em dois momentos: Quando a aplicação é executada e quando a aplicação sai da inatividade, portanto temos que fazer a verificação nos event handlers Application_Launching (quando é executada) e Application_Activated (quando volta de inatividade). Para isto criamos um método, no arquivo App.xaml.cs, para fazer esta verificação:

       
        private void CheckLicense()
        {
            // Ao debugar, vamos simular que a aplicação esteja no modo trial
            // O teste condicional a seguir permite setarmos a variável manualmente 
#if DEBUG
            string message = "Pressione 'OK' para simular o modo de avaliação. Pressione 'Cancel' para roda a aplicação no modo completo.";
            if (MessageBox.Show(message, "Debug Trial",
                 MessageBoxButton.OKCancel) == MessageBoxResult.OK)
            {
                _isTrial = true;
            }
            else
            {
                _isTrial = false;
            }
#else
            _isTrial = _licenseInfo.IsTrial();
#endif
        }

Neste método que acabamos de criar, a propriedade _isTrial recebe o valor de acordo com a licença do usuário. Então agora chamamos este método dentro dos event handlers mencionados anteriormente, eles também ficam no arquivo App.xaml.cs:

 
private void Application_Launching(object sender, LaunchingEventArgs e)
        {
            CheckLicense();
        }

private void Application_Activated(object sender, ActivatedEventArgs e)
        {
            CheckLicense();
        }

Agora está tudo pronto para que restrições sejam feitas no seu app baseado na licença utilizada pelo seu usuário. Para isto basta verificar a propriedade isTrial em todo lugar onde existir uma restrição:

            if ((Application.Current as App).IsTrial)
            {
                ...
            }
            else
            {
                ...
            }

Mais informações sobre Trial apps

Nenhum comentário:

Postar um comentário