2

目前,我的 iOS 应用程序必须向我的服务器询问可用的应用内购买产品,然后,对于产品,应用程序必须向 Apple 询问它们的价格。

为此增加的延迟可能并不多,但我想让它更快。

我可以不使用我的服务器而不是客户端来获取这些价格吗?也就是说,是否有一个基于 HTTP 的 API,我可以从服务器而不是客户端使用它来获取价格?这样我就可以为不同的用户缓存结果并减少往返时间。如果是这样,我该怎么做?如果没有,你是通过什么方式处理这个问题的?

4

2 回答 2

1

****Client**-iOS App DS -Developer Server AppleS -Apple Server**

与 DS 和 AppleS
的客户端通信 当客户端与 AppleS 通信时,您有几个优点(如下所述),而不是时间消耗的单一缺点。

  1. 当您向 AppleS 发送一组应用内产品时,它会匹配一个有效的并发送有效产品 ID 的数组列表(SKProduct 数组)。这完全消除了针对您的应用展示尚未注册、批准和许可销售的产品的风险。

  2. 本地化 - 以价格为例。假设我在美国和英国销售产品。该产品的价格将以 DS 中的美元计价。因此,您最终会向英国的用户显示以美元为单位的价格。(为了克服这个问题,DS在某种程度上应该有一种机制来根据用户所在的国家/地区本地化货币)。

仅与 DS 进行客户沟通
回答您的问题;是的,你可以使用 DS 来获取产品的价格。您可以通过向产品对象添加另一个属性(价格)来实现这一点(来自您服务器上可用的应用内购买产品列表)。需要在 DS 中实施。

例如。
Product1 - 应用内产品 ID、价格、名称、示例图片等

.
产品 n - 应用内产品 ID、价格、名称、示例图片等。

好的,现在我们如何尝试结合客户端与 DS 和 AppleS 通信的几个优势,同时仅使用 DS 进行客户端通信?

1 Adv - 通过在 DS 端手动检查或通过某些定义的过程,可以确保仅显示有效产品。

2 Adv - 要在某种程度上合并这一点,请执行以下@ DS

第 1 步 - 在 DS 端创建一个具有App Store 定价矩阵的数据库表。
第 2 步 - 当您从客户端向 DS 发出请求时,您的 DS 可以从服务请求命中中获取 IP。根据此 DS 服务可以找到用户的当前国家/地区。
第 3 步——基于用户当前所在的国家/地区,以第 1 步中的本地货币映射价格。如果当前用户所在国家/地区不是App Store 定价矩阵的一部分,则使用美元价格。(这有点接近苹果确实如此,尽管它使用与用户的 Apple ID 相关联的国家/地区)。

IAP 确认对话框中显示的最终结果本地化价格将与您显示的价格相同(避免您指出的不匹配 - 再次出现 :-))。

当属于一个国家的用户拥有属于另一个国家的 AppleID 时,整个实现将失败。它失败了,因为 DS 根据用户的位置映射价格,但IAP 确认对话框显示基于价格的用户 AppleID 的国家/地区(不匹配!!!)。

您无法确定与登录 iOS 设备的 Apple ID 关联的国家/地区。检查此问答。

我建议您实施“与 DS 和 AppleS 的客户端通信”模型,但是为了减少客户端与 DS 和 AppleS 通信时相关的延迟,有多个产品请求(比如一次一组 10 个产品或取决于关于你在你的 UI 中一次显示多少产品)。

仅当您觉得或更准确地说有分析表明您一定会因为“延迟”而失去收入或用户时,才继续使用“仅使用 DS 的客户通信”模型。

于 2012-12-06T09:17:41.970 回答
1

您可以将价格/数据以美元存储在您的服务器上的数组中,然后再次从应用程序中本地化它们。如果您稍后添加更多产品或更改价格,那么只需更新您的阵列,无论它只是位于服务器上的一个文件。当然,本地化可能需要一段时间,我不确定是否有支持它的代码,因此为每个国家/地区投入等值的美元肯定会很耗时,但可能。不过最终结果会快得多,相比之下,我已经获取了这样的产品 id 和它的 UBER。

如果您仍然从服务器获取价格,则让应用程序首先发送本地信息并将其附加到您的请求中,以便可以本地化价格结果。

于 2012-12-06T11:16:36.180 回答