Verwenden der WindowsStore-Komponente

Aus RAD Studio
Wechseln zu: Navigation, Suche

Mit der Komponente TWindowsStore können Sie Windows-Anwendungen mit dem Windows Store verbinden und Features verwenden, wie Abrufen einer Liste von dem Benutzer gehörenden Apps, verfügbaren Add-ons, gekauften Add-ons und Verarbeiten des Testmodus.

Die Komponente TWindowsStore wird nur für Windows-Plattformen unterstützt und RAD Studio 10.3 Rio enthält eine VCL-Version und eine FireMonkey-Version. TWindowsStore ist ein Komponenten-Wrapper für TWindowsStoreCore.

Überprüfen von dem Benutzer gehörenden Apps und Add-ons

Um eine Liste der Windows-Anwendungen und -Add-ons abzurufen, die dem Benutzer gehören, müssen Sie die Komponente TWindowsStore in das Formular einfügen oder sie zur Laufzeit erstellen, eine TButton-Komponente hinzufügen und den folgenden Code einfügen:

procedure TStoreForm.lbInfoClick(Sender: TObject);
var
  LMsg: string;
const
  //These consts mirrors the name of the Add-Ons ad defined
  //in the MS Windows Store. Using this approach you can “Ask” to the
  //store what the current user has bought.
  //The current user is indentified automatically because the
  //app has been downloaded from the store.
  HENRYFORDQUOTES = 'henryfordquotes';
  SAVETOFILE = 'savetofile';
  SAVEASFAVOURITE = 'saveasfavourite';
begin
  LMsg := '**You current situation**' + sLineBreak;
  LMsg := LMsg + 'You ' + IfThen(WindowsStore1.UserHasBought(HENRYFORDQUOTES),
    'have bought', 'don''t have bought') +
    ' the great Henry Ford aphorisms archive.' + sLineBreak;
  LMsg := LMsg + 'You ' + IfThen(WindowsStore1.UserHasBought(SAVETOFILE),
    'have bought', 'don''t have bought') +
    ' the ability to save aphorisms to file.' + sLineBreak;
  LMsg := LMsg + 'You ' + IfThen(WindowsStore1.UserHasBought(SAVEASFAVOURITE),
    'have bought', 'don''t have bought') +
    ' the ability to save aphorisms as favourite.' + sLineBreak;
  ShowMessage(LMsg);
end;

Zugreifen auf verfügbare Add-ons

Mit der Komponente können Sie auch alle verfügbaren Add-ons untersuchen, indem Sie auf die indexierte Eigenschaft AppProducts (sgAvailableProducts ist ein TStringGrid) zugreifen, wie im folgenden Code gezeigt:

procedure TStoreForm.UpdateAvailableProducts;
var
  LProdsCount: Integer;
  I: Integer;
  LRow: TStrings;
begin
  LProdsCount := WindowsStore1.AppProducts.Count;
  for I := 0 to LProdsCount - 1 do
  begin
    LRow := sgAvailableProducts.Rows[I + 1];
    LRow.Add(WindowsStore1.AppProducts[I].StoreId.ToString);
    LRow.Add(WindowsStore1.AppProducts[I].Title.ToString);
    LRow.Add(WindowsStore1.AppProducts[I].Price.FormattedBasePrice.ToString);
    LRow.Add(WindowsStore1.AppProducts[I].ProductKind.ToString);
    LRow.Add(
      WindowsStore1.AppProducts[I].Price.IsOnSale.ToString(TUseBoolStrs.True)
    );    
    LRow.Add(
      WindowsStore1.AppProducts[I].IsInUserCollection
       .ToString(TUseBoolStrs.True)
    );
  end;
End;

Überprüfen von dem Benutzer gehörenden Add-ons

Um eine Liste der Add-ons abzurufen, die dem Benutzer gehören, verwenden Sie die indexierte Eigenschaft UserCollection, die genauso wie AppProducts arbeitet.

Verwenden des Testmodus

Mit der Eigenschaft AppLicense können Sie den TrialMode für Ihre Apps verwalten, wie im folgenden Code gezeigt:

procedure TStoreForm.lbTrialInformationClick(Sender: TObject);
var
  LRemainingTrialDays: Integer;
begin
  if WindowsStore1.AppLicense.IsActive then
  begin
    if WindowsStore1.AppLicense.IsTrial then
    begin
      LRemainingTrialDays := WindowsStore1.AppLicense.TrialTimeRemaining.Days;
      ShowMessage(
        Format('You can use this app for %d more days before the trial period ends.',
        [LRemainingTrialDays]));
    end
    else
    begin
      ShowMessage('You have a full license. The trial time is not meaningful.');
    end;

  end
  else
  begin
    ShowMessage('You don''t have a license. The trial time can''t be determined.');
  end;
End;
Hinweis: Dieses Szenario basiert auf dem unter

https://github.com/Microsoft/Windows-universal-samples/blob/master/Samples/Store/cs/Scenario1_TrialMode.xaml.cs#L82 (EN) beschriebenen Szenario.}}