wangruoze 2013-06-08
关于如何进行In App Purchase开发与调试,可以参见:
http://www.raywenderlich.com/21081/introduction-to-in-app-purchases-in-ios-6-tutorial这篇文章非常好,IAP调试过程中绝大多数都涉及到了。
可是对于象我这样,心浮气躁的懒汉来说,与其关心一步一步,来探讨IAP如何实现,更关心拿来主义,如何能尽快的把IAP集成到自己的APP中。其实也很简单,几步而已。
1. 下载上述链接的附件,在项目中加入RageIAPHelper.h,RageIAPHelper.m,IAPHelper.h,IAPHelper.m四个文件。 如果有必要的话,RageIAPHelper改个名字,我喜欢用GameIAPHelper。
2. 打开RageIAPHelper,将sharedInstance中的productIdentifiers改为你自己APP的。这也是这四个文件中唯一要修改的地方。
3. 在你的工程中合适的地方加入”NSArray* _products;“用来存储从iTune中获取的IAP信息。在应用程序初始化的某个地方使用:
_products = nil;
[[RageIAPHelper sharedInstance] requestProductsWithCompletionHandler:^(BOOL success, NSArray *products) {
if (success) {
_products = products;
}
}];
对_product数组进行初始化。
4. 判断是否已经购买
[[RageIAPHelper sharedInstance] productPurchased:product.productIdentifier]
5. 购买:
SKProduct *product = _products[buyButton.tag];
[[RageIAPHelper sharedInstance] buyProduct:product];
6. 监听回调,productPurchased需要自己实现。
[[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(productPurchased:) name:IAPHelperProductPurchasedNotificationobject:nil];
7. 在适当的位置移除回调
[[NSNotificationCenter defaultCenter] removeObserver:self];
8. 2012年以后,对于Non comsumble类型的IAP,Apple需要提供restore功能,否则会导致应用程序审核被拒。实现起来也极为简单,添加相关按钮,然后在按钮的点击函数中添加相应的处理:
[[GameIAPHelpersharedInstance] restoreCompletedTransactions];
还有个需要注意的地方,这四个文件使用了ARC技术,要是你的项目不是基于ARC开发的,那么要在XCode中混用ARC和非ARC模式。需要给这四个ARC 模式的文件加入 -fobjc-arc 标签。
添加标签的方法:
1. 打开:你的target -> Build Phases -> Compile Sources.
2. 双击对应的 *.m 文件
3. 在弹出窗口中输入上面提到的标签 -fobjc-arc
4. 点击 done 保存