因为本文内容比较多,整理花费时间比较长,故分几篇完成,以下为本文目录结构,方便查阅:
Unity3d接入googleplay内购详细说明(一)
引言
一、准备条件:
二、谷歌开发者后台应用创建说明:
Unity3d接入googleplay内购详细说明(二)
三、Unity3d向安卓通信以及接受通信
四、Unity导出安卓Apk正式签名说明
五、使用Eclipse运行unity导出的工程
六、Java代码接入谷歌内购:
七、谷歌内购Java代码
Unity3d接入googleplay内购详细说明(三)
八、Apk上传谷歌商店测试版以及添加测试者
九、Zipalign处理APK文件
十、添加google+群组并邀请其成为测试者
十一、测试机googleplay安装以及配置:
Unity3d接入googleplay内购详细说明(四)
十二、真机测试中出现的常见错误以及解决方式:
十三、成功测试购买以及正式版发布
————————————————————————————————————————————————————————————
三、Unity3d向安卓通信以及接受通信
1、作为测试的是临时写的unity3ddemo,只具有最基本的支付功能。首先解决unity安卓通信,这个基本上都是固定的代码。
例子里面分别添加了2种有效商品,后台中sku分别为jb_1,lb_1;
2、其中主要就几句代码,基本通用,需要改的仅是“Pay”方法,以及注意传入的string参数(用来区分不同sku):
private void UnityToAndroid(string buykey)
{
AndroidJavaClass m_unityPlayer = newAndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject m_curActivity = m_unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
m_curActivity.Call("Pay",buykey);
}
3、所有代码如下:
using UnityEngine;
usingSystem.Collections;
public classGUIpay : MonoBehaviour
{
private int i = 0;
private int j = 0;
private string key;//suk
private string MessageFromAndroid;//从安卓端接受的消息
void OnGUI(){
if(GUILayout.Button("金币1",GUILayout.Height(100),GUILayout.Width(150))){
i++;
key="jb_1";
UnityToAndroid(key);
}
if(GUILayout.Button("礼包1",GUILayout.Height(100),GUILayout.Width(150))){
j++;
key ="lb_1";
UnityToAndroid(key);
}
GUILayout.Button("购买:"+key+"分别:"+i.ToString()+"次/"+j.ToString()+"次",GUILayout.Height(100),GUILayout.Width(200));
GUILayout.Button("AndroidMessage:"+MessageFromAndroid,GUILayout.Height(100),GUILayout.Width(200));
}
//安卓支付通信
private void UnityToAndroid(stringbuykey){
AndroidJavaClass m_unityPlayer =new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject m_curActivity =m_unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
if(m_curActivity == null)
{
Debug.LogError("获得不到JAVA对象");
return;
}
m_curActivity.Call("Pay",buykey);
}
//从安卓端接受消息,因为本脚本挂在一直存在的MainCamera对象上,将从其上获取消息,对应java代码要将消息发送对象指定为MainCamera
void Messgae(string message)
{
MessageFromAndroid = message;
}
}
4、运行效果如下,点击会报错,所以只能在真机上测试: