私はこれまでのところ、再インストール後、ユーザーは「機能を購入」をクリックする必要があります。その後、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 */
}
}
0.99ドルのアイテムが非消耗品である場合、「購入の復元」ボタン(または同様のボタン)を提供して、
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
既にトランザクションオブザーバを追加し、復元されたトランザクションを処理するケースを含む protocol を実装していると仮定すると(状態SKPaymentTransactionStateRestored
)、これは機能します。
次の2つのメソッドを追加します。
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue]restoreCompletedTransactions];