2

我正在爲iOS執行自動更新的InApp購買。它在第一個月工作正常。但我無法知道用戶的訂閱是否自動更新,或者不知道當前InApp購買的狀態如何。檢查自動更新的InApp購買iOS

在StackOverflow上學習了很多答案之後,我能夠理解我必須提供恢復按鈕才能恢復事務。我已經實施了它,它將我的所有交易一直交給日期。所以,我無法得到我最後的交易。因此,請幫助瞭解上次自動續訂事務的狀態,以便我能夠更新服務器上的狀態。

下面是我使用恢復我的交易代碼:

[[SKPaymentQueue defaultQueue] addTransactionObserver:self]; 
[[SKPaymentQueue defaultQueue]restoreCompletedTransactions]; 

和執行其代表如下:

- (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: %zd", queue.transactions.count); 

for (SKPaymentTransaction *transaction in queue.transactions) 
{ 
    NSString *productID = transaction.payment.productIdentifier; 
    [purchasedItemIDs addObject:productID]; 
    NSLog (@"product id is %@" , productID.description); 
    NSLog (@"observationInfo is %@" , transaction.payment.productIdentifier.observationInfo); 


    // here put an if/then statement to write files based on previously purchased items 
    // example if ([productID isEqualToString: @"youruniqueproductidentifier]){write files} else { nslog sorry} 
} 
} 


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

回答

0

我猜交易恢復是不行的,如果應用程序正在運行和交易正在更新。請參閱StoreKit指南: -

訂閱成功更新後,Store Kit會將更新的 事務添加到事務隊列中。您的應用程序會在啓動時檢查 事務隊列,並以與其他任何事務相同的方式處理續訂 。請注意,如果您的應用在訂閱續訂時已經運行 ,則不會調用事務觀察器; 您的應用在下次啓動時會查找有關續訂的信息。

重新啓動應用程序後,事務恢復功能可以正常恢復當前的自動更新事務。

替代地,如果您想要檢查交易是否已更新或沒有重新啓動應用程序,您可以使用手動刷新「應收賬款」

鏈接(到期和更新): - https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Subscriptions.html