Я пытаюсь реализовать IAP размещенного контента на iOS 6.0.
Не публикуя кучу кода, мой код был взят из руководств raywenderlich http://www.raywenderlich.com/21081/introduction-to-in-app-purchases-in-ios-6-tutorial и http://xinsight.ca/blog/iap-content-download-in-ios6/. Этот код отлично подходит для покупки обычных непотребных предметов.
Я создал новый элемент IAP с размещенным контентом и загрузил его через xcode (используя метод, описанный во второй ссылке выше).
Когда я иду купить товар, появляется предупреждение, и я нажимаю кнопку «Купить». Вскоре после этого моя транзакция не удалась, и ниже вызывается случай SKPaymentTransactionStateFailed:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction * transaction in transactions) {
switch (transaction.transactionState){
case SKPaymentTransactionStatePurchased: {
if (transaction.downloads) {
[[SKPaymentQueue defaultQueue] startDownloads:transaction.downloads];
} else {
// unlock features
//[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
[self completeTransaction:transaction];
}
break;
}
case SKPaymentTransactionStateFailed: {
if (transaction.downloads) {
NSLog(@"transaction failed... but found downloads");
}
[self failedTransaction:transaction];
break;
}
case SKPaymentTransactionStateRestored: {
if (transaction.downloads) {
[[SKPaymentQueue defaultQueue] startDownloads:transaction.downloads];
} else {
// unlock features
//[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
[self restoreTransaction:transaction];
}
break;
}
default:
break;
}
}
}
Код transaction.error.code выглядит как SKErrorPaymentCancelled.
Если я изменю характер этого элемента IAP в iTunesConnect, чтобы он не содержал размещенный контент, покупка завершается нормально. Я не понимаю, что могло вызвать это.
Кто-нибудь, имеющий опыт работы с контентом, размещенным на IAP, знает о подводных камнях, о которых мне следует знать? Может быть, это связано с тем, как я создал пакет размещенного контента? Я просто поместил все в группу вспомогательных файлов в xcode при создании пакета - проверка пакета архива в Finder показывает содержимое как:
/ dSYMs
/Info.plist
/ Products / Library / InAppPurchaseContent / ProductIDName / Contents / # содержание здесь #
/Products/Library/InAppPurchaseContent/ProductIDName/ContentInfo.plist
Это верно? После загрузки на нем написано «Ожидание снимка экрана», что, как я понимаю, правильно.