Technology Experience (Reborn 3)

Contenuti gestiti da Igor Damiani
posts - 982, comments - 1454, trackbacks - 81

My Links

News














  • Questo blog nasce dalle ceneri del mio blog tecnico su UGIdotNET. In questo blog voglio raccontare la mia vita, ovvero quello che non mi sento più di raccontare da nessun'altra parte. Non sono solo un programmatore, dannazione: sono una persona che ha una terribile passione per il proprio lavoro. Ma anche passione per la vita, per le donne, per la birra, per la mia Fiat 500, per il sole ed il mare, per la scrittura, per qualche risata con gli amici, per i sentimenti. Qua troverete tutto questo: buona lettura!.

    23/04/2007,
    Sant'Angelo Lodigiano

Tag Cloud

Archives

Post Categories

Amici

Chiusura della propria app dopo la scadenza della trial

Qualche dettaglio sulla gestione della modalità trial delle proprie applicazioni per Windows Phone 7 la trovate in questo mio post.

Saltiamo subito all’argomento di questo post. Immaginiamo che l’App.xaml sia configurato così:

<trial:TrialManager RunAsTrial="True" Expired="TrialManager_Expired" TimerInterval="00:01:00">
    <trial:TrialManager.ApplicationPolicy>
        <trial:TimeExpirationPolicy TrialDuration="00:03:00" Mode="Lifetime" />
    </trial:TrialManager.ApplicationPolicy>
</trial:TrialManager>

 

Questo blocco XAML configura la libreria SlickThought.Phone in modo tale che la modalità trial della nostra app basi il proprio funzionamento sul tempo. In breve: dopo tre minuti di utilizzo (proprietà TrialDuration della classe TimeExpirationPolicy), viene scatenato l’evento Expired. I tre minuti sono relativi alla sessione – e non complessivamente. All’interno di questo evento possiamo fare quello che vogliamo.

Supponiamo di voler mostrare un messaggio all’utente che dica qualcosa tipo “Spiacente, la modalità trial è scaduta!”, e poi chiudiamo l’applicazione. Sfortunatamente non abbiamo a disposizione un metodo sulla classe Application di Silverlight, per cui dobbiamo escogitare il solito barbatrucco. Questo barbatrucco è raccontato a questo indirizzo, e funziona a dovere.

In breve, l’evento Expired è gestito così:

private void TrialManager_Expired(object sender, SlickThought.Phone.TrialExpirationEventArgs e)
{
    string message = LocalizationManager.GetString("TrialExpiredMessage");
    MessageBox.Show(message, "Trial", MessageBoxButton.OK);
    App.Quit();
}

 

Il metodo Quit è definito così:

internal class QuitException : Exception { }

static void Quit()
{
    throw new QuitException();
}

 

L’ultima cosa importante da fare è ritoccare l’evento…

private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
    if (e.ExceptionObject is QuitException)
        return;

    if (System.Diagnostics.Debugger.IsAttached)
        System.Diagnostics.Debugger.Break();
}

 

Morale: se viene scatenata una QuitException(), viene eseguito un banale return, che fa chiudere l’applicazione senza messaggi di errore.

In questo modo l’utente vede apparire un messaggio: quando clicca su Ok per chiudere la MessageBox l’applicazione si chiude e deve riavvarla.

Ed il gioco è fatto!

Print | posted on mercoledì 1 dicembre 2010 12.27 | Filed Under [ .NET World ]

Feedback

Gravatar

# re: Chiusura della propria app dopo la scadenza della trial

una domanda stupida, mi è poco chiaro il comportamento di RunAsTrial nello xaml, mi piacerebbe capire come và impostato di default in un'applicazione pronta per la vendita...
07/01/2011 11.17 | Fabrizio Lapiello

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 2 and 5 and type the answer here:

Powered by:
Powered By Subtext Powered By ASP.NET