标签:多点 iap json ati 使用 另一个 not 联网 吐槽
公司的公共库原来并没有这部分的代码,以前做内购是用两个比较有名的github上的第三方库。一个叫MKStoreKit,另一个叫IAPManager,我看了一下写的都很辣鸡,使用起来很不方便,而且写的还不对......
于是我自己写了一个,一开始写的也不是很好,受了上面两个垃圾库的影响(这两个库接口是用postNotification的),使用时还要监听事件,下面的小弟吐槽说不太好用。
于是我又重做了一个接口为block的版本,感觉写的还是不错的。这下用的就很舒服了!
虽然github上也有几个写的比较好的库,但是自己写能学到很多东西,而且还发现了内购功能中的一些坑,网上的关于订阅型内购第三方库几乎全都掉进了坑里!直接用是会出问题的!
1.订阅型内购
原来的那两个第三方库一个是没有处理订阅型内购的(其实网上的基本都是没有处理的),MKStoreKit倒是有这个功能,可惜写的并不对= =,有两个地方处理是有问题的。
第一个问题是判断时间时,使用的是[NSDate date]获取用户的本机时间。这种做法有个Bug,只要用户改本机时间就可以一直用下去= =
正确做法是联网获取服务器的时间,以服务器时间为准,防止用户作弊。
第二个问题是获取时间时使用jsonResponse[@"latest_receipt_info”],这个接口并不是很好。
一般情况下确实是最后一个(最新的购买记录)就是我们想要的,可是如果有多个商品这个接口就很僵硬了!
比如说有两个不同类的商品A和B。买了A,最后一个记录是A的,这时网络不好验证失败。然后用户买B,最后一个记录变成购买B的记录,这个时候想要验证A就没有办法了。
2.非订阅型内购
网上基本都是没有处理订阅型内购的......这个倒是没什么坑,网上这类代码简单而且前篇一律,心得是接口不要写成notification这种,写成block这种会好用些,这里说个小优化吧:
实际使用时会发现,苹果的网络响应有时比较慢,用户以为没按到就会多点几次。网上的代码几乎都是会连弹几个窗口,用户体验很差。我这边做了标记,如果用户短时间连点几次同一个购买请求的话会只算一次。当然,原请求未完成时禁止用户交互也是一个做法,但是同事使用后认为当内购入口太多时这样做太麻烦而且容易遗忘,最后还是采用了在Manager里做标记的方法。
标签:多点 iap json ati 使用 另一个 not 联网 吐槽
原文地址:http://www.cnblogs.com/liangjiawei/p/7186648.html