【问题标题】:Design tips for StoreKit in iPhone OS 3.0?iPhone OS 3.0 中 StoreKit 的设计技巧?
【发布时间】:2009-06-25 07:41:10
【问题描述】:

我打算在 iPhone 应用程序中实现 StoreKit,想知道是否有任何经验可以指出使用 StoreKit 的任何陷阱或陷阱?

我知道 API 是新的 - 但我的应用中有一些高级内容我想要求用户付费,这似乎是一种理想的方式 - 而不是将他们引导到一个网站以单独付款他们的订阅。

我还假设有关于如何在应用商店中列出应用的指南,以明确该应用可以免费安装 - 但您必须升级某些功能。

更新(来自 cmets): 您无法将免费应用程序转换为付费应用程序 - 因此用户必须先以最低成本安装它,然后您才能使用 StoreKit API 为其他软件收费。

第二次更新:您现在可以在免费应用程序中使用 API - Apple 最近更改了规则


任何人都可以推荐一个使用 StoreKit API 的优秀应用程序,我可以在其上对用户交互进行建模吗?

【问题讨论】:

  • 您可能会注意到,已经明确指出免费应用程序不能对附加内容收费,只有付费应用程序可以。无论您在描述中使用哪种语言,他们都不会让它进入商店。
  • 是的,显然你必须为初始应用收费,即使它只有 99c 才能使用应用内购买的东西
  • 顺便说一句:“而不是将他们引导到网站以单独支付订阅费用。” - 我相信这也超出了应用商店的条款(因为 Apple 并没有那样做)。
  • Evernote 做到了这一点,它在应用商店中。
  • 免费应用现在可以实现应用内购买。

标签: iphone iphone-sdk-3.0 storekit


【解决方案1】:

实现 StoreKit 时要考虑的事项:

  1. 当您调用[[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; 时,有时您会在- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions 回调之前(有时长时间之前)收到(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue 回调。 (有时交易也会丢失。)

  2. 有时,当您使用 [[SKPaymentQueue defaultQueue] addPayment:payment]; 将购买添加到队列时,交易会从队列中删除,您得到的唯一反馈是:- (void)paymentQueue:(SKPaymentQueue *)queue removedTransactions:(NSArray *)transactions

  3. 用户取消会返回各种各样的错误消息,并且某些错误条件会返回 SKErrorPaymentCancelled 错误代码。具体来说:

    • 如果用户在提示“您已购买此产品”时点击取消,则交易错误为零。
    • 如果用户在提示“登录:[使用现有帐户] [创建新帐户] [取消]”时点击取消,则错误代码为 SKErrorUnknown。
    • 如果用户在提示输入密码且未输入密码时点击 [OK] 而不是取消,则错误代码为 SKErrorPaymentCancelled。
  4. 别忘了实现其他 SKRequest 回调:

    - (void)request:(SKRequest *)request didFailWithError:(NSError *)error;

    - (void)requestDidFinish:(SKRequest *)request

【讨论】:

    【解决方案2】:

    我认为必须考虑收视率和评论的当前状态。客户对应用程序的印象一直趋于负面(这对许多优秀的开发人员不利)。

    我怀疑 SK 会给您的客户提供另一个对您的申请“不满”的理由。

    您必须小心如何表示您的“高级”或“附加”内容。请记住,到目前为止,客户一直在获得对应用程序的免费更新。取决于您的执行和您的目标市场,客户肯定会强烈反对。

    事实上,如果您宣传:“我不对额外内容收费”,它可能会促进您的销售。通过向客户保证 1.99 美元等于 1.99 美元,我可以看到这是吸引客户的新趋势。

    因此,除了客户感知之外,您还必须维护后端基础架构以保存客户记录以供恢复。我意识到开放式利润的前景似乎很诱人,但在为您的应用实现这一点之前,还有很多事情需要考虑。

    【讨论】:

    • 这个答案不再正确 - 但我似乎无法改变它!
    【解决方案3】:

    我围绕 StoreKit 框架做了一个很好的包装。 the wrapper is available here

    【讨论】:

      【解决方案4】:

      请仔细阅读文档,并执行所有必要的操作以在辅助设备上重新加载数据。

      请记住,消耗品(不必支持在其他设备上免费重新购买)和非消耗品(您在哪里购买,听起来就像您拥有的一样)是有区别的。

      另外,我听到的最大的一个提示是,在测试时,请在手机上注销您自己的 iTunes 帐户,然后登录您用于测试的帐户。

      【讨论】:

        猜你喜欢
        • 2010-11-17
        • 2011-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多