iOS 内购IAP 2017年最新填坑

时间如白驹过隙,一晃又是一年。
  本打算效仿某些知名人士写个年终总结,总结过去、展望未来,发篇辞旧迎新的“深度好文”。随后一想,还是算了吧。一是文采有限,高质量文章写不来;二是毕竟还没到那个level。
  对于总结?我想说:有些事情不必说、不能说也无需说,放在心里,时间久了,自然就成了故事。
  对于展望?我想说:如果真打算完成某些计划、实现某些目标,不必声张,只管默默地努力就好。


回到本文主题,最近项目在集成IAP功能,开始之前,浏览了Apple的官方文档,也看了大量的国内教程,推荐这篇博客,写得很详细,按照教程一步步操作即可。然而,虽然参阅了很多资料,但是对于第一次没啥经验的我,还是会踩坑。遇到一个主要的问题就是,请求商品时,返回的商品ID是无效,我一直在纠结这个问题:
Why are my product identifiers being returned in the invalidProductIdentifiers array?
于是又翻阅了Apple文档,当我看到与** invalidProductIdentifiers**相关的讲解时,真的是人生又充满了希望。苹果给的解释如下:

Invalidate.png

  共八种情况可能导致该问题的发生(其中倒数第二条只针对非消耗型商品,而本人项目是消耗型商品,所以可忽略该条)。大概意思就是说:

  1. 使用了带有通配符(*)的App ID。(这个问题很好排查,去ITC看一眼即可)
  2. 最近提交的二进制文件被拒或者自己撤回。(修改App为准备提交状态即可,最好在ITC删除被拒的二进制文件,不上传二进制文件也可测试IAP)
  3. 没有清除ITC上在出售的IAP商品。
  4. 没有使用与App ID相关联的描述文件来签名App。
  5. 你可能更改了商品,但是还没有在AppStore服务器生效。(大概会等几个小时吧,具体不是很清楚)
  6. 还没完成所有的金融需求。(我最初的理解是:协议、税务和银行业务没有填写完整,也许是我理解错了->_->,接着往下看,一会还会Block到此处)
  7. 针对非消耗型商品,本人没仔细研究,感兴趣的童鞋可以点这里了解
  8. ITC上的商品ID和代码里的不一致。(对比一下即可排查)

协议、税务和银行业务,我已经填写完整并提交审核,只不过status显示为:processing,所以按我当时的理解,上面的第六条情况也排除了,另外的七种情况也排除了。但是商品ID仍旧是无效的,导致返回的product数量为0。
  只好翻阅官方文档并Google,但是并没有得到一个比较肯定的答案,甚至看到一个博客说,即使status == processing也不影响IAP测试,于是,我真特么信了。直到今天晚上(2017-01-01),协议、税务和银行业务的状态才审核通过(2016-12-28填写的),status变为Contract In Effect,商品请求成功,IAP测试成功。Block(@"上面的第6条");
  所以,IAP可以测试的必要条件之一:Contract In Effect。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,854评论 18 139
  • -我要在app里添加IAP,必须要注册自己的产品标识符(product identifiers)。产品标识符是什么...
    Levan_li阅读 6,315评论 2 6
  • 前述:最近刚刚和后台的同事完成了IOS的内购项目功能开发,用以替换之前的支付宝、微信支付功能。这里,梳理出大体的步...
    silencerZiBo阅读 17,624评论 25 25
  • 背景 今天早上审核过了一款APP,很开心地发布了。各个组激动地赶紧打开AppStore下载,然后一个大脸的懵逼——...
    whbalzac阅读 12,674评论 7 15
  • 参考链接iOS开发之内购-AppStore iOS App提交指南(二)-协议、税务和银行业务iOS应用内付费(I...
    sjzuo阅读 3,035评论 4 4