0

iOS アプリケーションのアプリ内購入を実装しています。購入した製品を復元しないという理由で、Apple は私のバイナリを拒否しました。私のアプリケーションでは、アイテムがロックされている場合、ユーザーが製品のアイコンをタップすると、アプリ内購入プロセスに誘導されます。それ以外の場合、製品はオープンエンドになります。視覚的な購入ボタンはありません。今アップルは復元ボタンを提供するように言っていますか? 誰かがこれを処理する方法を教えてもらえますか? 私が試してみました

- (void) checkPurchasedItems
{
    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
}// Call This Function

//Then this delegate Function Will be fired
- (void) paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
{
    alreadyPurchasedItems = [[NSMutableArray alloc] init];

    NSLog(@"received restored transactions: %i", queue.transactions.count);
    for (SKPaymentTransaction *transaction in queue.transactions)
    {
        NSString *ID = transaction.payment.productIdentifier;
        [alreadyPurchasedItems addObject:ID];
    }

}

アプリケーションの起動時に paymentQueueRestoreCompletedTransactionsFinished メソッドが呼び出されることはないため、既に購入したアイテムのリストを取得し、ユーザーが既に購入したかどうかを直接通知できます。

4

1 に答える 1

3

のデリゲートをどのように設定します[SKPaymentQueue defaultQueue]か? 私はあなたがすでにsmtのようにしていると思います:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

その後[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];、以下のメソッドが起動されます。したがって、SKPaymentTransactionStateRestored の場合は、それを実装する場所です。

-(void) paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
    for (SKPaymentTransaction * transaction in transactions) {
        switch (transaction.transactionState)
        {
            case SKPaymentTransactionStatePurchased:                
                ...
                [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
                break;
            case SKPaymentTransactionStateFailed:                
                ...
                [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
                break;
            case SKPaymentTransactionStateRestored:                
                ...
                [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
            default:
                break;
        }
    };
}

あなたはこのチュートリアルを見ているかもしれません.restoreはそれの最後の方でより詳細に説明されています. http://www.raywenderlich.com/21081/introduction-to-in-app-purchases-in-ios-6-tutorial

于 2013-04-14T16:02:53.267 に答える