ios内购(iap)关于问题“您已经购买了此程序内购买(In App Purchase)项目,但尚未下载"的解决方案

在iOS应用内购买(IAP)过程中遇到'您已经购买了此程序内购买项目,但尚未下载'的问题,通常由于购买后未调用finishTransaction导致。解决方法是在用户再次尝试购买时,检查并处理未完成的交易,通过[SKPaymentQueue defaultQueue] transactions]获取历史交易,然后完成相应处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近日在项目内购中遇到“您已经购买了此程序内购买(In App Purchase)项目,但尚未下载”的问题,查阅google和百度各种文章,没找到合适的解决方案,折腾一整天,终于解决,解决方案贴出来,供大家参考。也是为了验证这个方案的正确性。欢迎拍砖!

首先说说出现这个问题的原因,一般是购买成功后业务逻辑出了问题(或者是逻辑依赖网络,网络出了问题),没有成功调用finishTransaction,看如下代码:

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions {
	for(SKPaymentTransaction *transaction in transactions) {
		switch (transaction.transactionState) {
				
			case SKPaymentTransactionStatePurchasing:
				// Item is still in the process of being purchased
				break;
				
			case SKPaymentTransactionStatePurchased:
				// Item was successfully purchased!
				[self completeTransaction:transaction];//这儿出了问题抛异常,导致下面一句代码没执行
				
				[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
				brea
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值