Unity3D集成IAP的那点事儿

 

 

 

 

3D集成IAP使用的Prime31的插件,在最开始的时候使用自带的test scene修改证书及product id后测试正常,直到游戏基本制作完成,需要最终集成IAP的时候,问题出现了。requestProductData总是返回invalid product Identifier,purchaseProduct则一直返回itunes store cannot connect。搜遍Google得到的结果也基本上是说不断的尝试那几个我已经重复过n遍的步骤,大多数讨论的结论则是不断重复尝试直到问题不再出现,或者wish you have a good luck!

经历了三个晚上加一个上午的烦躁之后,终于柳暗花明。在见到XCode里返回“StoreKit: transaction completed: <SKPaymentTransaction: 0xa828d80> purchased product:…”的时候,激动却难掩心中的无奈,Apple完全可以做的更好。让中间的错误信息更明确一些,让支持更积极一些,这并不会是多么困难的事。而且即使是到现在,我也不知道问题到底出在哪一步,最后又是我的哪一步操作让问题消失了。我只能记录下我所做过的所有这些尝试,也许未来某次编译的时候IAP又不合作了……或者某位同学跟我一样郁闷过许久之后,能够看到这篇记录,其中有你还没有尝试过的某个步骤,能够帮上你的忙……

1. 使用debug模式编译project,这一条在apple官网上没有看到明确的要求,只有一条要求是需要使用开发用证书。注意XCode4与XCode3的区别,XCode4里面debug/release模式的选择改为了shemes,在product菜单下有Edit Scheme选项,其中Run默认是编译为debug,Archive编译为release。也就是说点击菜单左上角那个最大的Run图标默认就是编译为debug模式,当需要最终发布的时候,选择菜单下的Product –> Archive则会编译为release模式

2. 使用XCode编译到测试机上,并且确保每次有修改的时候都尽量把手机上的app删除然后再重新用xcode编译并运行,只有通过XCode安装的app才能进入sandbox。StackOverFlow上这个解决方案最热门,得到了最多的vote,但是在最初我这样做的时候并没有立即解决我的问题,后来我每次编译测试前都先删除手机上的app。

3. 在Provisioning Portal里确认App已经启用了IAP。但是目前看起来每个新创建的app都是默认启用IAP,并且我没有找到有地方可以关闭IAP。为了确保这一点,我把之前的app id删除,重新创建了一个新的app。

4. 仔细检查product id,apple建议product id使用跟app id一样的域名反写的方式,但是并没有强制这样。我开始使用的booster_pack这样的product id,后来改成net.gamecapsule.xxx.xxx的方式,并没有立即解决我的问题。不过后来我都把product id改成了apple建议的方式。

5. 在itunes connect中确保App的details里,In App Purchase项上已经勾选了你需要测试的product。注意不要太早点击Ready to update binary,一旦进入了准备提交的状态,IAP选项将不能再修改。因为这个原因,我不得不把之前的app删除,重新用新的名字再创建一个APP。另外在实际操作中发现,添加了IAP product并不能立即在App Details里看到,必须等一段时间这里才能看到并可以勾选。

6. 重启手机若干次。

7. 重新给手机安装系统。问题是在重新安装系统之后解决的,我不确定这是不是直接原因。

8. 删除机器上所有的证书,删除provisioning portal里所有的证书,全部重新创建。因为给手机重装系统与这一步是同时进行,最后问题解决的时候不确定到底是哪一个直接有效。

9. 创建Test User若干个。其间有未知原因导致要求到itunes上review该帐号,可能导致了前面的某些帐号失效,后来不断创建新帐号进行测试。

10. 在XCode中打断点,确定Unity脚本中传进来的参数都正确。因为担心utf8字符集的问题,所以直接在xcode的插件代码中修改,使用objective-c代码测试IAP,问题依旧。后来使用未修改的代码问题解决,证明Prime31的IAP插件是正确的。

 

原创文章,转载请注明: 转载自All-iPad.net

本文链接地址: Unity3D集成IAP的那点事儿


 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值