需要登录的弹窗在应用内购买中出现问题?

28
我在我的应用程序中集成了应用内购买功能,购买和恢复项目都可以正常工作。但是有一个问题,
当我使用test1@gmail.com购买该项目时,它成功购买该项目,并且还原也正常工作。
现在,我从设备中卸载了应用程序,还从iTunes和App Store中清除了凭据,然后重新安装。
当我点击还原按钮时,就会显示两个弹出窗口: 一个带有test1@gmail.com,另一个是Exiting或Create user。
每当我从后台返回前台时,登录弹出窗口都会显示出来。
注意:我也调用了finishTransaction方法。 但它对我没有用。
当登录弹出窗口显示时,没有任何方法被调用。

enter image description here

我该如何解决这个问题?


你在应用中实现了自动续订订阅吗? - Sagar Thummar
用户需要登录才能进行应用内购买。这是操作系统显示的系统对话框,与您的应用程序无关,也不会通过委托向您的代码提供任何回调。 - Lefteris
@Lefteris 但用户目前不想购买或恢复。尽管弹出窗口不断显示。 - Kirit Modi
1
显然,您正在从StoreKit初始化某些内容,从而触发了该操作。即使您没有调用方法,但是从StoreKit初始化某些内容也会触发该操作。 - Lefteris
@Lefteris,如果用户想要使用其他的Apple ID购买物品。那么我会初始化,此时会有两个弹出窗口。一个弹出窗口显示电子邮件ID,我已经使用这个电子邮件ID购买过了。另一个弹出窗口则是新的登录。即使取消了两个弹出窗口,其中一个显示电子邮件ID和登录的弹出窗口仍然会持续显示。 - Kirit Modi
显示剩余2条评论
3个回答

1
据我所知,此情况发生有两种情况。
  1. 存在待处理交易。 如果某些购买交易尚未完成,iOS 将尝试自动处理该交易。

  2. 某些自动续订订阅应该得到更新。 如果自动续订设置开启且订阅已过期,则 iOS 也会自动启动自动续订交易的购买交易。

当事务观察者被添加到支付队列时,就会触发此操作。

[[SKPaymentQueue defaultQueue] addTransactionObserver: yourTransactionObserver];

在任何情况下,您都可以在事务观察器中设置断点。
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions

并且了解正在处理的交易。

基本上,SKPaymentQueue没有应用程序取消正在进行的交易的功能,因此您需要继续进行该交易。


0

根据您提到的,“现在,我已经从设备中卸载了应用程序,并从iTunes和App Store中清除了凭据。然后重新安装。”,您需要在设备上使用Apple账户登录iTunes以删除此弹出窗口。


-1

这种情况有时会在沙盒环境中发生,但并非总是如此。一旦您的应用程序已上线并且应用内购买已获得Apple的批准,一切都将自动正常工作。

然而,您的应用内购买代码流程应该是正确的。如果您尚未登录,iOS会自动要求您选择登录选项,否则它将仅显示输入密码的弹出窗口,并自动填充用户名/电子邮件。


是的,但它也在实时中。 - Kirit Modi
我也遇到了同样的问题,因为弹出窗口的原因,我的构建版本被苹果拒绝了,所以我甚至无法在生产环境中测试它的工作情况。 - fruechtemuesli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接