【问题标题】:Can I fetch the prices of in-app purchases from my server?我可以从我的服务器获取应用内购买的价格吗?
【发布时间】:2012-12-06 08:08:22
【问题描述】:

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

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

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

【问题讨论】:

  • 您为什么不能直接向 Apple 的服务器询问可用的产品和价格?
  • @StephenDarlington 在服务器产品模型中,您需要发送一组(列表)应用内产品,其中苹果与服务器上存在的苹果匹配,并发送有效产品的数组列表身份证。
  • @Pranav 有趣,谢谢。

标签: iphone ios in-app-purchase


【解决方案1】:

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

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

【讨论】:

  • "先发送本地通过并附加到您的请求中,以便价格结果可以本地化。"需要澄清一下,谢谢。
【解决方案2】:

****Client**-iOS 应用 DS-开发者服务器 AppleS-Apple 服务器**

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

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

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

你不能determine Country associated with Apple ID logged into the iOS device。检查此问答。

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

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

【讨论】:

  • 为清楚起见,在您的示例中,您是否让服务器获取来自 Apple 的价格?我认为将货币本地化作为这样做的代价可能是值得的。
  • 不是服务器,而是从 Apple 获取价格的应用程序
  • 但如果是客户端应用程序向 Apple 询问价格,那么我们就有了我最初在问题中描述的确切情况(我正在尝试优化)。
  • 因此,解决方法是针对您服务器中的产品添加价格(以一种货币计)。我们是在谈论价格在您的服务器端本地化吗?
  • 您是否建议让我的服务器存储产品的价格(而不是每次都询问 Apple)?然后IAP purchase confirmation dialog.. 会变成什么。我认为我的代码无法控制该警报中的价格(或者我可以控制吗?)。如果我要考虑本地化,我担心价格不匹配,如我显示价格(来自我的服务器,如建议的那样)的 UI 以及警报对话框中所示。
猜你喜欢
  • 2021-11-16
  • 2012-07-16
  • 2021-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-20
相关资源
最近更新 更多