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

roc*_*ick 9 storekit in-app-purchase ios

我在我的申请中提供非消耗品.

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

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

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

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

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

一个想法为什么交易显示这种奇特的行为.

谢谢

rob*_*off 6

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

如您所述,系统检测到用户已拥有该产品,并为用户提供"点击下载"警报.如果用户选择下载,那么你得到的SKPaymentTransaction状态是"已购买"或"已恢复"(我忘了哪个).然后你就像往常一样提供产品.因此,用户知道他第二次没有被收费,他得到了产品.

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