2

My iOS app is going to be free, but with additional functionality enabled via in app purchase. Currently beta testers are doing a great job finding bugs and I want to reward them for their hard work. I think the least I can do is give them a full version of the app so that they don't have to buy the functionality themselves. However, I'm not sure what the best way to do this is.

There do not appear to be promo codes for in app purchase so I can't just email out promo codes.

I have all the tester device UDIDs so when the app launches I could grab the device UDID and compare it to an internal list of 'approved' UDIDs. Is this what other developers do?

My concerns:

  • The in app purchase content would not be tied to their iTunes account, so if beta testers move to a new device they would not be able to enable the content unless I released a new build in the app store with their new UDID. So they may have to buy it eventually anyway.
  • Having an internal list leaves a hole for hackers to modify the list and add themselves to it.

What would you do?

brianpartridge
  • 763
  • 8
  • 19

2 Answers2

3

Send them iTunes gift certificate for $1.30 (or whatever is your in-app purchase price + tax). The drawback for this is Apple will take its cut, and you will lose some money. The benefit is it makes it easy for them to get it linked to their account, and it allows them to spend the money on something else if they want.

Update: If you want promo codes, Apple actually allow syou to request app-specific promo codes that you can later hand off to user and they can redeem them on the App Store. Read the iTunes Connect Developer's Guide, page 133 about details on how to do that.

Unfortunately, you get a limited allotment of promo codes (50 I think). Also, I am not sure if promo codes can be used for in-app purchase. You might have to resort to offering also a separate paid app bundle for download that already includes the in-app purchase and generate promo codes for it to hand away. The drawback for this is having two separate app entries in the app store, which is somewhat bad experience for the end user.

John Topley
  • 113,588
  • 46
  • 195
  • 237
Franci Penov
  • 74,861
  • 18
  • 132
  • 169
  • This seems like a possibility, but actually paying with a cash value gets into tricky area: How do I choose who to reward? Everyone or only people that send feedback? Someone may test it for 5 mins and send and email with no real insight, while someone else may test it for an hour and have nothing to say because their experience with it was good. If you pay all your testers you don't know if they actually tested and you may be paying for nothing, while if you just give a promo code you know that they're at least getting your app whether they want it or not... – brianpartridge Feb 04 '11 at 21:16
  • 2
    apple does not provide promo codes for in-app purchases, only for apps – bshirley Jun 05 '11 at 20:17
2

Just ship with a plist containing the UDIDs that you want to enable the feature for and do the check at startup. You can even put an alert up once that says, "Thanks for being a beta tester blah blah." Since app binaries are signed no one can add their own UDID to the list after you ship (which deals nicely with the hacker problem).

As to users switching devices, I wouldn't worry about it. beta testing something usually doesn't imply that you get a pass forever.

John Topley
  • 113,588
  • 46
  • 195
  • 237
par
  • 17,361
  • 4
  • 65
  • 80
  • I decided to go with this method even though it is something that I said I wasn't comfortable doing. I'll have to re-approach this again in the future to see if new possibilities are available. – brianpartridge Feb 05 '11 at 05:52
  • Tools such as iPhone Explorer can modify files in the App bundle once it is on the device, you might want to put some checks and balances or save the file as binary to make it harder for would be pirates if you are worried about it. – Chris Wagner Jul 07 '11 at 23:40
  • Sorry to revive such an old question but, coming from a (legit) hacker, I would recommend keeping a salted hash of the list of UDIDs and checking list against the hash on startup to prevent hackers from changing it – Garrett Jul 12 '12 at 14:41
  • @Garrett - Application bundles are signed on iOS so the app won't launch of any of the resources (in this case the UDID list) are modified. The hash step you recommend is essential but is being carried out by the OS. – par Jul 22 '12 at 20:29