Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Design tips for StoreKit in iPhone OS 3.0?

I am going to implement StoreKit in an iPhone application and wanted to know if there is any experience out there already that could point out any pitfalls or traps in using StoreKit?

I know the API is new - but there is some premium content in my app that I would like to ask users to pay for and this seems an ideal way to do it - rather than directing them to a website for separate payment on their subscription.

I also assume there are guidelines for how you list an app in the app store to make clear that the app is free to install - but you must upgrade for certain functionality.

UPDATE (from comments): You cannot convert a FREE app into a paid app - so the user must first install it at the minimum cost before you can then use the StoreKit API to charge for additional software.

2ND UPDATE: You can now use the API in Free Apps - Apple changed the rules recently


Can anyone recommend a good application that uses the StoreKit API that I might model the user interaction on?

like image 657
Grouchal Avatar asked Jun 25 '09 07:06

Grouchal


3 Answers

Things to think about when implementing StoreKit:

  1. When you call [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; sometimes you get the (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue callback before (and sometimes long before) the - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions call back. (Also sometimes transactions are missing.)

  2. Sometimes when you add a purchase to the Queue with [[SKPaymentQueue defaultQueue] addPayment:payment]; the transaction is removed from the queue and the only feedback you get is: - (void)paymentQueue:(SKPaymentQueue *)queue removedTransactions:(NSArray *)transactions

  3. User cancelations returns a wide variety of error messages and some error conditions return the SKErrorPaymentCancelled error code. Specifically:

    • if the user hits cancel when prompted with 'You have already purchased this product' the transaction error is nil.
    • if the user hits cancel when prompted with 'Sign in: [Use Existing Account] [Create New Account] [Cancel]' the error code is SKErrorUnknown.
    • if the user hits [OK] instead of canceling when prompted to enter a password and hasn't entered a password, the error code is SKErrorPaymentCancelled.
  4. Don't forget to implement other SKRequest callbacks:

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

    - (void)requestDidFinish:(SKRequest *)request

like image 190
Carl Coryell-Martin Avatar answered Nov 15 '22 22:11

Carl Coryell-Martin


I think one has to consider the current state of ratings and reviews. Customers have been trending toward the negative (to the detriment of many great developers) in their impression of applications.

I suspect that SK will give your customers yet another reason to be "upset" with your application.

You will have to be careful how you represent your "premium" or "additional" content. Bear in mind that up until now, customers have been getting free updates to there apps. There is bound to be a backlash from customers dependent upon your execution and you target market.

In fact, it will probably provide a boost to your sales if you advertise: "I do not charge for additional content". I can see this being a new trend in attract customers by assuring them that $1.99 IS $1.99.

So, in addition to customer perception you must maintain the back-end infrastructure to save customer records for recovery. I realize the prospect of open-ended profit seems enticing, but there is much to consider before implementing this for your apps.

like image 31
Corey Floyd Avatar answered Nov 15 '22 22:11

Corey Floyd


I made a nice wrapper around StoreKit framework. the wrapper is available here

like image 1
Mugunth Avatar answered Nov 15 '22 23:11

Mugunth