gpt4 book ai didi

ios - 应用内支付 : unclear use-case (restoreCompletedTransactions)

转载 作者:行者123 更新时间:2023-11-29 03:31:28 25 4
gpt4 key购买 nike

我的应用程序的描述

我的应用程序包含 1000 个不同的项目。所有这些都是已安装包的一部分(安装完成后无需加载它们)。项目被一项一项地显示。前 50 件元素免费。仅当用户购买了非消耗性应用内产品时,其余部分才可用。


应用如何知道产品是否被购买

当我的应用程序启动时,如果购买了产品,它会在钥匙串(keychain)中查找(这是我存储此信息的位置)。如果YES,则应用程序内支付屏幕永远不会显示,并且所有功能均完全可用。 (我将此称为“案例 0”以供进一步引用)。

如果钥匙串(keychain)不包含此信息,这可能意味着以下两种情况之一:

案例1
用户没有为产品付费(无论是在此设备上还是在任何其他设备上)。在这种情况下,我必须在第 50 个项目之后显示 InApp-Payment 屏幕,用户可以决定是否要为额外的 950 个项目付费,或者是否有足够的 50 个免费项目。

案例2
用户确实已经购买了该产品(在其他设备上或在重置之前在此设备上购买,或者......)。在这种情况下,我将通过调用 [[SKPaymentQueue defaultQueue] RestoreCompletedTransactions] 接收之前购买的产品的产品 ID。当我收到它时,productID 将存储在钥匙串(keychain)中,从现在开始,应用程序的行为应该与情况 0 完全相同。这意味着:当用户到达第 50 项时,他不应该注意到有什么特别的。他可以继续使用该应用程序并观看第 51 项以及此后的所有其他项目。决不应该显示应用内支付屏幕,并且必须向用户授予对所有项目的完全访问权限。

据我所知,只有一种方法可以区分情况 1 和情况 2。找出这两种情况中哪种情况属实的唯一方法是在 before< 之前调用 restoreCompletedTransactions/em> 到达第 50 项。如果调用返回我的产品 ID,则为情况 2,否则为情况 1。我必须在用户到达第 50 项之前进行此调用,因为如果情况 2 为 true,则不得显示付款对话框。


密码提示的问题

但是 - 我的问题来了 - 当应用程序调用 restoreCompletedTransactions 时,系统将提示用户输入其 Apple-ID 的密码。但用户看不到任何提示的原因,因为 – 取决于我绑定(bind)此调用的项目 – 他要么刚刚启动了应用程序,要么他只是在观看项目 #49(与 48 相比,这没什么特别的)之前的项目)或者他正在观看 #49 之前的项目之一。

现在想象一下一个不愿意付费的用户。也许他甚至已经停用了他设备的应用内支付。但每次他使用该应用程序并进入特定项目(假设这是非常不起眼的项目#37)时,系统都会提示他输入密码。如果我是这个用户,我会认为该应用程序有错误,或者它甚至想窃取​​我的密码!


我的请求

那么,您有什么想法如何在不疏远用户的情况下处理这个用例吗?

顺便说一句
仅当 [SKPaymentQueue canMakePayments]YES 时才调用 restoreCompletedTransactions 是一个坏主意。如果我这样做,以前(可能在其他设备上)购买过该产品并且现在在此设备上设置了 InApp-Payment = OFF 的用户将没有机会使用其已付款的产品。如果用户设置了 InApp-Payment = ON

,这也无济于事

最佳答案

从用户的角度来看,我认为您假设在没有用户首先初始化请求的情况下永远不会创建密码提示是正确的。在这种情况下,我认为最好在应用内支付屏幕中添加一个按钮,或者在它旁边的按钮旁边添加一个按钮,该按钮会转到要求用户恢复交易的屏幕。

我认为,在发生情况 2 的任何情况下,用户都会理解为什么他们之前购买的应用内购买内容没有显示。

但我认为如果您将购买的值存储在钥匙串(keychain)中并且同步到 iCloud,则他们的所有设备都会看到它,并且当您删除应用程序时钥匙串(keychain)值不会被删除,您可能也永远不会遇到情况 2 (据我所知)。

关于ios - 应用内支付 : unclear use-case (restoreCompletedTransactions),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19726887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com