本来项目是已经接过share sdk 的登陆的 现在要接应用宝支付,为了省事打算直接先接支付试一下,可
是米大师官网的sdk下载不知道什么情况都没法下载,于是就开始了接YSDK的悲催人生,经过一个多星期的
努力demo终于跑了起来,下面跑一遍流程,再总结一下遇到的问题,方便下次接入的时候使用.(没用过
java 没用过eclipse ,对untiy和android的交互也不是特别了解...有错误的地方欢迎指出
1.腾讯开放平台注册应用
得到 qq和微信的Appid和AppKey以及米大师的沙盒测试Appkey
2.下载YSDK
解压之后
我用的是Eclipse Readme是官网给的接入文档
3.导入文件
本来我只是想按照以往的打.jar包导入到unity使用 可是发现这样根本没法调试、没法测试就只能先做个demo 在unity 中把逻辑写好之后导出android包导入Eclipse里面来接(untiy修改东西的话,把导出的android包里的assets里的东西替换一下就ok了)
unity场景,两个text用于debug调试
http://www.xuanyusong.com/archives/676 unity 和android 互传消息参考的雨松MOMO的…
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class test : MonoBehaviour {
public Text t;
public Text t1;
AndroidJavaClass jc;
AndroidJavaObject jo;
public void Awake()
{
jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
}
public void weixin()
{
t1.text = "weixin Begin call";
jo.Call("Login_WeiXin", "weixin");
t1.text = " weixin call end ";
}
public void qq()
{
t1.text = "qq Begin call";
jo.Call("Login_QQ", "qq");
t1.text = " qq call end ";
}
public void youke()
{
t1.text = "youke Begin call";
jo.Call("Login_YouKe", "youke");
t1.text = " youke call end ";
}
public void Pay()
{
t1.text = "Pay Begin call";
jo.Call("Pay", "111");
t1.text = " pay call end ";
}
public void message(string mess)
{
t.text = mess;
}
}
实际传多个参格式 根据个人需要传
jo.Call(“Pay”, new object[] { zoonID, itemId, itemName, price, num, userId});
导出android包
eclipse–>File –>Import 导出的android包和YSDK-Eclipse 下的library//一定要copy到工作目录下
添加依赖 右键 游戏工程 ->Properties->Android->Add ->Apply就ok 了 Is Library 不要勾选上 会出问题…..不要勾选上….
4.开始接入..
需要把demo里assets里的东西导如到游戏工程assets下面 //我这就一个midaspay 和ysdkconf
ysdkconf里面的东西需要根据自己应用的信息进行修改 三个id ;相当于注释 联调的话就把 ;YSDK_URL=https://ysdktest.qq.com 前的;去掉
YSDK_URL=https://ysdk.qq.com 前面加上;
脚本的话 用到了demo里面的两个脚本 一个wx的,一个Ysdkcallback
需要android-support-v4.jar的话就把demo libs下面的android-support-v4.jar拷贝到项目libs下面
我用的编码格式是utf-8 右键脚本 ->Properties
如果在后面调试的时候汉字出现乱码 改下这个
还有就是res 资源文件 我把demo里的全部copy到里面了 还有libs 下面的 也copy过来了
wx的
package 包命.wxapi;//一定要是包命+.wxapi
/**
* !!此文件的代码逻辑部分使用者不要修改
*/
public class WXEntryActivity extends com.tencent.ysdk.module.user.impl.wx.YSDKWXEntryActivity {
}
回调的,没有该什么东西就是改了一下消息发送,主要处理YSDKApi的回调
package 包命;
import android.app.Activity;
import android.util.Log;
import com.tencent.ysdk.framework.common.eFlag;
import com.tencent.ysdk.module.bugly.BuglyListener;
import com.tencent.ysdk.module.pay.PayListener;
import com.tencent.ysdk.module.pay.PayRet;
import com.tencent.ysdk.module.user.PersonInfo;
import com.tencent.ysdk.module.user.UserListener;
import com.tencent.ysdk.module.user.UserLoginRet;
import com.tencent.ysdk.module.user.UserRelationRet;
import com.tencent.ysdk.module.user.WakeupRet;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
/**
* TODO GAME 游戏需要根据自己的逻辑实现自己的YSDKCallback对象。
* YSDK通过UserListener抽象类中的方法将授权或查询结果回调给游戏。
* 游戏根据回调结果调整UI等。只有设置回调,游戏才能收到YSDK的响应。
* 这里是Java层回调(设置了Java层回调会优先调用Java层回调, 如果要使用C++层回调则不能设置Java层回调)
*/
public class YSDKCallback implements UserListener, BuglyListener,PayListener {
public static MainActivity