• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 如何处理未完成的iOS应用内购买消耗品?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 20:01:59 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我在服务器端检查和处理 IAP 收据(消耗品),只有在应用程序恢复正常时才调用 [[SKPaymentQueue defaultQueue] finishTransaction:transaction]

当服务器没有返回这个正常(无论出于何种原因)时,应用程序将无法正确完成事务。

我现在的问题是:应用程序需要做什么才能再次接收收据以重试,或者 iOS 是否通过调用 - (void)paymentQueueSKPaymentQueue*)queue updatedTransactionsNSArray* )交易`?当我重新运行我的应用程序时,该项目被重新提交;但用户不需要重新启动应用程序。

相关问题:当​​我尝试再次(在沙盒上)购买仍待处理的项目时,我收到一条 iOS 警报,说我之前购买了它,但没有下载。为什么是这样?对于非消耗品,我期望(并且实际上已经看到)这一点。我可以再买一个消耗品,但之前的那个还在等待中。



Best Answer-推荐答案


一旦你完成了 CONSUMABLE IN-APP 的交易,下面的方法就会触发,添加这个语句“[[SKPaymentQueue defaultQueue]finishTransaction:transaction]”来删除购买的产品。使用这个语句可以避免警告消息(I之前买过但没有下载)。

-(void)paymentQueueSKPaymentQueue *)queue updatedTransactionsNSArray *)transactions
{
 for (SKPaymentTransaction *transaction in transactions)
 {        
    switch (transaction.transactionState) {
        case SKPaymentTransactionStatePurchased:
            if (transaction.downloads)
            {
                [[SKPaymentQueue defaultQueue]
                 startDownloads:transaction.downloads];
            } else {
                //Add the following line to remove purchased observer
                [[SKPaymentQueue defaultQueue] finishTransaction:transaction];                    
            }
            break;

        case SKPaymentTransactionStateFailed:
            [[SKPaymentQueue defaultQueue]
             finishTransaction:transaction];

            break;

    }
}
}

关于ios - 如何处理未完成的iOS应用内购买消耗品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22365835/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap