Ottenere info sulla licenza per le app e i 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, è possibile 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 usato solo nei progetti destinati a Windows 10 Anniversary Edition (10.0; Build 14393) o versione successiva in Visual Studio. Se l'app è destinata a una versione precedente di Windows 10, è necessario usare lo spazio dei nomi Windows.ApplicationModel.Store anziché Windows.Services.Store. Per altre informazioni, vedi questo articolo.
Prerequisiti
Questo esempio presenta i prerequisiti seguenti:
- Un progetto Visual Studio per un'app UWP (Universal Windows Platform) destinata a Windows 10 Anniversary Edition (10.0; Build 14393) o versione successiva.
- Aver creato un invio dell'app nel Centro per i partner e pubblicato l'app nello Store. Facoltativamente, è possibile configurare l'app in modo che non sia rilevabile nello Store durante il test. Per ulteriori informazioni, vedere le linee guida per i test.
- Se si desidera ottenere informazioni sulla licenza per un componente aggiuntivo per l'app, è anche necessario creare il componente aggiuntivo nel Centro per i partner.
Il codice in questo esempio presuppone:
- Il codice è eseguito nel contesto di un oggetto Page che contiene un oggetto ProgressRing denominato
workingProgressRing
e un oggetto 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 contiene un'istruzione using per lo spazio dei nomi Windows.Services.Store.
- L'app è un'app per un singolo utente che viene eseguita solo nel contesto dell'utente che ha avviato l'app. Per ulteriori informazioni, vedere Acquisti in-app e versioni di valutazione.
Nota
Se si ha un'applicazione desktop che usa Desktop Bridge, può essere necessario aggiungere ulteriore codice non illustrato in questo esempio per configurare l'oggetto StoreContext. Per ulteriori 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. Questo è un metodo asincrono che restituisce un oggetto StoreAppLicense che fornisce informazioni sulla licenza per l'app, incluse le proprietà che indica se l'utente dispone attualmente di una licenza valida per l'uso dell'app (IsActive) e se la licenza è relativa a una versione di valutazione (IsTrial).
Per accedere ai componenti aggiuntivi durevoli dell'app corrente per cui l'utente a diritto all'uso, usare la proprietà AddOnLicenses dell'oggetto StoreAppLicense. Questa proprietà restituisce un insieme di oggetti StoreLicense che rappresentano le licenze per i componenti aggiuntivi.
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.