主要参考:
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
总体而言,博主已经写得相当详细了,但是操作过程中因为个人原因或者版本更新,还是遇到了不少坑,这里记录一下,供参考。
- 入的最深的坑——内容分级
- 按照说明提交了应用,可是48小时过去了,状态依旧是正在发布。没办法只能email催促,然后工作人员回邮件说内容分级有错误(但是不告诉你哪里错了)。我怀疑是选了模拟赌博,导致分级为18+(有些17+)不能通过。于是去了模拟赌博再提交。
- 又48小时过去了,继续email催促,告诉我内容分级有误,应用里包含模拟赌博!这下就不知道怎么办了,不管了先把模拟赌博加回去。再改改别的地方,比如类型修改为益智类的(无关紧要)。
- 又过了很久继续投诉email,这么长时间没回复,我请求google工作人员告诉我具体的问题在哪里。投诉了之后终于有了个像样的回复,说分级类型应该是TEEN。TEEN不是18+,而是12+(13+)。从这里我找到了线索,首先模拟赌博这个选项必须勾选,否则就是3+了。其次,提供现金奖品这个选项去掉,然后分级,就是TEEN了。
- 可是30个小时过去了,这个新的问卷还是没有生效。实在忍无可忍,重新提交了一个应用,只不过分级为TEEN。然后过了2个小时,应用Alpha版发布成功!
- 总结:一般来说,如果一切正常,发布2个小时应该就能出来了。如果过了很久都没有发布,那应该是有问题。而且这个问题会很长时间得不到解决。
- 坑二——Unity调用Android方法不成功
- 按照参考文章(二)加入了android和unity的代码,但是调用的时候总是提示:
java.lang.NoSuchMethodError: no non-static method with name='Pay'.....
查阅了很多资料,都没有解决这个问题。最后@gogdizzy说有可能是优化或者混淆造成的,如果Pay函数在android中没有调用,可能直接被优化了。同时也可能名字被修改了。 - 修改应用目录下的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
- 一些变化
- “不受管理的商品”不再存在,都是“受管理的商品”,所以在购买商品之后,要适时消费掉,才能继续购买。否则可能出现:
Failed to queryinventory:
labResult:Error refreshing inventory(querying owned items).
(response:-1003:Purchase signature verification failed) - 我使用的Unity为2017.1.0f3版本,导出工程没有Ecliipse或者AS,我选择的是Gradle(New),然后直接使用gradle进行编译。
- 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 - 博主给的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中。 - 其他参考:
http://shineonly.iteye.com/blog/2230682 - runOnUiThread(new Runnable() 没什么用