2013-08-23 2 views
0

Я тестирую приложение для Windows Phone 8 для сценариев, где мое приложение переходит на задний план, прежде чем оно сможет выполнить потребительскую покупку. Таким образом, при каждом запуске приложения я проверяю, есть ли какие-либо невыполненные покупки в приложении, если есть, я выполняю их с использованием метода CurrentApp.ReportProductFulfillment. Однако во время тестирования я заметил, что этот метод работает, даже если устройство не подключено к Интернету. Итак, как и когда приложение позволяет Marketplace знать, что покупка прошла успешно? Что еще более важно, должен ли я делать это только в том случае, если у меня есть подключение к Интернету?Как работает метод CurrentApp.ReportProductFulfillment?

Это мой код, кстати:

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"); 
} 

ответ

0

Торговая связь происходит на фоне задачи, порожденного ОС на регулярные промежутки времени. Вы можете наблюдать за этим трафиком, если вы присоедините Fiddler к машине с эмулятором Windows Phone.

Следующие утверждения являются лишь предположениями с моей стороны, поэтому возьмите их с солью. Я бы предположил, что фоновая коммуникация Marketplace выполняет ряд задач. Наиболее распространенным из них будет проверка обновлений приложений. Однако это также идеальное время для того, чтобы ОС сообщала выполнение заказа. В этом ключе службы Marketplace, скорее всего, ставят очередь на запрос вашего отчета и, если он не может быть немедленно передан, отменяют его для выполнения фоновой задачи в более позднее время, что позволяет использовать этот метод, даже если телефон не имеет доступа к данным. Учитывая характер современных безналичных транзакций, я не вижу причин, по которым Marketplace потребует немедленного уведомления о выполнении, так как у него есть время для завершения транзакции после получения авторизации авторизации.

0

CurrentApp.LicenseInformation.ProductLicenses кэшируется операционной системой Windows.

Смежные вопросы