对于应用宝ysdk的接入 自身的感觉 还是比较简单的,只是刚开始的时候感觉很可怕,都是听别人说多难多难,在没接触的时候就给自己造成了心理的阴影,但是 当你去做的时候就会发现 其实也就那么回事,不要怕 慢慢来 一点一点决解。
关于ysdk的接入 步骤
第一步 : 首先接到新的渠道 我们都会必不可少的查看文档
第二步: 需要把写好的u3d的代码导出成Android工程
关于u3d这里的具体代码请自行决解
第四步: 配置文件修改
这里的配置 参数 渠道会有提供 一定要记得配置正确 不然后面有造成很大的问题!切记
第五步: 添加权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
第六步: 初始化
在自己的工程代码onCreate中添加void onCreate(Activity activity); 也就是 (YSDKApi.onCreate(this);)这个方法, 这个设置好以后 在添加**YSDKApi.setUserListener(new YSDKUserListener());
YSDKApi.setBuglyListener(new YSDKBuglyListener());**这个java层回调设置;这些都是在onCreate中处理的
第七部: YSDK生命周期设定
这YSDK生命周期设定写的很详细,只需要按照文档一步一步写即可,在相应的位置调用相应的方法就可以了 例如:onResume 游戏需要在Main Activity的onResume方法中调用此接口。`
@Override
protected void onResume()
{
super.onResume();
YSDKApi.onResume(this);
mUnityPlayer.resume();
}
第八步: QQ和微信的登陆
前提是配置好qq和微信的文件配置
手Q接入AndroidMainfest修改
微信接入AndroidMainfest修改: 这里需要特别注意,不然很容易出错
这里的参数认真填写 然后就是WXEntryActivity的放置 例如:
实名制接入AndroidMainfest修改:什么都不用修改 直接放进去使用就可以了
然后是 我们做的是把 QQ和微信登陆抽出来,抽成一个方法 提供给 u3d调用 例如:
public void QQlogin(){
System.out.println("QQlogin===QQ登陆");
YSDKApi.login(ePlatform.QQ);
}
public void WXlogin(){
UnityPlayer.currentActivity.runOnUiThread(new Runnable()
{
@Override
public void run() {
YSDKApi.login(ePlatform.WX);
System.out.println("WXlogin===微信登陆");
}});
}
这里是QQ的登陆 当然微信的登陆和QQ的登陆时一样的,他们有一个判断是微信还是qq的登陆(platform) ; 微信的就不多说和QQ的一样, 唯一不一样的就是清单中文件的配置,上面有说到
第九步: qq和微信的支付
这里的支付 我选择的是 游戏币模式
public void pay(String xx,final String xx,String xx){
System.out.println("pay成功");
Log.d(LOG_TAG,"pay成功");
boolean isCanChange = false;
Bitmap bmp = BitmapFactory.decodeResource(UnityPlayerNativeActivity.this.getResources(), R.drawable.sample_yuanbao);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] appResData = baos.toByteArray();
YSDKApi.recharge(xx, xx,isCanChange,appResData,xx,new YSDKCallback(UnityPlayerNativeActivity.this) {
@Override
public void OnPayNotify(PayRet ret) {
if(PayRet.RET_SUCC == ret.ret){
//支付流程成功
switch (ret.payState){
//支付成功
case PayRet.PAYSTATE_PAYSUCC:
UnityPlayerNativeActivity.this.sendResult(
"用户支付成功,支付金额"+ret.realSaveNum+";" +
"使用渠道:"+ret.payChannel+";" +
"发货状态:"+ret.provideState+";" +
"业务类型:"+ret.extendInfo+";"+
"建议查询余额:"+ret.toString());
JSONObject json = new JSONObject();
try {
json.put("money",ret.realSaveNum);//支付金额
// json.put("platform",ret.platform);
// json.put("Channel",ret.payChannel); //使用渠道
json.put("extend",ysdkExt); //业务类型
// json.put("State",ret.provideState ); //发货状态
// json.put("yuer",ret.toString() ); //查询余额
// json.put("pf",ret.pf);
// json.put("pf_key",ret.pf_key);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
UnityPlayer.UnitySendMessage("xx","xxx",json.toString());
break;
//取消支付
case PayRet.PAYSTATE_PAYCANCEL:
UnityPlayerNativeActivity.this.sendResult("用户取消支付:"+ret.toString());
//UnityPlayer.UnitySendMessage("PayResult",ret.toString());
break;
//支付结果未知
case PayRet.PAYSTATE_PAYUNKOWN:
UnityPlayerNativeActivity.this.sendResult("用户支付结果未知,建议查询余额:"+ret.toString());
//UnityPlayer.UnitySendMessage("xxx","xxx",ret.toString());
break;
//支付失败
case PayRet.PAYSTATE_PAYERROR:
UnityPlayerNativeActivity.this.sendResult("支付异常"+ret.toString());
//UnityPlayer.UnitySendMessage("xxx","xxx",ret.toString());
break;
}
}else{
switch (ret.flag){
case eFlag.Pay_User_Cancle:
//用户取消支付
UnityPlayerNativeActivity.this.sendResult("用户取消支付:"+ret.toString());
break;
case eFlag.Pay_Param_Error:
UnityPlayerNativeActivity.this.sendResult("支付失败,参数错误"+ret.toString());
break;
case eFlag.Error:
default:
UnityPlayerNativeActivity.this.sendResult("支付异常"+ret.toString());
break;
}
}
}
});
}
qq的支付和微信的支付是一样的 里面的参数 是按照自己需要填写 支付的回调时在u3d中做的处理(u3d的这些我就不详细说明了,主要说android的一些做法)
到这里基本完成了ysdk的接入 剩下的退出,切换这些我想就不用多说了
第十步: 总结
在接入ysdk中 签名一定要正确; 否则可能造成qq微信无法登陆的问题;100044
手Q界面弹框报错,首先确认游戏是否上线,如果游戏没有上线,检查登陆的账号是否为协作者账号
微信登陆但是没有获取权限 是签名的问题,需要检查签名
微信登录不了 :
检查Log中是否有:lauchWXPlatForm wx SendReqRet: true
检查签名、包名、appid
检查WXEntryActivity.java放置的位置
检查YSDK声明周期的设置
检查onResume
检查游戏的全局Observer是否设置