9

我在我的应用程序中提供了非消耗品。

假设用户购买了该项目并尝试将该应用程序安装在具有相同 id 的另一台设备上。如果用户已登录并且已经购买了该商品,我想显示一些弹出窗口并告诉用户您已经购买了它,所以现在免费下载它。现在发生的事情是,当我再次点击购买商品时是说你已经购买了该项目点击下载。

有什么方法可以获取用户登录详细信息并检查用户是否已经进行了应用内购买。

当我登录并尝试购买已购买的商品时出现问题。两种警报视图不时出现。我正在使用沙盒环境。

  1. 您已经购买了它,但尚未下载。点击“确定”立即下载。此警报视图只有确定按钮。当我们按下确定时,控制转到 - (void)failedTransaction:(SKPaymentTransaction *)transaction

  2. 您已经购买了这个。点击确定再次免费下载。这个警报视图有两个按钮,一个是取消,另一个是确定。按下 OK 按钮后,控制转到 - (void)completeTransaction:(SKPaymentTransaction *)transaction,这很好。

一个想法为什么交易会表现出这种特殊的行为。

谢谢

4

3 回答 3

6

我不明白你为什么认为你需要做一些不同的事情。

正如你所说,系统检测到用户已经拥有该产品,并给用户一个“点击下载”的提示。如果用户选择下载,那么您将获得SKPaymentTransaction其状态是“已购买”或“已恢复”(我忘了是哪个)。然后,您只需照常提供产品。所以用户知道他没有被第二次收费,他得到了产品。

如果您说您想自动检测用户拥有的产品,而无需用户做任何事情:您只能通过发送restoreCompletedTransactionsSKPaymentQueue. 当您这样做时,用户可能必须输入他的 iTunes 密码。我更喜欢在我的 UI 中有一个“恢复购买”按钮,这样用户就知道为什么要他输入密码。

于 2012-05-03T06:07:50.093 回答
0

沙盒似乎存在很多稳定性问题,请参阅Apple 开发者论坛中的此线程https://devforums.apple.com/thread/164500?tstart=0 (需要登录)。我一直在使用消耗品测试应用内购买,但从未见过案例 2,我只得到案例 1(正如论坛中提到的)。所以你可能会认为自己很幸运能不时得到 2) :(

于 2012-08-30T12:36:09.087 回答
0

面对这两个问题,我对它们有以下想法

1]包括我在内的许多开发人员通过重启设备解决了第一个问题。

2] 对于第二个问题,因为“购买”或“恢复”回调在点击“确定”时被调用,因此产品将单独可用。

希望能帮助到你 !

于 2014-01-12T08:26:02.753 回答