iPhone OS 3.0 中 StoreKit 的设计技巧?
Posted
技术标签:
【中文标题】iPhone OS 3.0 中 StoreKit 的设计技巧?【英文标题】:Design tips for StoreKit in iPhone OS 3.0? 【发布时间】:2009-06-25 07:41:10 【问题描述】:我打算在 iPhone 应用程序中实现 StoreKit,想知道是否有任何经验可以指出使用 StoreKit 的任何陷阱或陷阱?
我知道 API 是新的 - 但我的应用中有一些高级内容我想要求用户付费,这似乎是一种理想的方式 - 而不是将他们引导到一个网站以单独付款他们的订阅。
我还假设有关于如何在应用商店中列出应用的指南,以明确该应用可以免费安装 - 但您必须升级某些功能。
更新(来自 cmets): 您无法将免费应用程序转换为付费应用程序 - 因此用户必须先以最低成本安装它,然后您才能使用 StoreKit API 为其他软件收费。
第二次更新:您现在可以在免费应用程序中使用 API - Apple 最近更改了规则
任何人都可以推荐一个使用 StoreKit API 的优秀应用程序,我可以在其上对用户交互进行建模吗?
【问题讨论】:
您可能会注意到,已经明确指出免费应用程序不能对附加内容收费,只有付费应用程序可以。无论您在描述中使用哪种语言,他们都不会让它进入商店。 是的,显然你必须为初始应用收费,即使它只有 99c 才能使用应用内购买的东西 顺便说一句:“而不是将他们引导到网站以单独支付订阅费用。” - 我相信这也超出了应用商店的条款(因为 Apple 并没有那样做)。 Evernote 做到了这一点,它在应用商店中。 免费应用现在可以实现应用内购买。 【参考方案1】:实现 StoreKit 时要考虑的事项:
当您调用[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
时,有时您会在- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
回调之前(有时长时间之前)收到(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue
回调。 (有时交易也会丢失。)
有时,当您使用 [[SKPaymentQueue defaultQueue] addPayment:payment];
将购买添加到队列时,交易会从队列中删除,您得到的唯一反馈是:- (void)paymentQueue:(SKPaymentQueue *)queue removedTransactions:(NSArray *)transactions
用户取消会返回各种各样的错误消息,并且某些错误条件会返回 SKErrorPaymentCancelled 错误代码。具体来说:
如果用户在提示“您已购买此产品”时点击取消,则交易错误为零。 如果用户在提示“登录:[使用现有帐户] [创建新帐户] [取消]”时点击取消,则错误代码为 SKErrorUnknown。 如果用户在提示输入密码且未输入密码时点击 [OK] 而不是取消,则错误代码为 SKErrorPaymentCancelled。别忘了实现其他 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 帐户,然后登录您用于测试的帐户。
【讨论】:
以上是关于iPhone OS 3.0 中 StoreKit 的设计技巧?的主要内容,如果未能解决你的问题,请参考以下文章
在 iPhone OS 3.0 下自定义 UIImagePickerController?
在一个可执行文件中使用 iPhone OS 3.0 功能(如果可用)和 2.1 功能(如果不可用)
NSFetchedResultsController - 委托方法在 iPhone OS 3.0 下崩溃,但不在 3.1 下
iPhone OS 3.0 上的音频录制错误 kAudioQueueErr_CannotStart