1

購入品の復元に取り組んでいるので、疑いはほとんどありません

1) 復元ボタンの表示方法

左上隅に表示し、クリックするとこの関数を呼び出します

- (IBAction)restorePurchases:(id)sender
    {
        [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
        [[SKPaymentQueue defaultQueue]restoreCompletedTransactions];

    }

しかし、ユーザーがアイテムを購入していない場合、またはユーザーがアイテムを購入したが、アプリを削除して再インストールしていない場合はどうなりますか?

2) アイテムを購入してアプリを削除し、アプリを再インストールして復元ボタンをクリックすると、この関数が呼び出されます

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

しかし、今、私がアイテムを何もせずに単に復元ボタンをクリックすると、Apple Id を入力した後、何も起こらず、上記の関数を呼び出しません。なぜこれが起こっているのか知りたいです。

また、復元するアイテムがないというメッセージをユーザーに表示したいので、どうすればよいですか。

私はこれを検索しましたが、元に戻すトランザクションがない場合に呼び出されるデリゲート関数の 1 つです。

- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
{

}

私が行ったことは、ここで復元するアイテムがないかどうかを確認したことです。このアプローチが正しいかどうかにかかわらず、復元するアイテムがないと表示されます。

よろしくランジット

4

1 に答える 1

0

から直接Store Kit Header File

//非同期。現在のユーザーの完了したトランザクションをキューに追加して、再完了します。ユーザーは認証を求められます。オブザーバーは、0個以上の-paymentQueue:updatedTransactions:を受け取り、続いて-paymentQueueRestoreCompletedTransactionsFinished:成功した場合または-paymentQueue:restoreCompletedTransactionsFailedWithError:失敗した場合に受け取ります。部分的に成功した場合でも、一部のトランザクションは配信される可能性があります。

- (void)restoreCompletedTransactions  __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
于 2013-02-21T07:06:55.927 に答える