1

假设在我的应用程序中,我以 0.99 美元的价格出售猫,以 0.99 美元的价格出售狗,以 0.99 美元的价格出售鸟类。或者,您可以以 1.99 美元的折扣价购买全部 3 件。“全部购买”将在 iTunes Connect 中拥有自己的产品 ID。

现在,假设我进行更新。我添加了 0.99 美元的鱼和 0.99 美元的马。现在,要“全部购买”,我想收取更多费用,比如 2.99 美元。

那么如果 A 不安装此更新怎么办?

当他们去“全部购买”时,他们将被收取 2.99 美元的费用,因为我在 iTunesConnect 中提高了价格以反映他们现在获得 5 套动物的事实。但是A只以5块的价格拿到了3套,不高兴。

我错过了什么还是这只是一个有缺陷的场景?我看到的唯一选择是为每次更新创建不同的“全部购买”产品 ID,但这很快就会变得难以管理。除了强制更新,还有其他选择吗?

4

1 回答 1

1

首先,我真的很讨厌强制更新的应用程序。持续唠叨也很糟糕——在一个应用程序中,每次启动它都会唠叨三遍(我认为他们在更新中修复了这个错误)。

如果购买的是非消耗品...

您正在做一些 IAP 并不真正支持的事情:目前没有类似的方法可以购买一张“专辑”,该专辑也将个别曲目标记为已拥有,因此它们不会被无意中重新购买。

也就是说,

  • 如果在 1.0 中购买组合不应该在 1.1 中给您鱼+马,那么您需要新产品或消耗品。
  • 如果在 1.0 版本中购买了 cat+dog+bird 组合的用户在 1.1 版本中得到了 cat+dog+bird+fish+horse,那应该没问题。如果用户更新应用程序,它将自行修复。

我假设后者:用户正在购买“所有动物”,这会在新版本的应用程序中自动提供新动物。

(你可以提醒用户更新——只是不要太烦人!)。

在这种情况下我不会太担心——我的直觉是,手机太旧而无法更新的用户不太可能购买应用程序,更不用说 IAP,而故意避免更新的用户也可能不会购买 IAP。

此处提醒可能有用(“顺便说一句,这也解锁了 1.1 版中的鱼+马”)——只要确保你没有阻塞 UI。

如果购买的是消耗品...

有两种可能性。

  • 在用户更新应用程序之前价格会发生变化。用户的帐户获得猫+狗+鸟的信用。

    当用户更新应用程序时,您也许可以解决此问题,但似乎没有可靠的方法来判断用户购买了哪个 IAP 版本:您可以尝试SKProduct.{price,priceLocale}与收据一起存储,但不能保证您从产品中读取的价格与交易中支付的价格相同。那好吧。

    根据 iOS In-App Purchase Programming Guide,价格似乎也不在交易收据中

  • 用户在价格变化之前更新应用程序。用户可以以1.0的价格购买1.1的组合!

我认为您无法确保 IAP 价格变化与应用更新可用同步发生;试图强制升级可能只会让一些用户感到沮丧,因为升级尚不可用。唯一安全的选择似乎是第二种,尽管它可能会损失一些收入。

但是,由于用户从根本上购买的是不同的东西,所以它们确实应该是不同的产品。

(在非消耗品的情况下,它们是“相同的东西”,因为你得到的东西并不取决于你购买它的版本。)

于 2013-05-01T00:01:49.630 回答