CurrentAppSimulator Class

Definiert Methoden und Eigenschaften, die verwendet werden, um ein Objekt zu instanziieren, das verwendet werden kann, um simulierte Lizenzinformationen während der Tests zu erhalten.

Hinweis  Sie müssen die CurrentAppSimulator-Klasse durch die CurrentApp-Klasse ersetzen, bevor Sie die App im Windows Store bereitstellen. Apps, die CurrentAppSimulator verwenden, erhalten keine Zertifizierung.

Syntax


var currentAppSimulator = Windows.ApplicationModel.Store.CurrentAppSimulator;

Attribute

[MarshalingBehavior(Agile)]
[Threading(Both)]
[Version(0x06020000)]

Member

CurrentAppSimulatorKlasse hat diese Membertypen:

Methoden

The CurrentAppSimulator Klasse hat diese Methoden. Mit C#, Visual Basic und C++ erbt es auch Methoden aus Object Klasse.

MethodeBeschreibung
GetAppReceiptAsync Creates the async operation that the user can use to simulate requesting all receipts for this app and any in-app purchases.
GetProductReceiptAsync Creates the async operation that the user can use to simulate requesting the receipt for the productId specified.
GetUnfulfilledConsumablesAsync Returns a list of purchased consumables that have not been fulfilled.
LoadListingInformationAsync Loads the simulated app listing information asynchronously. Implements the IAsyncInfo interface.
ReloadSimulatorAsync Reloads the simulator using a StorageFile containing the WindowsStoreProxy.xml file.
ReportConsumableFulfillmentAsync Simulates notifying the Windows Store that the purchase of a consumable is fulfilled and that the user has the right to access the content.
RequestAppPurchaseAsync Creates the async operation that simulates a user request to buy a full license for the current app.
RequestProductPurchaseAsync(String) Creates the async operation that displays the UI that is used to simulate an in-app purchase of content or a feature from the Windows Store.
RequestProductPurchaseAsync(String, Boolean) Creates the async operation that displays the UI that is used to simulate an in-app purchase of content or a feature from the Windows Store.
RequestProductPurchaseAsync(String, String, ProductPurchaseDisplayProperties) Creates the async operation that displays the UI that is used to simulate an in-app purchase of content or a feature from the Windows Store.

 

Eigenschaften

Der CurrentAppSimulatorKlasse hat diese Eigenschaften.

EigenschaftZugriffstypBeschreibung

AppId

SchreibgeschütztGets a simulated app ID. Since CurrentAppSimulator is intended only for testing during app development, the returned CurrentAppSimulator.AppId will contain only 0's.

LicenseInformation

SchreibgeschütztGets the simulated license metadata for the current app as provided by the simulation.

LinkUri

SchreibgeschütztGets the simulated Uniform Resource Identifier (URI) that represents a Windows Store listing page for the current app.

 

Hinweise

Erst wenn die App im Windows Store aufgelistet ist, funktioniert das CurrentApp-Objekt in der App. Verwenden Sie die CurrentAppSimulator-Klasse, um die Lizenzierung und die In-App-Käufe der App zu testen, während Sie die App erstellen. Nachdem Sie die Anwendung getestet haben und bevor Sie sie im Windows Store bereitstellen, ersetzen Sie die Instanzen von CurrentAppSimulator durch CurrentApp. Die App erhält keine Zertifizierung, wenn sie CurrentAppSimulator verwendet.

Hinweis  Bei Verwendung der Simulation wird der ursprüngliche Lizenzierungszustand der App in WindowsStoreProxy.xml beschrieben. CurrentAppSimulator-Methode, die den Lizenzzustand ändert, z. B. durch das Kaufen einer Lizenz oder das Verarbeiten eines In-App-Kaufs; nur Aktualisierung des Lizenzzustands des Objekts im Arbeitsspeicher. Die Inhalte von WindowsStoreProxy.xml werden nicht geändert. Wenn die App erneut gestartet wird, wird der Lizenzzustand, der in WindowsStoreProxy.xml beschrieben wird, wiederherstellt.

Das CurrentAppSimulator-Objekt ruft seine Daten aus der WindowsStoreProxy.xml-Datei im %userprofile%\appdata\local\packages\<package-moniker>\localstate\microsoft\Windows Store\Apidata-Ordner ab. Sie müssen diese Datei für das Szenario konfigurieren, das Sie in den CurrentAppSimulator-Eigenschaften simulieren möchten.

