Unity3d Google Play内购尝试客户端坑记

https://www.wayright.cn

主要参考:

https://blog.csdn.net/qq15233635728/article/details/44015225

https://blog.csdn.net/qq15233635728/article/details/44016403

https://blog.csdn.net/qq15233635728/article/details/44017543

https://blog.csdn.net/qq15233635728/article/details/44018079

总体而言,博主已经写得相当详细了,但是操作过程中因为个人原因或者版本更新,还是遇到了不少坑,这里记录一下,供参考。

 

  • 入的最深的坑——内容分级
  1. 按照说明提交了应用,可是48小时过去了,状态依旧是正在发布。没办法只能email催促,然后工作人员回邮件说内容分级有错误(但是不告诉你哪里错了)。我怀疑是选了模拟赌博,导致分级为18+(有些17+)不能通过。于是去了模拟赌博再提交。
  2. 又48小时过去了,继续email催促,告诉我内容分级有误,应用里包含模拟赌博!这下就不知道怎么办了,不管了先把模拟赌博加回去。再改改别的地方,比如类型修改为益智类的(无关紧要)。
  3. 又过了很久继续投诉email,这么长时间没回复,我请求google工作人员告诉我具体的问题在哪里。投诉了之后终于有了个像样的回复,说分级类型应该是TEEN。TEEN不是18+,而是12+(13+)。从这里我找到了线索,首先模拟赌博这个选项必须勾选,否则就是3+了。其次,提供现金奖品这个选项去掉,然后分级,就是TEEN了。
  4. 可是30个小时过去了,这个新的问卷还是没有生效。实在忍无可忍,重新提交了一个应用,只不过分级为TEEN。然后过了2个小时,应用Alpha版发布成功!
  5. 总结:一般来说,如果一切正常,发布2个小时应该就能出来了。如果过了很久都没有发布,那应该是有问题。而且这个问题会很长时间得不到解决。
  • 坑二——Unity调用Android方法不成功
  1. 按照参考文章(二)加入了android和unity的代码,但是调用的时候总是提示:
    java.lang.NoSuchMethodError: no non-static method with name='Pay'.....
    查阅了很多资料,都没有解决这个问题。最后@gogdizzy说有可能是优化或者混淆造成的,如果Pay函数在android中没有调用,可能直接被优化了。同时也可能名字被修改了。
  2. 修改应用目录下的build.gradle,找到:
    release {
      minifyEnabled true
      useProguard true
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'
      signingConfig signingConfigs.release
      }
    将前两个true修改为false,保存,再编译,问题解决。问题记录在:
    https://stackoverflow.com/questions/50147050/getting-error-java-lang-nosuchmethoderror-when-call-android-function-in-unity3d
  • 一些变化
  1.  “不受管理的商品”不再存在,都是“受管理的商品”,所以在购买商品之后,要适时消费掉,才能继续购买。否则可能出现:
    Failed to queryinventory:
    labResult:Error refreshing inventory(querying owned items).
    (response:-1003:Purchase signature verification failed)
  2.  我使用的Unity为2017.1.0f3版本,导出工程没有Ecliipse或者AS,我选择的是Gradle(New),然后直接使用gradle进行编译。
  3. Android SDK Manager中根本找不到Google Play Billing Library,可以参考:
    https://stackoverflow.com/questions/48831282/i-cant-find-google-play-billing-library-in-the-android-studio-sdk-manager
  4. 博主给的Android代码缺失一个重要函数onActivityResult。由于这个函数不存在,可能会出现若干问题。一个是购买完之后,再购买会出现:
    Can't start async operation (launchPurchaseFlow) because another async operation(launchPurchaseFlow) is in progress 
    一个是购买完之后,回调无法被正常调用,导致程序不知道用户到底是购买了成功还是取消购买。问题可参考:
    https://codeday.me/bug/20170610/23815.html
    或者直接把例子程序中MainActivity.java中的onActivityResult函数拷贝到自己的Activity中。
  5. 其他参考:
    http://shineonly.iteye.com/blog/2230682
  6. runOnUiThread(new Runnable() 没什么用
     

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wayright

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值