做了一遍ios应用的iap,感觉其中的过程有点复杂,遇到的问题比较多~故此写下本文来记录一下,防止遗忘。
一、关于iap的基本流程代码,可以参考:
himi写的:http://blog.youkuaiyun.com/xiaominghimi/article/details/6937097
子龙山人翻译的:http://www.cnblogs.com/andyque/archive/2012/01/15/2190193.html
两篇文章都有iap在itunes connect里面的基本设置的介绍,但是代码里面的东西相差就比较大,主要有两点
1.对商品的load
himi写的是针对单个商品的购买的时候load
而子龙山人的是对所有商品一起load
这里见仁见智吧,看自己需求哪种吧,我使用的是子龙山人的
2.对于商品load buy的过程
子龙山人的里面有使用hud来中断游戏的处理,himi的文章没有提及这一点,我相信在游戏中肯定自己处理了,只是文章没有提及。
这里我参考了子龙山人的文章,总体来说这些参考子龙山人的很ok~只是我觉得hud的关闭处理上没有完全与购买的流程完全契合,这里有一点遗憾,当然,这里涉及到网络的处理,所以难免会有些不足之处。
二、关于iap的验证
如果不添加iap验证,可能越狱的机器上安装个iap free就可轻松免费iap。所以这部分还是有必要的
1.实现iap验证的代码
这里参考了,himi的文章:http://blog.youkuaiyun.com/xiaominghimi/article/details/7439720
当然himi的文章里面提及了iap Cracker的防护方法,而对于iap free以及其他也只提及一下,没有给出具体方案。
这里给出一些参考的帖子:
http://blog.youkuaiyun.com/wby__2005/article/details/9961043
http://www.freebuf.com/articles/wireless/5867.html (这篇比较全面,可以研究下)
2.沙盒测试/上线时的iap验证url设置
这里也是个坑
在sandbox中验证receipt,url为
https://sandbox.itunes.apple.com/verifyReceipt
在生产环境中验证receipt,url为
https://buy.itunes.apple.com/verifyReceipt
如果你用自己的后台服务器,做验证,这里可以在程序里获取自己的后台设置的flag来决定使用哪个url。但是你可能不知道审核/发布的时候,具体使用哪个url可以参照这个文章:http://blog.youkuaiyun.com/wby__2005/article/details/9961043 (上面已经贴过)
本人没有后台服务器,使用的是帖子里的一种方法:
status=21007
这里是一种取巧的方法,就是先设置url为生产环境,即https://buy.itunes.apple.com/verifyReceipt,如果获取得到的status==21007,就表明此时是sandbox,这时url设置为sandbox,再验证一次,如果status==0即验证通过~
其他参考的帖子:
http://www.freebuf.com/articles/wireless/5867.html
http://www.cocoachina.com/applenews/devnews/2013/0410/5970.html
http://www.cocoachina.com/bbs/simple/?t115964.html
http://www.dapps.net/dev/books/ios-dev-about-in-app-purchase.html
http://www.cocoachina.com/special/iap.html
http://blog.youkuaiyun.com/anypkv/article/details/11920733