Die Inhalte dieser Datei werden von der SimulatedCurrentApp.xsd-Datei definiert, die als Beispiel weiter unten in diesem Thema enthalten ist, und sie spiegeln die Organisation der Objekte und Eigenschaften des Windows.ApplicationModel.Store-Namespace wider.

Die Elemente dieser Datei sind im CurrentApp-Stammknoten enthalten:

ListingInformation

Stellt Daten dar, die normalerweise im Produktlisting der App enthalten sind, und enthält folgende Elemente:

App

Stellt Daten über die App dar und enthält folgende Elemente:

AppId

Die GUID, die die App im Store identifiziert. Dies kann eine beliebige GUID für das Testen sein.

LinkUri

Der URI der Eintragsseite im Store. Dies kann ein gültiger URI für das Testen sein.

AgeRating

Eine ganze Zahl, die die Mindestalterbewertung der App darstellt. Dies ist der gleiche Wert, den Sie beim Senden der App im Dashboard angeben. Die vom Windows Store verwendeten Werte sind: 3, 7, 12 und 16.

CurrentMarket

Dies ist das Land/die Region des Kunden.

Für jedes Land bzw. jede Region, in dem bzw. der die App aufgeführt ist, muss ein MarketData-Element vorhanden sein.

MarketData

Informationen über die App für dieses Land/diese Region.

Erfordert das xml:lang-Attribut, das angibt, für welche Region bzw. welches Land diese Information gilt.

Name

Der Name der App in diesem Land/dieser Region.

Description

Die Beschreibung der App für dieses Land/diese Region.

Price

Der Preis der App in diesem Land/dieser Region.

CurrencySymbol

Das in diesem Land/dieser Region verwendete Währungszeichen.

Product

Beschreibt ein Produkt oder eine Funktion in dieser App, das bzw. die aktiviert wird, wenn der Kunde einen In-App-Kauf tätigt.

Erfordert das ProductId-Attribut, das die Zeichenfolge enthält, mit der die App das Produkt bzw. die Funktion identifiziert.

Erfordert das LicenseDuration-Attribut, das angibt, wie viele Tage die Lizenz nach dem Kauf gültig ist. Das Ablaufdatum der neuen Lizenz, die mithilfe eines Produktkaufs erstellt wird, ist das Kaufdatum plus die Lizenzdauer.

MarketData

Informationen über das Produkt oder die Funktion für dieses Land/diese Region.

Erfordert das xml:lang-Attribut, das angibt, für welches Land bzw. welche Region diese Information gilt.

Name

Der Name des Produkts oder der Funktion in diesem Land/dieser Region.

Price

Der Preis des Produkts bzw. der Funktion in diesem Land/dieser Region.

CurrencySymbol

Das in diesem Land/dieser Region verwendete Währungszeichen.

CurrencyCode

Der in diesem Land/dieser Region verwendete Währungscode.

LicenseInformation

Stellt Daten dar, welche die für diese App verfügbaren Lizenzen beschreiben, und enthält folgende Elemente:

App

Beschreibt die Lizenz der App:

IsActive

Beschreibt den aktuellen Lizenzstatus dieser App.

true gibt an, dass die Lizenz gültig ist. Normalerweise ist dieser Wert true, unabhängig davon, ob die App einen Probemodus besitzt oder nicht.

false gibt eine ungültige Lizenz an. Legen Sie diesen Wert auf false fest, um zu testen, wie sich Ihre App verhält, wenn sie eine ungültige Lizenz besitzt.

IsTrial

Beschreibt den aktuellen Teststatus dieser App.

true gibt an, dass die App während des Testzeitraums verwendet wird.

false gibt die App an, die sich nicht in einem Test befindet, weil die App entweder gekauft wurde oder der Testzeitraum abgelaufen ist.

ExpirationDate

Das Datum, an dem der Testzeitraum für diese App abläuft. Das Datum muss dem folgenden Schema entsprechen: yyyy-mm-ddThh:mm:ss.ssZ. Beispielsweise würde 05:00 am 19. Januar 2012 als 2012-01-19T05:00:00.00Z angegeben.

Dieses Element ist erforderlich, wenn IsTrial den Wert true aufweist. Andernfalls ist es nicht erforderlich.

DefaultResponse

Beschreibt den standardmäßigen Fehlercode, der von einer bestimmten Methode zurückgegeben wird. Das MethodName-Attribut ermöglicht es Ihnen, eine dieser Methoden anzugeben:

RequestAppPurchaseAsync_GetResult
RequestProductPurchaseAsync_GetResult
LoadListingInformationAsync_GetResult
Das HResult-Attribut ermöglicht es Ihnen, den Fehlercode anzugeben. SimulatedCurrentApp.xsd enthält die Liste der typischen Fehlercodes, die verwendet werden können.

Product

Beschreibt den Lizenzstatus eines Produkts oder einer Funktion in der App:

IsActive

Beschreibt den aktuellen Lizenzstatus dieses Produkts oder dieser Funktion.

true gibt das verwendbare Produkt oder die verwendbare Funktion an.

false gibt das Produkt oder die Funktion an, das bzw. die nicht verwendet werden kann oder nicht gekauft wurde.

ExpirationDate

Das Datum, an dem Produkt oder das Feature abläuft. Das Datum muss dem folgenden Schema entsprechen: yyyy-mm-ddThh:mm:ss.ssZ. Beispielsweise würde 05:00 am 19. Januar 2012 als 2012-01-19T05:00:00.00Z angegeben.

Wenn dieses Element vorhanden ist, hat das Produkt oder die Funktion ein Ablaufdatum.

Wenn dieses Element nicht vorhanden ist, läuft das Produkt oder die Funktion nicht ab.

Simulation

Beschreibt, wie verschiedene Methodenaufrufe funktionieren. Wenn das SimulationMode-Attribut auf Automatic festgelegt ist, geben die Methoden automatisch die angegebenen HRESULT-Fehlercodes zurück. Dies kann beim Ausführen automatisierter Testfälle verwendet werden.

Beispiele

Dieses Beispiel ist eine WindowsStoreProxy.xml-Datei, die eine App mit einem Testmodus beschreibt, der am 19. Januar 2012 um 05:00 (Z) abläuft.


<?xml version="1.0" encoding="UTF-16"?>
<CurrentApp>
  <ListingInformation>
    <App>
      <AppId>2B14D306-D8F8-4066-A45B-0FB3464C67F2</AppId>
      <LinkUri>http://apps.windows.microsoft.com/app/2B14D306-D8F8-4066-A45B-0FB3464C67F2</LinkUri>
      <CurrentMarket>en-US</CurrentMarket>
      <AgeRating>3</AgeRating>
      <MarketData xml:lang="en-us">
        <Name>Trial management full license</Name>
        <Description>Sample app for demonstrating trial license management</Description>
        <Price>4.99</Price>
        <CurrencySymbol>$</CurrencySymbol>
      </MarketData>
    </App>
  </ListingInformation>
  <LicenseInformation>
    <App>
      <IsActive>true</IsActive>
      <IsTrial>true</IsTrial>
      <ExpirationDate>2012-01-19T05:00:00.00Z</ExpirationDate>
    </App>
  </LicenseInformation>
  <Simulation SimulationMode="Automatic">
    <DefaultResponse MethodName="LoadListingInformationAsync_GetResult" HResult="E_FAIL"/>
  </Simulation>
</CurrentApp>

Beim folgenden Beispiel handelt es sich um eine WindowsStoreProxy.xml-Datei, die eine App beschreibt, die gekauft wurde und über eine Funktion verfügt, die am 19. Januar 2012 um 05:00 (Z) abläuft.


<?xml version="1.0" encoding="utf-16" ?>
<CurrentApp>
  <ListingInformation>
    <App>
      <AppId>988b90e4-5d4d-4dea-99d0-e423e414ffbc</AppId>
      <LinkUri>http://apps.windows.microsoft.com/app/988b90e4-5d4d-4dea-99d0-e423e414ffbc</LinkUri>
      <CurrentMarket>en-us</CurrentMarket>
      <AgeRating>3</AgeRating>
      <MarketData xml:lang="en-us">
        <Name>Expiring in-app feature</Name>
        <Description>App description text goes here.</Description>
        <Price>5.99</Price>
        <CurrencySymbol>$</CurrencySymbol>
      </MarketData>
    </App>
    <Product ProductId="feature1" LicenseDuration="10">
      <MarketData xml:lang="en-us">
        <Name>Feature 1</Name>
        <Price>1.99</Price>
        <CurrencySymbol>$</CurrencySymbol>
      </MarketData>
    </Product>
  </ListingInformation>
  <LicenseInformation>
    <App>
      <IsActive>true</IsActive>
      <IsTrial>false</IsTrial>
    </App>
    <Product ProductId="feature1">
      <IsActive>true</IsActive>
      <ExpirationDate>2012-01-19T00:00:00.00Z</ExpirationDate>
    </Product>
  </LicenseInformation>
