Ottenere informazioni sulla licenza per app e componenti aggiuntivi
Questo articolo illustra come usare i metodi della classe StoreContext nello spazio dei nomi Windows.Services.Store per ottenere informazioni sulla licenza per l'app corrente e i relativi componenti aggiuntivi. Ad esempio, puoi usare queste informazioni per determinare se le licenze per l'app o i relativi componenti aggiuntivi sono attive o se sono licenze di valutazione.
Nota
Lo spazio dei nomi Windows.Services.Store è stato introdotto in Windows 10, versione 1607, e può essere utilizzato solo nei progetti destinati a Windows 10 Anniversary Edition (10.0; Build 14393) o a una versione successiva in Visual Studio. Se l'app è destinata a una versione precedente di Windows 10, devi usare lo spazio dei nomi Windows.ApplicationModel.Store anziché lo spazio dei nomi Windows.Services.Store. Per altre informazioni, vedere questo articolo.
Prerequisiti
Questo esempio presenta i prerequisiti seguenti:
- Un progetto di Visual Studio per un'app UWP (Universal Windows Platform) che mira a Windows 10 Anniversary Edition (10.0; Build 14393) o una versione successiva.
- Hai creato un invio di app nel Centro per i partner e questa app viene pubblicata nello Store. Facoltativamente, puoi configurare l'app in modo che non sia individuabile nello Store durante il test. Per altre informazioni, vedere le linee guida per i test .
- Se vuoi ottenere informazioni sulla licenza per un componente aggiuntivo per l'app, devi anche creare il componente aggiuntivo nel Centro per i partner.
Il codice in questo esempio presuppone:
- Il codice viene eseguito nel contesto di un Page di contenente un ProgressRing denominato
workingProgressRing
e un TextBlock denominatotextBlock
. Questi oggetti vengono usati per indicare che si sta verificando un'operazione asincrona e per visualizzare rispettivamente i messaggi di output. - Il file di codice include un usando'istruzione per lo spazio dei nomi Windows.Services.Store.
- L'app è un'app a utente singolo che viene eseguita solo nel contesto dell'utente che ha avviato l'app. Per ulteriori informazioni, vedere acquisti in-app e prove.
Nota
Se si dispone di un'applicazione desktop che usa il Desktop Bridge, potrebbe essere necessario aggiungere codice aggiuntivo non illustrato in questo esempio per configurare l'oggetto StoreContext. Per altre informazioni, vedere Uso della classe StoreContext in un'applicazione desktop che usa Desktop Bridge.
Esempio di codice
Per ottenere informazioni sulla licenza per l'app corrente, usare il metodo getAppLicenseAsync. Si tratta di un metodo asincrono che restituisce un oggetto StoreAppLicense che fornisce informazioni sulla licenza per l'app, incluse le proprietà che indicano se l'utente ha attualmente una licenza valida per usare l'app (IsActive) e se la licenza è per una versione di valutazione (IsTrial).
Per accedere alle licenze per i componenti aggiuntivi durevoli dell'app corrente per cui l'utente ha diritto all'uso, usare la proprietà AddOnLicenses dell'oggetto StoreAppLicense. Questa proprietà restituisce un insieme di oggetti StoreLicense che rappresentano le licenze del componente aggiuntivo.
private StoreContext context = null;
public async void GetLicenseInfo()
{
if (context == null)
{
context = StoreContext.GetDefault();
// If your app is a desktop app that uses the Desktop Bridge, you
// may need additional code to configure the StoreContext object.
// For more info, see https://aka.ms/storecontext-for-desktop.
}
workingProgressRing.IsActive = true;
StoreAppLicense appLicense = await context.GetAppLicenseAsync();
workingProgressRing.IsActive = false;
if (appLicense == null)
{
textBlock.Text = "An error occurred while retrieving the license.";
return;
}
// Use members of the appLicense object to access license info...
// Access the valid licenses for durable add-ons for this app.
foreach (KeyValuePair<string, StoreLicense> item in appLicense.AddOnLicenses)
{
StoreLicense addOnLicense = item.Value;
// Use members of the addOnLicense object to access license info
// for the add-on.
}
}
Per un'applicazione di esempio completa, vedere l'esempio di Store.