Archivi categoria: Windows Phone (c#)

Creare una versione di prova dell’app

Lo store di Windows Phone consente di creare una versione di prova per l’applicazione, per dare la possibilità all’utente di testare le funzionalità dell’applicazione prima di acquistarla.

trial-windows-phone

Per cominciare quando andrai a pubblicare l’app, nello store, è necessario indicare che è offerta una versione di prova e il relativo prezzo.

prezzo-windows-phone-app

Per limitare le funzionalità nella versione di prova devi leggere lo stato della licenza dell’applicazione (trial o completa).

Innanzitutto aggiungi il namespace e istanzia le due classi come di seguito:

using Microsoft.Phone.Marketplace;

private static LicenseInformation licenseInfo = new LicenseInformation();
MarketplaceDetailTask marketPlaceDetailTask = new MarketplaceDetailTask();

all’interno di licenseInfo è salvato lo stato della licenza. E’ possibile leggerlo come variabile booleana (true/false) attraverso la funzione

bool isTrial = licenseInfo.IsTrial();

Ecco un esempio completo:

private static LicenseInformation licenseInfo = new LicenseInformation();
MarketplaceDetailTask marketPlaceDetailTask = new MarketplaceDetailTask();

bool IsTrial;

private void CheckLicense()
{
isTrial = licenseInfo.IsTrial(); //leggi lo stato della licenza

if (isTrial == true) { //se è isTrial è True allora è una versione di prova, altrimenti è stata acquistata
if( MessageBox.Show("Questa è una versione di prova. Per usare questa funzione devi acquistare l'app. Vuoi andare nello store per acquistarla?", "Versione di prova", MessageBoxButton.OKCancel)==MessageBoxResult.OK)  //se premi OK vai nello store alla pagina dell'app.
{ marketPlaceDetailTask.Show(); isTrial = licenseInfo.IsTrial(); }
}
else { /*applicazione già acquistata }
}

nell’esempio se isTrial() è uguale a True significa che l’utente possiede la versione di prova e quindi mostra un messaggio di avviso. Inoltre se l’utente preme OK viene portato nello store, alla pagina dell’applicazione per poter acquistare subito l’app chiamando la funzione marketPlaceDetailTask.Show(); .

Viene nuovamente verificato lo stato della licenza nel caso in cui, dopo aver premuto OK, abbia acquistato l’app. A quel punto, non è necessario chiudere e riaprire l’applicazione per avere tutte le funzionalità sbloccate, queste saranno disponibili sin da subito.

Consigli:

  • Chiama la funzione licenseInfo.IsTrial(); il meno possibile perchè questa impiega una certa quantità di tempo, in quanto ogni volta verifica lo stato della licenza.
  • Verifica che le funzioni bloccate si sblocchino completamente prima di pubblicare l’app e che l’applicazione una volta acquistata funzioni correttamente. Ad esempio puoi provare ciò rendendo bool isTrial uguale a True o False in base al tipo di test effettuato, senza andare a leggere lo stato della licenza.

Ricorda che in fase di debug (prima di pubblicare l’app) licenseInfo.IsTrial() restituirà sempre False.

Più informazioni all’indirizzo: http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh286402%28v=vs.105%29.aspx

Chiudere l’app senza tornare alla pagina precedente usando il tasto back

E’ possibile che vi sia necessario impedire all’utente di poter tornare alla pagina in cui si trovava precendentemente. Ad esempio se l’app supporta il login, non si vuole che, dopo aver eseguito l’accesso, l’utente usando il tasto back, torni nuovamente alla pagina del login.

Per far ciò aggiungi questo codice al file C#, nella pagina in cui vuoi che l’utente non possa tornare indietro:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
while (NavigationService.CanGoBack)
{ NavigationService.RemoveBackEntry(); }
}

Questo metodo viene chiamato quando l’utente apre la pagina in questione e pulisce la “cronologia” delle pagine visitate. Qundi premendo il tasto back del telefono quando si è in quella pagina, l’applicazione si chiude, indipendentemente dall’aver visitato o meno pagine prima di quella.

Chiudere PopUp senza uscire dall’app usando il tasto back

Uno dei motivi frequenti per cui un’ applicazione non ottiene la certificazione dallo store di Windows Phone, è la regola per cui i popUp devono essere nascosti prima che l’applicazione venga chiusa, quando il tasto “fisico” back sul telefono viene premuto.

A questo proposito la soluzione è molto semplice da implementare:

Da XAML aggiungere l’evento BackKeyPress="PhoneApplicationPage_BackKeyPress_1" all’interno del tag <phone:PhoneApplicationPage> ottenendo quindi <phone:PhoneApplicationPage BackKeyPress="PhoneApplicationPage_BackKeyPress_1" ....

Oppure aggiungere l’evento dalla finestra “Proprietà” alla voce dell’evento “BackKeyPress”.

Fatto questo andiamo a scrivere il codice C# che utilizza l’evento.
private void PhoneApplicationPage_BackKeyPress_1(object sender, System.ComponentModel.CancelEventArgs e)
{ if (GridPopUp.Visibility == Visibility.Visible) { GridPopUp.Visibility == Visibility.Collapsed; e.Cancel = true; }
}

In questo esempio il metodo viene chiamato alla pressione del tasto back e se la griglia PopUp è visibile allora verrà nascosta. L’applicazione non verrà chiusa in quanto e.Cancel=true; annulla l’operazione di uscita dall’app.