恢复已经购买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];