Unity 集成联通SDK

我相信Unity程序员都会遇到加入SDK的问题,我相信如果你不会android编程,我相信你的CPU当场计算过快而爆炸!  这里也写笔记希望能帮助大家

如果有讲错的地方,希望大家能回复并且提供答案!  让我们共同抵抗SDK 呵呵

预备知识:

1. Unity接入SDK有两种方式:

第一种:  Eclipse写好插件放入Unity当中,Unity 写好代码直接发布游戏 (运气好,盘子脸使用的第一种方式)

第二种: Unity先写好代码-》android项目-》Eclipse进行SDK接入-》使用Eclipse发布SDK

2. Unity调用java写的方法: (注释不太会写,我也不懂Android编程)

//获取Unity系统类
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
//这里应该是获取当前页面
AndroidJavaObject activity = jc.GetStatic<AndroidJavaObject>("currentActivity");
//调用order静态方法,传递四个参数[当前页面,计费号,回调Unity的游戏物体名称,回调Unity的方法名]
activity.CallStatic("order", new object[] { activity, "001", "Cube", "Bakcground" });

3. android调用Unity写的方法

//[游戏物体名称,方法名,传递的参数]
UnityPlayer.UnitySendMessage(gameObject,runtimeScript,arg1+"");

注意事项: (联通SDK)

1. 你写好的程序发布APK,在手机直接崩溃原因:

1. Unity的Bundle Identifier (跟你创建android项目那个程序主入口 package xxx.xxx.xxx)不匹配

2. 你的Android插件放入Unity‘的时候位置出错:  (一下图是按照联通SDK拷贝,你发现少了xxx,我只能呵呵了)

3. 联通SDK调用,如果你写一个方法,直接调用pay()弹出支付界面(直接程序崩溃),你怎么死的你都不用知道!

Utils.getInstances().pay(context mContext,String number ,UniPayResultListener listener);    今天问了下坐我对面的哥哥,=。= 他告诉我是什么子线程去调用UI报错了. 然后我有一直猜是什么错误。。。。

Unity 3D手机游戏开发PDF  作者:金玺曾(在发布android游戏如何接入SDK讲的很详细)

eclipse中写的代码:

package com.example.helloworldsdk;   //这里必须要跟Unity ID对应

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.content.Context;

import com.unicom.dcLoader.Utils;
import com.unicom.dcLoader.Utils.UnipayPayResultListener;
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;

public class MainActivity extends UnityPlayerActivity {

    private Context context;
    private String gameObject;
    private String runtimeScript;
    private UnipayPayResultListenerImp imp = new UnipayPayResultListenerImp();
    private UniPayHandler handler = new UniPayHandler();
    public static MainActivity _instance;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //初始化SDK
        Utils.getInstances().initSDK (MainActivity.this,0);
        _instance = this;
    }

    public static void order(Context _context,String number,String gameObject,String runtimeScript){
        _instance.payPage(_context, number, gameObject, runtimeScript);
    }

    //调用支付页面
    public void payPage(Context _context,String number,String gameObject,String runtimeScript){
        this.context = _context;
        this.gameObject = gameObject;
        this.runtimeScript = runtimeScript;
        
        //利用handler调用pay才能正确的弹出支付界面
        Message msg=new Message();
        msg.obj=number;
        handler.sendMessage(msg);
    }

    class UniPayHandler extends Handler
    {
        public void handleMessage(Message message)
        {
            Utils.getInstances().pay(context,(String)message.obj,imp);
        }
    }

    class UnipayPayResultListenerImp implements UnipayPayResultListener
    {

        @Override
        public void PayResult(String arg0, int arg1, String arg2) {
            //[游戏物体名称,方法名,传递的参数]
            UnityPlayer.UnitySendMessage(gameObject,runtimeScript,arg1+"");

        }
    }
}

Unity中的代码:

using UnityEngine;
using System.Collections;
using System;

public class Test : MonoBehaviour {

    private string error;

    void OnGUI() {
        if(GUI.Button(new Rect(0,0,100,100),"支付页面"))
        {
            try
            {

                //获取Unity系统类
                AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
                //这里应该是获取当前页面
                AndroidJavaObject activity = jc.GetStatic<AndroidJavaObject>("currentActivity");
                //调用order静态方法,传递四个参数[当前页面,计费号,回调Unity的游戏物体名称,支付回调Unity的方法名]
                activity.CallStatic("order", new object[] { activity, "001", "Cube", "Bakcground" });

            }catch(Exception e)
            {
                error += e.Message;
            }
        }
        GUI.Label(new Rect(0, 300, 800, 300), error);
    }
    public void Bakcground(string result)
    {
        error += "回调成功:" + result;
    }

}

接入SDK步骤:

1. 创建新的android项目

2. 导入classes.jar(Unity这个你可以查下在那个文件夹下)

3. 拷贝libs下的全部到 eclipse的libs下覆盖

4. 修改AndroidManifest.xml

5. 编写被Unity调用的代码,整个项目导出jar包,放入 Plugins/Android文件下

6. 拷贝eclipse的libs文件夹到 Plugins/Android文件下

7. 拷贝AndroidManifest.xml到 Plugins/Android文件下

