iOS 6.0 でホストされたコンテンツの IAP を実装しようとしています。
たくさんのコードを投稿することなく、私のコードは 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 経由でアップロードしました (上記の 2 番目のリンクで説明されている方法を使用)。
商品を購入しようとすると、アラートが表示され、[購入] をクリックします。この直後に私のトランザクションは失敗し、ケース 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 のようです。
iTunesConnect でこの IAP アイテムの性質をホストされたコンテンツを持たないように変更すると、購入は問題なく完了します。何が原因なのか途方に暮れています。
IAP でホストされたコンテンツの経験がある人は、注意すべき落とし穴を知っていますか? ホステッド コンテンツ パッケージの作成方法に関係している可能性はありますか? パッケージを作成するときに、xcode の Supporting Files グループにすべてを配置しました。ファインダーでアーカイブ パッケージを調べると、内容が次のように表示されます。
/dSYM
/Info.plist
/Products/Library/InAppPurchaseContent/ProductIDName/Contents/#ここにコンテンツ#
/Products/Library/InAppPurchaseContent/ProductIDName/ContentInfo.plist
これは正しいです?アップロードすると、「スクリーンショットを待っています」と表示されますが、これは正しいと理解しています。