【问题标题】:Should in-app purchases work for users that have an iOS beta?应用内购买应该适用于拥有 iOS 测试版的用户吗?
【发布时间】:2015-12-09 21:44:33
【问题描述】:

我在应用商店中有一个应用,并已确认我的应用内购买适用于最新的官方版本。然而,我的一些应用程序用户很狡猾,他们拥有未发布的 iOS 版本。我的应用的应用内购买是否仍适用于 iOS 测试版?因为至少有一个或两个用户报告他们的应用内购买未正确标记为已购买。

如果您需要详细信息,当我的应用将商品标记为已购买时,不会下载任何内容。它只是在 docs 目录中写入一个文件,并为它们提供无限播放。

更新:

我在 Apple 开发者论坛中看到

“存储工具包流程”是在尝试 购买“应用内购买”项目,以便商店工具包确定 用户的 storekit 帐户有问题 - 对于 例如,当信用卡信息过期时。当这个问题 检测到,用户可以选择被带到 App Store 应用程序来更新他们的帐户信息。它曾经是 StoreKit 会提醒用户并要求他们修复应用程序中的问题 商店应用程序,当检测到问题时。从 iOS 7 开始,这 在尝试实际收费之前,检查不会打扰用户 - 请求下载应用程序或用户尝试下载应用程序时 应用内购买。

因此,我认为我的代码可能提前完成了事务。这是我认为是我的相关代码,并标记了我的怀疑。有人可以仔细检查或澄清吗?

- (void)failedTransaction:(SKPaymentTransaction *)transaction  //Working
{
    //NSLog(@"failedTransaction.");
    if (transaction.error.code != SKErrorPaymentCancelled)
    {
        // error!
        NSLog(@"Transaction error: %@", transaction.error.localizedDescription);
        [self finishTransaction:transaction wasSuccessful:NO]; //TODO: Remove this, it may be causing the bug with transaction errors in Multi Path Audio 1.1.4
    }
    else
    {
        //NSLog(@"failedTransaction, user just cancelled.");
        // this is fine, the user just cancelled
        [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
    }
}

【问题讨论】:

  • 除了 9.1 beta 中可能存在的错误,是的,IAP 应该可以工作。也许您的代码做出了一些在 iOS 9 下失败的错误假设。在您的问题中显示您的相关代码,以便人们可以看到您是否做错了什么。
  • 好的,谢谢!我用一些可疑代码和更多信息更新了我的问题。
  • 另一方面,beta 表示 beta,意思是“如果东西不起作用,就没有权利抱怨”。

标签: ios iphone beta in-app


【解决方案1】:

您必须仅在将商品交付给用户后才调用 finishTransaction。行动的顺序是:苹果拿走了用户的钱。你交付货物。你打电话给finishTransaction。如果你不发货也没关系,Apple 会记住并再次询问你直到你调用 finishTransaction。如果您在没有交付的情况下调用 finishTransaction,那么您就是在欺骗客户。

如果用户与商店的交互在用户没有交钱的情况下结束,您将永远不会被告知购买。

【讨论】:

  • 我在这里阅读了 StackOverflow 以及其他几个应该在三个地方调用 finishTransaction 的地方...... SKPaymentTransactionStatePurchased、SKPaymentTransactionStateRestored、SKPaymentTransactionStateFailed。它是否正确? stackoverflow.com/questions/4988663/…
  • 所以我可能会创建一个新的测试来确保在调用finishTransaction之前货物已经交付。感谢您的建议!
  • 这最终是正确的答案。由于我检查的方式,我的 Store Kit 逻辑在 iOS 9 中没有返回准确的响应,我必须添加额外的逻辑以确保在完成交易之前购买和交付商品。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
  • 2019-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多