cocoscreator接MiguSDK

软件:cocoscreator2.0.9,Androidstudio3.2,MiguSDK_28002_1218

咪咕SDK官方下载地址:http://g.10086.cn/open/database/qsd.do?param=931_1_0

接SDK之前要保证cocos的AndroidSDK、NDK环境已经配置好,同时andrstudio的环境也配置好

一、首先我在creator创建了一个简单的测试工程,界面如下图

层级管理器

场景

cocos中调用Androidstudio相关函数

(cocos调用Androidstudio的方式可以查看cocos官方文档,文档官方地址:https://docs.cocos.com/creator/manual/zh/advanced-topics/java-reflection.html

工程创建完成后,点击构建直到完成

构建完成

二、用Androidstudio打开刚刚构建的Android工程

找到指定路径,如下:

Androidstudio打开工程后,找到咪咕SDK中相应的说明文档,打开,如下图

按照文档操作,我的工程如下

然后按照官方文档修改代码

在build.gradle中添加如下代码(具体信息见官方文档中的常见问题解决办法)

APPactivity类中定义如下函数

一些修改配置完成后,启动夜神模拟器,运行,出现如下界面

首先弹出咪咕首页,之后跳转进自己的主场

单击购买按钮,出现如下界面,说明SDK接入成功

单击取消购买,直接退出程序

最后总结一下我在接sdk中遇到的各种问题以及解决办法

首先是g_string.xml与string.xml内容冲突问题,需要将g_string.xml中与string.xml冲突的内容删除掉,其次是在name后面添加如下内容,如图,不然一直报红

如果出现闪退现象,按照我的解决办法不行的话,请看官方文档中常见问题

我的APPactivity全部代码如下:

private static AppActivity app=null;
private int price;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        app=this;
        GameInterface.initializeApp(app);
        // Workaround in https://stackoverflow.com/questions/16283079/re-launch-of-activity-on-home-button-but-only-the-first-time/16447508
        if (!isTaskRoot()) {
            // Android launched another instance of the root activity into an existing task
            //  so just quietly finish and go away, dropping the user back into the activity
            //  at the top of the stack (ie: the last state of this task)
            // Don't need to finish it again since it's finished in super.onCreate .
            return;
        }
        // DO OTHER INITIALIZATION BELOW
        SDKWrapper.getInstance().init(this);

    }

    public String getProcuctString(int pd)
    {
        String ps = "";
        switch(pd)
        {
            case 10:
                ps = "001";
                break;
            case 15:
                ps = "002";
                break;
            case 20:
                ps = "003";
                break;
            case 30:
                ps = "004";
                break;
        }
        return ps;
    }
    public static void shopbuy(final int pd)
    {
        app.price = pd;
        app.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                String pstr = app.getProcuctString(pd);
                System.out.println("start buy product " + pd);
                //buyIndex = pd;
                //buyResult(1, buyIndex);
                //用户在游戏内触发道具购买时,调用该接口发起话费支付。
                GameInterface.doBilling(app, 2, pstr,"0123456789012345",
                        GameInterface.OptionalPayType.PAY_TYPE_OFFLINE, payCallback);

            }
        });
    }

    // 计费结果的监听处理,合作方通常需要在收到SDK返回的onResult时,告知用户的购买结果
    final static GameInterface.IPayCallback payCallback = new GameInterface.IPayCallback() {
        @Override
        public void onResult(int resultCode, String billingIndex, Object obj) {
            String result = "";
            switch (resultCode) {
                case BillingResult.SUCCESS:
                    result = "购买道具:[" + billingIndex + "] 成功!";
                    app.buyResult(1);
                    break;
                case BillingResult.FAILED:
                    result = "购买道具:[" + billingIndex + "] 失败!";
                    app.buyResult(0);
                    break;
                default:
                    result = "购买道具:[" + billingIndex + "] 取消!";
                    app.buyResult(0);
                    break;
            }
            Toast.makeText(app, result, Toast.LENGTH_SHORT)
                    .show();
        }
    };
    public void buyResult(final int type){
        Log.d("tga", "购买 !!!!!!!!!!!!!!!!!!!!!!!"+type);
        if (type == 1){
            app.runOnGLThread(new Runnable() {
                @Override
                public void run() {
                    Cocos2dxJavascriptJavaBridge.evalString("cc.buyItem.addzuanshi(" + app.price + ")");
                    //Cocos2dxJavascriptJavaBridge.evalString("cc.dataMgr.vivoInterface()");
                }
            });
        }
        else{
            app.runOnGLThread(new Runnable() {
                @Override
                public void run() {
                    Cocos2dxJavascriptJavaBridge.evalString("cc.buyItem.resultEvent("+type+")");

                }
            });
        }
    }
    public static void gameExit(int type)
    {
        app.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Log.d("取消","取消");
                // 移动退出接口,含确认退出UI
                // 如果外放渠道(非移动自有渠道)限制不允许包含移动退出UI,可用exitApp接口(无UI退出)
                GameInterface.exit(app, new GameInterface.GameExitCallback() {
                    @Override
                    public void onCancelExit() {
                        Toast.makeText(app, "取消退出", Toast.LENGTH_SHORT)
                                .show();
                    }
                    @Override
                    public void onConfirmExit() {
                        //sureExitGame();
                        //_mainActivity.finish();
                        // 获取当前进程的id
                        int pid = android.os.Process.myPid();
                        // 这个方法只能用于自杀操作
                        android.os.Process.killProcess(pid);
                    }


                });
            }
        });
    }

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值