web-dev-qa-db-ja.com

iPhoneで既に購入したアプリ内購入を復元しますか?

私はこれまでのところ、再インストール後、ユーザーは「機能を購入」をクリックする必要があります。その後、0.99ドルの質問に怖がってログインし、機能が既に購入されていると通知され、無料で取得します。

私はAppleは宗教であり、ユーザーは強い信者ですが、より良い方法はありませんか?:-)実際に購入せずに機能をチェックしたいです。ユーザーにアカウント情報の入力を許可する必要があるようです。$ 0.00の機能を購入しますか?またはこれを行う方法はどこかにありますか?

In-App-Purchase全体でMKStoreKitを使用していますが、どのソリューションでも素晴らしいでしょう。


[〜#〜] update [〜#〜]

darvids0nに感謝、あなたの方法は私の問題を解決しました!同じことを試みている他の人のためのいくつかの作業コードがあります:

- (void)removePreviousPurchases { //just for sandbox testing
    [[MKStoreManager sharedManager] removeAllKeychainData];
}

- (void)restorePreviousPurchases { //needs account info to be entered
    if([SKPaymentQueue canMakePayments]) {
        [[MKStoreManager sharedManager] restorePreviousTransactionsOnComplete:^(void) {
             NSLog(@"Restored.");
             /* update views, etc. */
        }
        onError:^(NSError *error) {
            NSLog(@"Restore failed: %@", [error localizedDescription]);
            /* update views, etc. */
        }];
    }
    else
    {
        NSLog(@"Parental control enabled");
        /* show parental control warning */
    }
}
40
Daniel Brown

0.99ドルのアイテムが非消耗品である場合、「購入の復元」ボタン(または同様のボタン)を提供して、

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

既にトランザクションオブザーバを追加し、復元されたトランザクションを処理するケースを含む protocol を実装していると仮定すると(状態SKPaymentTransactionStateRestored)、これは機能します。

33
darvids0n

次の2つのメソッドを追加します。

[[SKPaymentQueue defaultQueue] addTransactionObserver:self];

[[SKPaymentQueue defaultQueue]restoreCompletedTransactions];
10
manish