【发布时间】:2012-12-17 06:32:17
【问题描述】:
我在我的应用程序中使用应用内购买。一切正常。 用户可以正常购买、恢复交易。
我在恢复功能方面有 1 个问题:
我该如何实现 - 用户不购买任何物品就无法恢复,因为当用户在不购买任何物品的情况下点击恢复按钮时,它会进行恢复并且应用程序被阻止。
【问题讨论】:
标签: objective-c ios in-app-purchase
我在我的应用程序中使用应用内购买。一切正常。 用户可以正常购买、恢复交易。
我在恢复功能方面有 1 个问题:
我该如何实现 - 用户不购买任何物品就无法恢复,因为当用户在不购买任何物品的情况下点击恢复按钮时,它会进行恢复并且应用程序被阻止。
【问题讨论】:
标签: objective-c ios in-app-purchase
无需实现网络服务,只需几行代码即可解决问题 -
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {
int totalNumberOfPurchaseToBeRestored = queue.transactions.count;
if (totalNumberOfPurchaseToBeRestored == 0)
{
//No item found for Restore"
}
else
{
// Restore items
}
}
【讨论】:
当您的交易完成后,更新 ProductPurchased。并检查 viewDidLoad 中 ProductPurchased 的值并相应地设置恢复按钮。检查下面的代码可能对您有帮助并告诉我。
if([[[NSUserDefaults standardUserDefaults]valueForKey:@"ProductPurchased"]intValue]==1)
restoreButton.hidden=YES;
在恢复事务完成事务方法中编写如下代码。
- (void)restoreTransaction:(SKPaymentTransaction *)transaction
{
if([[NSUserDefaults standardUserDefaults] valueForKey:@"ProductPurchased"] == 0)
[[NSUserDefaults standardUserDefaults] setValue:@"1" forKey:@"ProductPurchased"];
self.viewController.restoreButton.hidden=YES;
}
- (void)completeTransaction:(SKPaymentTransaction *)transaction
{
if([[NSUserDefaults standardUserDefaults] valueForKey:@"ProductPurchased"] == 0)
[[NSUserDefaults standardUserDefaults] setValue:@"1" forKey:@"ProductPurchased"];
self.viewController.restoreButton.hidden=YES;
}
【讨论】: