Unity PC端调用Java SDK与接口集成

最近一星期在了解Android接入SDK的过程,之前用Android Studio生成一个简单的jar来实现Unity和Android的相互操作,今天尝试接了下ShareSDK的接入,比预想的容易很多,详细记录一下,也希望对大家有所帮助。

环境:

Unity2018.2.41

夜深模拟器

AndroidSDK 29

JDK

android-ndk-r13b



一 新建Unity项目

   新建项目,我把它命名为ShareSDKTest,然后在MainCamera下新建Canvas,几个Button,一个Text,如下图结构:

unity pc 调用java unity怎么调用sdk_Unity

场景中看起来长这样,

unity pc 调用java unity怎么调用sdk_Android_02

对了,设置一下Canvas->Scale Factor 值为2,Button坐标y轴相隔-50,场景随便弄,能看到就行

点击菜单File>Build Settings 切换到Android平台,修改build system为Internal(默认是gradle,但是用gradle工具打包时,会报一个错,修改成internal就可以正常打包,原因未细究)接着修改PlayerSettings,修改这几个地方,如下所示

unity pc 调用java unity怎么调用sdk_ShareSDK_03

unity pc 调用java unity怎么调用sdk_ShareSDK_04

package name这个名字很重要,很多地方都要修改保持一致(后面会说改哪里),这个是app在程序里面的名字,product name是安装后icon显示给用户看的名字

Unity初步弄完,弄下一步

二 ShareSDK获得App账号

打开ShareSDK的官网 http://www.mob.com/developer/register?tag=1,正常的操作进行注册,登陆,然后申请开发者资质,大概1个小时审核通过,通过后点击右上角“产品中心”,点击立即进入,如下图

unity pc 调用java unity怎么调用sdk_unity pc 调用java_05

然后创建一个应用,名字的话建议和前面Unity的名字一样,叫做“ShareSDKTest”,创建后就可以获得这个应用在ShareSDK的appkey和appsecret

unity pc 调用java unity怎么调用sdk_SDK_06

保存这两个值,随便放在一个txt文本里,方便待会copy

三 下载,放置ShareSDK

打开这个网址: https://github.com/MobClub/New-Unity-For-ShareSDK,clone下载下来,然后解压,里面有个叫ShareSDK.unitypackage的包,回到unity,点击 Assets=>inprot package 导入这个包。(当然,在git的下载页下有官方的说明,建议先看一遍)点击Main Camera,添加Share SDK作为它的Component,这样ShareSDK就放进Unity里了

四 修改ShareSDK的配置

ShareSDK导入后需要修改很多地方,注意不要漏了

1)点击MainCamera,找到ShareSDK脚本组件,填入前面在ShareSDK官网获得的AppKey和AppSecret

unity pc 调用java unity怎么调用sdk_ShareSDK_07


2)点击ShareSDK.cs,启动Visual Studio,修改ShareSDK脚本的AppKey和AppSecret

unity pc 调用java unity怎么调用sdk_unity pc 调用java_08


3)打开AndroidManifest.xml,修改AppKey和AppSecret

unity pc 调用java unity怎么调用sdk_ShareSDK_09


4)打开AndroidManifest.xml,修改包名

unity pc 调用java unity怎么调用sdk_Android_10


5)打开AndroidManifest.xml,修改版本,因为我的Android Studio的安装了这两个版本,所以就改成16 和 29

unity pc 调用java unity怎么调用sdk_Android_11


6)打开AndroidManifest.xml,修改Activity的name,就是在.wxapi.WXEntryActivity等3个activity加上package的前缀"com.sdk.sharesdktest"

unity pc 调用java unity怎么调用sdk_ShareSDK_12

五 获得我们app的jar包

官方说:微信规定WXEntryActivity.java类的位置必须放到 “项目包包名.wxapi” 路径下,需要生成新的jar包,这个可以自己生成,不过我还不太熟悉Android Studio,就找官方客服帮忙了,官方q群:4006852216,跟客服说帮忙生成一个新的DemoCallback.jar,然后报上packamge的名字(比如 com.sdk.sharesdktest),等几分钟就可以收到新的jar,把收到的jar放到Unity项目 Assets=>Plugins=>Android=>libs下

六 编写C#脚本,实现对ShareSDK的调用

