Sur*_*ore 7 objective-c storekit in-app-purchase ios
嗨我需要在Inapp-Purchase中实现恢复功能,为此创建了一个"恢复"按钮,它是调用方法
-(void)restorePurchasedProductsWithProductId:(NSString*)prodID
{
_productIdsArray = [[NSMutableArray alloc] init];
productID = [prodID retain];
[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
}
Run Code Online (Sandbox Code Playgroud)
它给了我一个输入苹果id密码的弹出窗口.在这样做之后没有任何反应.
我读到了它所调用的地方
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
Run Code Online (Sandbox Code Playgroud)
所以我喜欢这样
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
NSLog(@"paymentQueue");
for (SKPaymentTransaction *transaction in transactions)
{
switch (transaction.transactionState)
{
case SKPaymentTransactionStatePurchased:
[self completeTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
[self failedTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
NSLog(@"restored");
[self restoreTransaction:transaction];
break;
default:
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
但问题是上面的方法并没有调用这个
- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
Run Code Online (Sandbox Code Playgroud)
也不
-(void)paymentQueue:(SKPaymentQueue *)queue restoreCompletedTransactionsFailedWithError:(NSError *)error
Run Code Online (Sandbox Code Playgroud)
我还包括了所需的协议,
有些正文可以帮助我为什么这些委托方法不会要求恢复过程.我正在尝试使用测试帐户.
Bar*_*che 12
您需要确保实现paymentQueueRestoreCompletedTransactionsFinished:并paymentQueue: restoreCompletedTransactionsFailedWithError:注册为支付队列的观察者的类.
如果您已将此代码编写为a UIViewController,请尝试在以下位置添加此代码viewDidLoad:
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
Run Code Online (Sandbox Code Playgroud)
并在viewDidDisappear:
[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];
Run Code Online (Sandbox Code Playgroud)