StoreKit在iPhone OS 3.0中的设计技巧?

Gro*_*hal 7 iphone storekit iphone-sdk-3.0

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

我知道API是新的 - 但我的应用程序中有一些优质内容我想要用户付费,这似乎是一种理想的方式 - 而不是将它们指向一个网站,以便单独支付订阅费用.

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

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

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


任何人都可以推荐一个使用StoreKit API的好应用程序,我可以为用户交互建模吗?

Car*_*tin 7

实现StoreKit时要考虑的事项:

  1. 当你[[SKPaymentQueue defaultQueue] restoreCompletedTransactions];有时打电话时,你会在(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue 回叫之前(有时很久以前)收到- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions回叫.(有时候交易也会丢失.)

  2. 有时当您向队列添加购买时,会从队列[[SKPaymentQueue defaultQueue] addPayment:payment];中删除该事务,并且您获得的唯一反馈是:- (void)paymentQueue:(SKPaymentQueue *)queue removedTransactions:(NSArray *)transactions

  3. 用户取消返回各种错误消息,并且某些错误条件会返回SKErrorPaymentCancelled错误代码.特别:

    • 如果在"您已购买此产品"提示时用户点击取消,则交易错误为零.
    • 如果用户在出现"登录:[使用现有帐户] [创建新帐户] [取消]"提示时取消,则错误代码为SKErrorUnknown.
    • 如果用户点击[确定]而不是在提示输入密码时取消并且未输入密码,则错误代码为SKErrorPaymentCancelled.

  4. 不要忘记实现其他SKRequest回调:

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

    - (void)requestDidFinish:(SKRequest *)request