应用宝ysdk接入心得

unity 应用宝ysdk接入

对于应用宝ysdk的接入 自身的感觉 还是比较简单的,只是刚开始的时候感觉很可怕,都是听别人说多难多难,在没接触的时候就给自己造成了心理的阴影,但是 当你去做的时候就会发现 其实也就那么回事,不要怕 慢慢来 一点一点决解。


关于ysdk的接入 步骤

第一步 : 首先接到新的渠道 我们都会必不可少的查看文档

第二步: 需要把写好的u3d的代码导出成Android工程
应用宝ysdk接入心得_第1张图片
关于u3d这里的具体代码请自行决解

第三步: 根据文档
应用宝ysdk接入心得_第2张图片
添加依赖库!应用宝ysdk接入心得_第3张图片

第四步: 配置文件修改
应用宝ysdk接入心得_第4张图片
这里的配置 参数 渠道会有提供 一定要记得配置正确 不然后面有造成很大的问题!切记
第五步: 添加权限


<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修改: 这里需要特别注意,不然很容易出错
应用宝ysdk接入心得_第5张图片
这里的参数认真填写 然后就是WXEntryActivity的放置 例如:
应用宝ysdk接入心得_第6张图片

实名制接入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===微信登陆");
                }});
      }

应用宝ysdk接入心得_第7张图片
这里是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是否设置

你可能感兴趣的:(游戏sdk接入)