由于恢复IAP,Apple拒绝了我的应用程序

时间:2013-05-06 12:19:51

标签: iphone ios in-app-purchase

我有一个恢复按钮。问题是,如果他们没有“完成恢复,并且他们尝试购买物品,并且他们已经购买了该物品,我需要告诉他们他们已经购买了它而不进行购买。所以我需要一种方法来知道他们购买了哪些物品,而不进行恢复。我试图在用户试图购买时首先进行恢复,但苹果拒绝了我的应用。他们表示,在显示“确认应用程序内购买”对话框之前,无法进行恢复。

请帮我找到正确的方法。

提前致谢。

3 个答案:

答案 0 :(得分:6)

您可以将这些数据保存在NSUserDefaults中。而且您不需要显示警告说已经购买了这些物品。如果它的非消费品苹果显示警告说他们已经购买了该物品!

修改

1)您需要在视图中添加3个按钮

  • 购买按钮
  • 还原按钮
  • 演示版

如果您在应用中支持应用内购买,则需要为用户提供还原选项。否则Apple会拒绝您的应用。

2)如果用户按下购买按钮,请不要检查用户是否已经购买了您的应用程序。因为Apple不会向用户收取两次相同的非消费品。因此,只需浏览您的购买代码,如果用户已购买它,Apple的StoreKit框架将调用它的委托方法

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions

  

SKPaymentTransactionStatePurchased

交易状态。因此,您可以向他显示登录屏幕。

3)如果用户按下恢复按钮,则只需执行恢复代码

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

并且在第二步中它会调用具有相同事务状态的委托方法。因此,您可以向用户显示登录页面。

4)如果用户按下演示版按钮,请向他演示演示版。

5)如果用户购买了您的应用,将其删除,如果他重新安装,请将其视为新用户。向他展示这3个按钮,用户可以恢复购买,然后您可以向他显示登录页面。

6)如果您确实需要跟踪是否在确切的设备上购买了应用程序,那么您可以使用钥匙串存储您的数据,因为即使应用程序已卸载或已删除,Keychain项也不会被删除。这个Api将有很多帮助link,看看

您可以参考Apple关于钥匙串数据的documentation

答案 1 :(得分:2)

据Apple称,“在显示确认应用程序内购买对话框之前,无法进行恢复。”使用 - (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)队列 功能,检查代码

- (void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error {  
     NSLog(@"%@",error);
}

// Call This Function
- (void) checkPurchasedItems
{
    [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
}

//Then this delegate Function Will be fired
- (void) paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
{
    purchasedItemIDs = [[NSMutableArray alloc] init];
    NSLog(@"received restored transactions: %i", queue.transactions.count);

    for (SKPaymentTransaction *transaction in queue.transactions)
    {
        NSString *productID = transaction.payment.productIdentifier;

        [purchasedItemIDs addObject:productID];

        NSLog(@"%@",purchasedItemIDs);
    }
}

答案 2 :(得分:1)

据我所知,没有其他方法可以做到这一点。

您应该提供恢复按钮以恢复应用内购买,否则Apple将拒绝您的应用。

如果不显示应用内购买确认提醒,您将无法连接到应用程序内服务器或还原产品。