2013-08-23 5 views
0

Je teste mon application Windows Phone 8 pour les scénarios dans lesquels mon application passe en arrière-plan avant de pouvoir effectuer un achat de consommables. Donc, à chaque lancement d'application, je vérifie s'il y a des achats intégrés inappliqués, s'il y en a, je les remplis en utilisant la méthode CurrentApp.ReportProductFulfillment. Cependant, lors des tests, j'ai remarqué que cette méthode fonctionne même si l'appareil n'est pas connecté à Internet. Alors, comment et quand l'application informe-t-elle le Marché que l'achat a été un succès? Plus important encore, devrais-je le faire seulement si j'ai une connexion Internet?Comment fonctionne la méthode CurrentApp.ReportProductFulfillment?

Ceci est mon code par la voie:

var licenses = CurrentApp.LicenseInformation.ProductLicenses; 
if (licenses["PRODUCT_ID"].IsConsumable && licenses["PRODUCT_ID"].IsActive) { 
    // Fulfill consumable purchases 

    // Let the Marketplace know 
    CurrentApp.ReportProductFulfillment("PRODUCT_ID"); 
} 

Répondre

0

communications du marché se produisent sur une tâche d'arrière-plan donné naissance par le système d'exploitation à intervalles réguliers. Vous pouvez observer ce trafic si vous attachez Fiddler à une machine exécutant l'émulateur Windows Phone

Les déclarations suivantes ne sont que des suppositions de ma part, alors prenez-le avec un grain de sel. J'imagine que la communication d'arrière-plan du marché gère un certain nombre de tâches. Le plus commun d'entre eux serait de vérifier les mises à jour de l'application. Cependant, ce serait également le moment idéal pour que le système d'exploitation communique l'exécution d'une commande. Dans ce sens, les services Marketplace placent probablement votre demande de rapport en file d'attente et, si elle ne peut être communiquée immédiatement, la dérègle pour que la tâche d'arrière-plan puisse la traiter plus tard, même si le téléphone n'a pas accès aux données. Compte tenu de la nature des transactions sans numéraire modernes, je ne vois aucune raison pour laquelle la place de marché aurait besoin d'une notification immédiate de l'exécution, car elle a le temps de terminer une transaction une fois l'autorisation d'initialisation acquise.

0

CurrentApp.LicenseInformation.ProductLicenses est mis en cache par le système d'exploitation Windows Phone.

Questions connexes