我走到这一步:重新安装后,用户需要点击“购买的功能”,然后他被以$ 0.99的问题吓到了,然后有登录,然后被告知该功能已经买了,他得到它是免费的。恢复已经在iPhone上购买了应用内购买吗?
我知道苹果是一种宗教和用户都很强的信徒,但是是不是有更好的办法? :-)我想要的是检查功能,而不真正购买它。让用户输入他的帐户信息似乎是必要的,也许购买0.00美元的功能?或者有没有一种方法可以做到这一点?
我使用MKStoreKit整个应用内购买,但任何解决方案将是巨大的。
UPDATE
感谢名单,以darvids0n,你的方法解决我的问题!这里的一些工作的代码为别人想的一样:它要求
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
假设
- (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 */
}
}
谢谢,终于找到了用于此的MKStore-Kit的方法! (请参阅编辑我的问题) –
如果我有10个非消耗品购买ID,并且其中4个是由用户购买的。在还原期间,我如何才能找出哪些是先前购买的,哪些不是? – Satyam
@Satyamsvv你不会得到你的用户没有购买的购买回调。你将只能得到4个更新交易在'SKPaymentTransactionObserver'方法['-paymentQueue:updatedTransactions:'](http://developer.apple.com/library/ios/documentation/StoreKit/Reference/SKPaymentTransactionObserver_Protocol/Reference/Reference.html #// apple_ref/doc/uid/TP40008262-CH1-SW3),并且这些的'transactionState'将是'SKPaymentTransactionStateRestored'。 – darvids0n