</CurrentApp>


SimulatedCurrentApp.xsd

Beim folgenden Beispiel handelt es sich um die XSD-Datei, die die Struktur der temporären Dateien definiert, die verwendet werden, um die Anwendung mit CurrentAppSimulator zu testen.


<?xml version="1.0" encoding="utf-8"?>  
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">  
  <xs:import namespace="http://www.w3.org/XML/1998/namespace" />  
  <xs:element name="CurrentApp" type="CurrentAppDefinition"></xs:element>  
  <xs:complexType name="CurrentAppDefinition">  
    <xs:sequence>  
      <xs:element name="ListingInformation" type="ListingDefinition" minOccurs="1" maxOccurs="1"/>  
      <xs:element name="LicenseInformation" type="LicenseDefinition" minOccurs="1" maxOccurs="1"/>  
      <xs:element name="Simulation" type="SimulationDefinition" minOccurs="0" maxOccurs="1"/>  
    </xs:sequence>  
  </xs:complexType>  
  <xs:simpleType name="ResponseCodes">  
    <xs:restriction base="xs:string">  
      <xs:enumeration value="S_OK">  
        <xs:annotation>  
          <xs:documentation>0x00000000</xs:documentation>  
        </xs:annotation>  
      </xs:enumeration>  
      <xs:enumeration value="E_INVALIDARG">  
        <xs:annotation>  
          <xs:documentation>0x80070057</xs:documentation>  
        </xs:annotation>  
      </xs:enumeration>  
      <xs:enumeration value="E_CANCELLED">  
        <xs:annotation>  
          <xs:documentation>0x800704C7</xs:documentation>  
        </xs:annotation>  
      </xs:enumeration>  
      <xs:enumeration value="E_FAIL">  
        <xs:annotation>  
          <xs:documentation>0x80004005</xs:documentation>  
        </xs:annotation>  
      </xs:enumeration>  
      <xs:enumeration value="E_OUTOFMEMORY">  
        <xs:annotation>  
          <xs:documentation>0x8007000E</xs:documentation>  
        </xs:annotation>  
      </xs:enumeration>  
      <xs:enumeration value="ERROR_ALREADY_EXISTS">  
        <xs:annotation>  
          <xs:documentation>0x800700B7</xs:documentation>  
        </xs:annotation>  
      </xs:enumeration>  
    </xs:restriction>  
  </xs:simpleType>  
  <xs:simpleType name="StoreMethodName">  
    <xs:restriction base="xs:string">  
      <xs:enumeration value="RequestAppPurchaseAsync_GetResult" id="RPPA" />  
      <xs:enumeration value="RequestProductPurchaseAsync_GetResult" id="RFPA" />  
      <xs:enumeration value="LoadListingInformationAsync_GetResult" id="LLIA" />  
    </xs:restriction>  
  </xs:simpleType>  
  <xs:simpleType name="SimulationMode">  
    <xs:restriction base="xs:string">  
      <xs:enumeration value="Interactive" />  
      <xs:enumeration value="Automatic" />  
    </xs:restriction>  
  </xs:simpleType>  
  <xs:complexType name="ListingDefinition">  
    <xs:sequence>  
      <xs:element name="App" type="AppListingDefinition" />  
      <xs:element name="Product" type="ProductListingDefinition" minOccurs="0" maxOccurs="unbounded" />  
    </xs:sequence>  
  </xs:complexType>  
  <xs:complexType name="AppListingDefinition">  
    <xs:sequence>  
      <xs:element name="AppId" type="xs:string" minOccurs="1" maxOccurs="1" />  
      <xs:element name="LinkUri" type="xs:anyURI" minOccurs="1" maxOccurs="1" />  
      <xs:element name="CurrentMarket" type="xs:language" minOccurs="1" maxOccurs="1" />  
      <xs:element name="AgeRating" type="xs:unsignedInt" minOccurs="1" maxOccurs="1" />  
      <xs:element name="MarketData" type="MarketSpecificAppData" minOccurs="1" maxOccurs="unbounded" />  
    </xs:sequence>  
  </xs:complexType>  
  <xs:complexType name="MarketSpecificAppData">  
    <xs:sequence>  
      <xs:element name="Name" type="xs:string" minOccurs="1" maxOccurs="1" />  
      <xs:element name="Description" type="xs:string" minOccurs="1" maxOccurs="1" />  
      <xs:element name="Price" type="xs:float" minOccurs="1" maxOccurs="1" />  
      <xs:element name="CurrencySymbol" type="xs:string" minOccurs="1" maxOccurs="1" />  
      <xs:element name="CurrencyCode" type="xs:string" minOccurs="0" maxOccurs="1" />  
    </xs:sequence>  
    <xs:attribute ref="xml:lang" use="required" />  
  </xs:complexType>  
  <xs:complexType name="MarketSpecificProductData">  
    <xs:sequence>  
      <xs:element name="Name" type="xs:string" minOccurs="1" maxOccurs="1" />  
      <xs:element name="Price" type="xs:float" minOccurs="1" maxOccurs="1" />  
      <xs:element name="CurrencySymbol" type="xs:string" minOccurs="1" maxOccurs="1" />  
      <xs:element name="CurrencyCode" type="xs:string" minOccurs="0" maxOccurs="1" />  
    </xs:sequence>  
    <xs:attribute ref="xml:lang" use="required" />  
  </xs:complexType>  
  <xs:complexType name="ProductListingDefinition">  
    <xs:sequence>  
      <xs:element name="MarketData" type="MarketSpecificProductData" minOccurs="1" maxOccurs="unbounded" />  
    </xs:sequence>  
    <xs:attribute name="ProductId" use="required">  
      <xs:simpleType>  
        <xs:restriction base="xs:string">  
          <xs:maxLength value="100"/>  
          <xs:pattern value="[^,]*"/>  
        </xs:restriction>  
      </xs:simpleType>  
    </xs:attribute>  
    <xs:attribute name="LicenseDuration" type="xs:integer" use="optional" />  
  </xs:complexType>  
  <xs:complexType name="LicenseDefinition">  
    <xs:sequence>  
      <xs:element name="App" type="AppLicenseDefinition" />  
      <xs:element name="Product" type="ProductLicenseDefinition" minOccurs="0" maxOccurs="unbounded" />  
    </xs:sequence>  
  </xs:complexType>  
  <xs:complexType name="AppLicenseDefinition">  
    <xs:sequence>  
      <xs:element name="IsActive" type="xs:boolean" minOccurs="1" maxOccurs="1" />  
      <xs:element name="IsTrial" type="xs:boolean" minOccurs="1" maxOccurs="1" />  
      <xs:element name="ExpirationDate" type="xs:dateTime" minOccurs="0" maxOccurs="1" />  
    </xs:sequence>  
  </xs:complexType>  
  <xs:complexType name="ProductLicenseDefinition">  
    <xs:sequence>  
      <xs:element name="IsActive" type="xs:boolean" minOccurs="1" maxOccurs="1" />  
      <xs:element name="ExpirationDate" type="xs:dateTime" minOccurs="0" maxOccurs="1" />  
    </xs:sequence>  
    <xs:attribute name="ProductId" type="xs:string" use="required" />  
  </xs:complexType>  
  <xs:complexType name="SimulationDefinition" >  
    <xs:sequence>  
      <xs:element name="DefaultResponse" type="DefaultResponseDefinition" minOccurs="0" maxOccurs="unbounded" />  
    </xs:sequence>  
    <xs:attribute name="SimulationMode" type="SimulationMode" use="optional" />  
  </xs:complexType>  
  <xs:complexType name="DefaultResponseDefinition">  
    <xs:attribute name="MethodName" type="StoreMethodName" use="required" />  
    <xs:attribute name="HResult" type="ResponseCodes" use="required" />  
  </xs:complexType>  
</xs:schema>

Anforderungen

Mindestens unterstützter Client

Windows 8 [Nur Windows Store-Apps]

Mindestens unterstützter Server

Windows Server 2012 [Nur Windows Store-Apps]

Namespace

Windows.ApplicationModel.Store
Windows::ApplicationModel::Store [C++]

Metadaten

Windows.winmd

Siehe auch

Beispiel für Test-App und In-App-Kauf

 

 

Anzeigen:
© 2014 Microsoft