2013-04-14 5 views
0

Я реализую при покупке приложений для своего приложения iOS. Apple отказалась от моего двоичного кода для не восстановления приобретенных продуктов. В моем приложении, когда пользователь удаляет значок продукта, если элемент заблокирован, он направляется в процесс покупки inApp, иначе продукты становятся открытыми. Нет кнопки «Купить». Теперь яблоко говорит, чтобы предоставить кнопку восстановления? Может ли кто-нибудь сказать мне, как с этим справиться? Я попыталсяПолучить список приобретенных продуктов, inApp Купить iPhone

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

//Then this delegate Function Will be fired 
- (void) paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue 
{ 
    alreadyPurchasedItems = [[NSMutableArray alloc] init]; 

    NSLog(@"received restored transactions: %i", queue.transactions.count); 
    for (SKPaymentTransaction *transaction in queue.transactions) 
    { 
     NSString *ID = transaction.payment.productIdentifier; 
     [alreadyPurchasedItems addObject:ID]; 
    } 

} 

На запуске приложения, но paymentQueueRestoreCompletedTransactionsFinished метод никогда не вызывается, так что я могу получить список уже приобретенных товаров, а затем непосредственно сообщить пользователю, если он/она приобрела это уже.

ответ

3

Как вы устанавливаете делегат [SKPaymentQueue defaultQueue]? Я предполагаю, что вы уже делаете СМТ как:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 

После этого [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; должно привести ниже метод уволят. Поэтому в случае SKPaymentTransactionStateRestored где вы реализуете его:

-(void) paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions 
{ 
    for (SKPaymentTransaction * transaction in transactions) { 
     switch (transaction.transactionState) 
     { 
      case SKPaymentTransactionStatePurchased:     
       ... 
       [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 
       break; 
      case SKPaymentTransactionStateFailed:     
       ... 
       [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 
       break; 
      case SKPaymentTransactionStateRestored:     
       ... 
       [[SKPaymentQueue defaultQueue] finishTransaction:transaction]; 
      default: 
       break; 
     } 
    }; 
} 

Вы можете посмотреть на этот учебник, восстановление объясняется более подробно в самом конце его. http://www.raywenderlich.com/21081/introduction-to-in-app-purchases-in-ios-6-tutorial