利用MKStoreKit实现iOS App的应用内购买

App Store中, In-App-Purchase是一种很好的免费->收费的转化方式,iOS 6里面又新增了一些支持,由于NDA的原因,现在不会讨论iOS 6.这里只介绍一下MKStoreKit.

MKStoreKit

MKStoreKit可以极大的简化IAP的代码,提供了很实用的抽象接口,并且还提供了服务器验证receipts的代码,非常方便。MKStoreKit使用zLib licensing,使用者只要保证源代码里面不移除原作者的版权信息即可。

基本用法

这里只介绍一下Non-Consumable类型的用法,其它的用法请参考头文件里面的方法声明:
检查是否购买了某一个Feature:

1
2
3
4
if([MKStoreManager isFeaturePurchased:kFeatureID])
{
//unlock it
}

购买某一个Feature:

1
2
3
4
5
6
7
8
9
[[MKStoreManager sharedManager] buyFeature:kFeatureAId
onComplete:^(NSString* purchasedFeature)
{
NSLog(@"Purchased: %@", purchasedFeature);
}
onCancelled:^
{
NSLog(@"User Cancelled Transaction");
}];

一些提示:

  • 建议在程序启动时,先调用[MKStoreManager sharedManager],这样就可以尽早地得到products list,避免用户直接购买时无法得到IAP的信息
  • 如果得到的是invalidProducts,建议先删除设备上的App,再重新Build and Run
  • 开发测试时,记得调用[[MKStoreManager sharedManager] removeAllKeychainData],来移除IAP的信息,否则即使删除app重新build后,购买信息会依然存在。Release的时候要记得删除该行代码。建议使用条件编译来解决这个麻烦。

附小广告一则:唱吧iOS团队诚招iOS工程师,推荐成功即奖励6000元现金或iPhone 6一部,详见这篇blog