Приложението е отхвърлено, защото няма функция за възстановяване на покупките

Приложението ми беше отхвърлено поради неприлагане на функцията „Възстановяване на покупките“.

Apple казва

Установихме, че вашето приложение предлага покупки в приложението, които могат да бъдат възстановени, но не включва функция „Възстановяване“, която да позволи на потребителите да възстановят закупените по-рано покупки в приложението. За да възстановите закупени преди това продукти за покупки в приложението, би било подходящо да предоставите бутон „Възстановяване“ и да стартирате процеса на възстановяване, когато бутонът „Възстановяване“ бъде докоснат.

Така че най-накрая реших да добавя това и открих, че трябва да използваме

[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

Но не помага! Търсих подобни въпроси, но не открих, че нито един не работи за моето приложение. Това са следните връзки, които съм подредил досега:

Възстановяване на вече закупени покупки в приложение на iPhone?

iOS6 – покупка в приложение с изтегляне от сървър на Apple

Моля помогнете!! Благодаря предварително..


person Jen Jose    schedule 25.05.2015    source източник
comment
между другото ще ви трябва видим бутон за възстановяване, а не само код за автоматично възстановяване   -  person Jake Crastly    schedule 25.05.2015
comment
да, добавих!!   -  person Jen Jose    schedule 25.05.2015


Отговори (2)


Опитайте следното:

Щракнете върху бутона за възстановяване -->

- (IBAction)retoreinApp:(id)sender
{
    //set  addTransactionObserver to self. 
    [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
    [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];

}

Това ще се обади

- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {

    UIAlertView *alert ;
    if(queue.transactions.count >0)
    {
        for (SKPaymentTransaction *transaction in queue.transactions)
        {
            NSString *productId = transaction.payment.productIdentifier;

          NSLog(@" ProductIdentifier is %@",productId);
            if([productId isEqualToString:@"com.xy.yourProductId"])
            {//add code to add it to your account
             }
          alert = [[UIAlertView alloc ] initWithTitle:@"Restore Transactions" message:@"All your previous transactions are restored successfully." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];

  }
    else
    {
        alert = [[UIAlertView alloc ] initWithTitle:@"Restore Transactions" message:@"No transactions in your account to be restored." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];

    }
    [alert show];

}
person Community    schedule 25.05.2015

Актуализирайте отговора на @user4936766 до Swift 5

import StoreKit

class ViewController: UIViewController {

    @IBAction func retoreinApp(_ sender: UIButton) {

        SKPaymentQueue.default().add(self)
        SKPaymentQueue.default().restoreCompletedTransactions()
    }
}

extension ViewController: SKPaymentTransactionObserver{

    func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) { }

    func paymentQueue(_ queue: SKPaymentQueue, restoreCompletedTransactionsFailedWithError error: Error) { }

    func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue) {
        var alert: UIAlertController!
        if(queue.transactions.count > 0){
            for transaction in queue.transactions{
                 let productId = transaction.payment.productIdentifier
                 print(" ProductIdentifier is \(productId)")
                 if productId == "com.xy.yourProductId"{
                    //add code to add it to your account
                 }
            }
            alert = UIAlertController(title: "Restore Transactions", message: "All your previous transactions are restored successfully.", preferredStyle: UIAlertController.Style.alert)
         }
         else{
            alert = UIAlertController(title: "Restore Transactions", message: "No transactions in your account to be restored.", preferredStyle: UIAlertController.Style.alert)
         }
         let cancel = UIAlertAction(title: "OK", style: UIAlertAction.Style.cancel, handler: nil)
         alert.addAction(cancel)
         present(alert, animated: true){}
    }
}

Стил на бутон „Възстановяване на покупка“ в китайско приложение за възпроизвеждане на видео iQiYi.

demo

person black_pearl    schedule 12.02.2020