在应用程序购买恢复按钮

Ale*_*x G 43 in-app-purchase appstore-approval ios

我已经第一次将应用内购买应用到我的应用更新中,只是等了3周并因为以下原因拒绝了:

我们发现您的应用提供了可以恢复的应用内购买,但它不包含"恢复"功能,以允许用户恢复之前购买的应用内购买.要恢复以前购买的应用程序内购买产品,最好提供"恢复"按钮,并在点击"恢复"按钮时启动恢复过程.

现在我想在navbar我的桌子右侧(顶部)添加一个按钮,可以看到/点击应用程序购买并添加以下代码链接到按钮:

 [[SKPaymentQueue defaultQueue]   restoreCompletedTransactions];
Run Code Online (Sandbox Code Playgroud)

有人可以验证这是否正确并且很可能只需要所有这些?希望这次成功通过.提前致谢!

Bri*_*oah 41

我使用了以下变体:

//inside of an IBaction
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
[[SKPaymentQueue defaultQueue]restoreCompletedTransactions];


// Then this is called
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {
    NSLog(@"%@",queue );
    NSLog(@"Restored Transactions are once again in Queue for purchasing %@",[queue transactions]);  

    NSMutableArray *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 (@"product id is %@" , productID);
        // here put an if/then statement to write files based on previously purchased items
        // example if ([productID isEqualToString: @"youruniqueproductidentifier]){write files} else { nslog sorry}
    }  
}
Run Code Online (Sandbox Code Playgroud)

对不起,如果没有意义,我就在iPad上.

  • [[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 解决了我的问题!谢谢!许多其他例子忽略了这一行. (8认同)
  • 这不准确.调用restoreCompletedTransations后,将调用的委托方法是 - (void)paymentQueue:(SKPaymentQueue*)queue updatedSnsactions:(NSArray*)transactions (2认同)

Nik*_*rov 28

亚历克斯,我上周因为同样的原因被拒绝了,这正是苹果想要的 - 在添加了这样的恢复按钮后,他们没有就此问题提出任何其他问题.

当然,您不仅需要调用,还需要[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];实现恢复(我的意思是,向用户提供内容).

  • 如何获取最后的交易明细或恢复上次完成交易?上面的方法给了我很多的ID,并没有给出最后一个购买ID. (2认同)