8. 解压Multimode_UniPay_base.jar 和Multimode_UniPay_extend.jar包,在当前文件夹下,只把assets文件夹拷贝到Plugins/Android文件下

9. 写好代码,直接使用Unity发布APK即可

Unity和android通信的资料:

http://blog.csdn.net/xv_ly15/article/details/9314199   Unity调用android函数列子

http://blog.csdn.net/richway2010/article/details/6640837 Eclipse真机调试

祝大家生活愉快! 盘子脸

时间: 2024-08-06 09:51:15

Unity 集成联通SDK的相关文章

Unity 调用联通SDK闪退

unity集成openinstall流程

目的 1.Unity集成openinstall sdk? 最近在使用一个叫openinstall的SDK,通过它实现免填邀请码的功能,集成到unity游戏开发中.对App安装流程的优化,尤其是免填写邀请码安装,App推广的有奖邀请活动更大程度的达到推广爆炸式的效果. 在分享链接自定义各种动态参数(如推广渠道号,邀请码,游戏房间号,用户id等等).通过在分享链接url中附带app邀请人的用户id,就可达到免填邀请码的效果;或者app通过在url中附带游戏房间号实现直达游戏房间也可建立上下级关系:u

只上传APK而不进行反编译,在服务器集成第三方SDK。是如何实现的

============问题描述============ 前提:上传的APK中以及接入了服务器接入方提供的统一接口调用代码. 本地将游戏打包好APK后,直接上传这个APK.然后服务器端会将第三方SDK自动集成到APK中, 使上传的这个APK自动集成了第三方渠道的SDK. 一般想到的做法是将上传的APK进行反编译成工程,然后将SDK集成到工程中,再进行编译打包签名生成APK. 但是有的接入平台说拿到APK后不用进行反编译就能集成第三方SDK. 百思不得其解他们是如何做到的,到底是什么原理.(排除动

集成支付宝SDK时错误的解决办法

1.打开Demo中的错误 这是路径错误导致 解决办法:在Build Settings 中找到 Library Search Paths ,去掉其中的 /// 2.自己集成支付宝SDK时的错误 这个也是路径错误, 解决办法:在自己工程文件夹里建一个文件夹,随便起什么名字.把支付宝所需要的东西都拷贝进去,然后add files,然后找到TARGETS-Build Settings,在里面找到如下位置 把自己新建的文件夹拖动到这个框里面,再次运行就OK了,如果不行可以再多试几次 3.跳转后出现“系统繁

2018年Unity结合Android SDK下载安装及配置教程

原文:2018年Unity结合Android SDK下载安装及配置教程 首先声明: Unity版本2017.1f3 ? ? ? ?最近试着在Unity中利用网易做AR开发时,发布项目文件需要发布到Android平台,遇到一些问题,看了网上的一些资料,踩了一些坑,现在总结出来,希望有相同的开发者遇到时可以规避. 第一步.安装JDK: 第二步.安装Eclipse: 第三步.下载并安装AndroidSDK: 第四步.在Unity中发布到Android平台. 安装JDK 官网:http://www.Or

unity接入安卓SDK,与安卓相互通信

.接SDK是个什么样的活计? SDK的工作流程: 1. 从unity端出发,向安卓发起一系列的请求(unity call android). 2. 安卓端收到unity端调用,然后在具体调用SDK的一系列接口(android内部调用) 3. SDK服务器处理之后得到结果,再返回给安卓(网络通信) 4. 安卓获得SDK结果,然后回调unity方法,将结果传回unity端(android call unity) 我们需要做的: 1. 在安卓端,将SDK集成进入 Android的 MainActivi

集成支付宝SDK流程

5.2 SDK集成流程 5.2.1 iOS 解压接口压缩文件(文件名是 WS_MOBILE_PAY_SDK_BASE.zip),找到iOS的压缩文件(文件名是支付宝移动支付SDK 标准版(iOS).zip). 1. 导入代码 步骤1:  启动IDE(如Xcode),把iOS包中的压缩文件中以下文件拷贝到项目文件夹下, 并导入到项目工程中. AlipaySDK.bundle AlipaySDK.framework 步骤2:  在需要调用AlipaySDK的文件中,增加头文件引用. #import

iOS开发——高级篇——如何集成支付宝SDK

一.什么是支付宝 第三方支付平台 和内购非常相似内购是用户将钱付款给苹果,之后苹果分成给商户支付宝是用户将钱付款给支付宝,之后支付宝将钱转入我们的账户 使用支付宝前提购买的物品必须是和应用程序无关的.比如:团购卷/衣服/电子产品如果和应用程序有关,必须采用内购(否则不允许上架).比如:会员/游戏道具 二.集成支付宝 现在不少app内都集成了支付宝功能 使用支付宝进行一个完整的支付功能,大致有以下步骤:向支付宝申请, 与支付宝签约,获得商户ID(partner)和账号ID(seller)和私钥(p

集成支付宝SDK遇到的坑

一.首先我先把集成过程说一下.小编想说的话:支付宝是我做支付中觉得坑最多的一个,各种编译不过,各种出问题. 废话不多说,进入主题:1.首先当前是下载官方SDK啦,当前你也可以通过cocopods进行导入 1.1 官方下载地址文档 https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.aL2Pps&treeId=59&articleId=103676&docType=1 将下图两个文件导入您的项目中 (支付