如何检查用户是否已下载非消耗品Inapp购买

时间:2012-05-03 05:39:40

标签: ios in-app-purchase storekit

我在申请时提供非消耗品。

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

有没有办法获取用户登录详细信息并检查用户是否已经进行了应用程序内购买。

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

  1. 您已经购买了,但尚未下载。点击即可立即下载。 这个警报视图只有OK按钮。当我们按下Ok控制转到 - (void)failedTransaction:(SKPaymentTransaction *)事务

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

  3. 为什么交易显示出这种奇特的行为。

    谢谢

3 个答案:

答案 0 :(得分:6)

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

正如您所说,系统检测到用户已拥有该产品,并为用户提供“点击下载”提醒。如果用户选择下载,则会得到SKPaymentTransaction其状态为“已购买”或“已恢复”(我忘记了哪个)。然后你就像往常一样提供产品。因此,用户知道他第二次没有被收费,他得到了产品。

如果您说要自动检测用户拥有的产品,用户无需执行任何操作:您只能通过向restoreCompletedTransactions发送SKPaymentQueue来执行此操作。当您这样做时,用户可能必须输入他的iTunes密码。我更喜欢在我的用户界面中只有一个“恢复购买”按钮,因此用户知道为什么要求他提供密码。

答案 1 :(得分:0)

Sandbox似乎存在很多稳定性问题,请参阅Apple Developer Forum中的此帖子https://devforums.apple.com/thread/164500?tstart=0(需要登录)。我一直在测试应用程序购买消费品和从未见过的情况2,我只得到案例1(正如在论坛中提到的)。所以你可能会认为自己很幸运,偶尔得到2):(

答案 2 :(得分:0)

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

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

2]对于第二个问题,因为在录制“确定”时会调用“已购买”或“已恢复”的回调,因此产品本身就可用。

希望它有所帮助!