44

アプリの購入をアプリの更新に初めて実装しましたが、3 週間待っただけで、次の理由で拒否されました。

お客様のアプリは復元可能なアプリ内購入を提供していますが、ユーザーが以前に購入したアプリ内購入を復元できる「復元」機能が含まれていないことがわかりました。以前に購入したアプリ内購入製品を復元するには、「復元」ボタンを提供し、「復元」ボタンがタップされたときに復元プロセスを開始することが適切です。

ここnavbarで、アプリの購入を表示/タップできるテーブルの右側 (上部) にボタンを追加し、ボタンにリンクされる次のコードを追加することを考えていました。

 [[SKPaymentQueue defaultQueue]   restoreCompletedTransactions];

誰かがこれが正しく、おそらく必要なすべてであることを確認できますか? 今度は無事に通過してほしいものです。前もって感謝します!

4

4 に答える 4

43

私はこれのバリエーションを使用します:

//inside of an IBaction
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue]restoreCompletedTransactions];


// Then this is called
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {
    NSLog(@"%@",queue );
    NSLog(@"Restored Transactions are once again in Queue for purchasing %@",[queue transactions]);  

    NSMutableArray *purchasedItemIDs = [[NSMutableArray alloc] init];
    NSLog(@"received restored transactions: %i", queue.transactions.count);

    for (SKPaymentTransaction *transaction in queue.transactions) {
        NSString *productID = transaction.payment.productIdentifier;
        [purchasedItemIDs addObject:productID];
        NSLog (@"product id is %@" , productID);
        // here put an if/then statement to write files based on previously purchased items
        // example if ([productID isEqualToString: @"youruniqueproductidentifier]){write files} else { nslog sorry}
    }  
}

申し訳ありませんが、これが意味をなさない場合、私は iPad を使用しています。

于 2012-06-14T08:28:09.523 に答える
28

アレックス、私は先週同じ理由で拒否されました。これはまさに Apple が望んでいたことです。このような復元ボタンを追加した後、彼らはこの件に関して他の質問をしませんでした。

もちろん、 を呼び出すだけ[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];でなく、復元自体も実装する必要があります (つまり、コンテンツをユーザーに提供します)。

于 2012-06-13T19:40:53.903 に答える
4

これは、異なる iOS デバイスで同じ Apple ID を使用してサインインできるためです。

たとえばtest@iCloud.com、iPad でログインしているとします。あなたのアプリケーションをダウンロードしたとき、広告を削除したいことに気がついたので、広告を削除するために 99 セントを支払いました。

1 年後、私は iPhone を購入することに決め、そのアカウントで test@iCloud.com にサインインし、あなたのアプリを再度ダウンロードしました。ただし、iPad で広告を削除するために既に料金を支払っているにもかかわらず、広告はまだ表示されています。そこで登場するのが復元機能です。それを使用して、iPad で行った購入を復元し、iPhone で機能させることができます。

購入を復元するには、次を使用できます。

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

これにより、

(void) paymentQueueRestoreCompletedTransactionsFinished: (SKPaymentQueue *)queue

呼び出されるメソッド。その中で、ユーザーが購入したコンテンツをユーザーに提供する必要があります。

于 2014-02-23T02:50:28.087 に答える
3

復元ボタンの代わりに、アプリ設定バンドルの復元スイッチを使用できます。これは UI を圧倒するものではなく、Apple はそれを歓迎しているようです (ただし、この方法でメカニズムを実装したことを忘れないでください)。

BOOL shouldRestorePurchases = [[NSUserDefaults standardUserDefaults] boolForKey:@"restorePurchasesKey"];
于 2013-03-14T19:30:42.700 に答える