恢复已经购买iPhone上的应用内购买?

我到目前为止:重装后,用户需要点击“购买function”,然后他得到0.99美元的问题感到害怕,然后必须login,然后被告知function已经买了,他得到了免费的。

我知道苹果是一个宗教,用户是坚强的信徒,但是没有更好的办法吗? :-)我想要的是检查function,而不真正购买它。 让用户input他的帐户信息似乎是必要的,也许购买$ 0.00function? 或者是否有某种方法可以做到这一点?

我正在使用MKStoreKit进行整个应用程序内购买,但任何解决scheme都会很棒。


UPDATE

thanx到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美元的商品是非消费品,那么你应该提供一个“恢复购买”button(或类似的)

 [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 

假设你已经添加了一个事务观察者,并且实现了协议,包括一个case来处理已恢复的事务(状态为SKPaymentTransactionStateRestored ),这将起作用。

添加这两个方法:

 [[SKPaymentQueue defaultQueue] addTransactionObserver:self]; [[SKPaymentQueue defaultQueue]restoreCompletedTransactions];