我有一个采购清单:
item 1 $0.99 Buy
item 2 $1.99 Buy
item 3 $2.99 Buy
当我点击购买按钮时,会出现“确认您的应用内购买”警告窗口。无论我选择“购买”还是“取消”,这个警告窗口都会消失(这是正确的),但是购买列表视图控制器会弹出到它的父视图控制器。我不知道为什么。
我尝试了很多方法,得到了相同的结果——当我单击“确认您的应用内购买”警告窗口“取消”或“购买”按钮时,列表视图控制器将弹出。只是告诉为什么。
这是列表视图中的代码点击支付按钮:
- (void)buyButtonTapped:(id)sender {
UIButton *buyButton = (UIButton *)sender;
NSString *searchString ;
if (buyButton.tag == 0) {
searchString = PURCHASES_REMOVE_AD;
}else if (buyButton.tag == 1){
searchString = PURCHASES_COFFEE;
}else if (buyButton.tag == 2){
searchString = PURCHASES_MONEY;
}
for (SKProduct *product in _products) {
if ([product.productIdentifier isEqualToString:searchString]) {
[[RageIAPHelper sharedInstance] buyProduct:product];
break;
}
}
}
然后我来到这个页面:
正如您在这张图片中看到的,当我单击“取消”或“购买”按钮时,“购买”视图控制器将消失回父视图控制器,
- (void)failedTransaction:(SKPaymentTransaction *)transaction {
NSLog(@"failedTransaction...");
if (transaction.error.code != SKErrorPaymentCancelled)
{
NSLog(@"Transaction error: %@", transaction.error.localizedDescription);
}
[[SKPaymentQueue defaultQueue] finishTransaction: transaction];
}
这是我单击取消按钮的代码,没有看到任何问题。
更新
我终于弄明白了。我在 - (void)applicationDidBecomeActive:(UIApplication *)application 中创建列表视图的父视图控制器。现在我将创建移动到 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 问题消失了。谁能告诉我为什么?