这里我写了一个脚本SDKManager来调用接口,脚本挂载在Main Camera上,把前面创建的 button 和 text 拖拽到脚本组件上面,代码如下:

unity pc 调用java unity怎么调用sdk_Android_13

登录后复制


using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using cn.sharesdk.unity3d;

public class SDKManager : MonoBehaviour {

    public Button smsBtn;
    public Button weChatBtn;
    public Button emailBtn;
    public Button smsContentBtn;
    public Text infoText;
    private ShareSDK ssdk;
    ShareContent content;

    void Start() {
        Init();
        InitBtns();
    }
    
    //获得ShareSDK对象,并且注册分享后的回调
    void Init()
    {
        ssdk = GameObject.Find("Main Camera").GetComponent<ShareSDK>();
        ssdk.shareHandler = ShareResultHandler;
    }

    //初始化按钮的点击事件
    void InitBtns()
    {
        smsBtn.onClick.AddListener(OnClickTestMsgBtn);
        weChatBtn.onClick.AddListener(OnClickWeChatBtn);
        emailBtn.onClick.AddListener(OnClickEmailBtn);
        smsContentBtn.onClick.AddListener(OnClickShowContentBtn);
    }

    //输出信息到text,这样才知道发生了什么
    void PrintInfo(string info)
    {
        infoText.text = info;
    }

    //测试短信
    void OnClickTestMsgBtn()
    {
        PrintInfo("OnClickTestMsgBtn");
        ssdk.ShowPlatformList(new PlatformType[] { PlatformType.SMS }, GetShareInfo(" SMS "), 100, 100);
    }

    //测试微信
    void OnClickWeChatBtn()
    {
        PrintInfo("OnClickWeChatBtn");
        ssdk.ShowPlatformList(new PlatformType[] { PlatformType.WeChat }, GetShareInfo("we chat"), 100, 100);
    }

    //测试邮件按钮
    void OnClickEmailBtn()
    {
        PrintInfo("OnClickEmailBtn");
        ssdk.ShowPlatformList(new PlatformType[] { PlatformType.Mail }, GetShareInfo("mail"), 100, 100);
    }

    //测试直接打开
    void OnClickShowContentBtn()
    {
        PrintInfo("OnClickShowContentBtn");
        ssdk.ShareContent(PlatformType.SMS, GetShareInfo("SMS"));
    }

    //获得分享的内容结构
    ShareContent GetShareInfo(string platformType)
    {
        ShareContent content = new ShareContent();
        content.SetText("this is a test string.");
        content.SetImageUrl("https://f1.webshare.mob.com/code/demo/img/1.jpg");
        content.SetTitle("test title:" + platformType);
        content.SetTitleUrl("http://www.mob.com");
        content.SetSite("Mob-ShareSDK");
        content.SetSiteUrl("http://www.mob.com");
        content.SetUrl("http://www.mob.com");
        content.SetComment("test description");
        content.SetMusicUrl("http://mp3.mwap8.com/destdir/Music/2009/20090601/ZuiXuanMinZuFeng20090601119.mp3");
        content.SetShareType(ContentType.Webpage);
        return content;
    }


    //分享后的回调
    void ShareResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result)
    {
        if (state == ResponseState.Success)
        {
            PrintInfo("Success" + MiniJSON.jsonEncode(result));
            print("share result :");
            print(MiniJSON.jsonEncode(result));
        }
        else if (state == ResponseState.Fail)
        {
            PrintInfo("Fail" + MiniJSON.jsonEncode(result));
            PrintInfo(MiniJSON.jsonEncode(result));
            print("fail! throwable stack = " + result["stack"] + "; error msg = " + result["msg"]);
        }
        else if (state == ResponseState.Cancel)
        {
            PrintInfo("cancel !");
            print("cancel !");
        }
    }
}

七 打包,检查功能

好了,工作准备完了,执行unity的build打包,把打出来的包拖入夜深模拟器,也可以传到自己的手机上安装,最终效果是这样的

一开始界面

unity pc 调用java unity怎么调用sdk_ShareSDK_14

点击smsButton后

unity pc 调用java unity怎么调用sdk_SDK_15

点击smsContenButton后

unity pc 调用java unity怎么调用sdk_Unity_16

回调结果

unity pc 调用java unity怎么调用sdk_Unity_17



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空