推广 热搜:     系统  行业  参数  教师  中国  机械  设备  基金 

微信开放平台android接入笔记(unity3d)

   日期:2024-12-04     移动:http://mip.tpjde.com/quote/2505.html

https://blog.csdn.net/linxinfa/article/details/102635849

微信开放平台android接入笔记(unity3d)


 

这两天接了下微信开放平台的sdk,总结下。

1 申请应用

首先,申请appId和appSecret这部分就不多讲了,上官网申请,审核通过就可以拿到了

2 SDK下载

然后就是下载sdk了

sdk下载地址: https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=&lang=zh_CN

有两个,一个旧的一个新的,一开始我下的是新的,就是下图打x的那个,发现数据结构跟文档说的不一样,原来是微信开放平台的文档没有更新(不得不吐槽一下微信开放平台的小伙伴,数据结构还是按旧的sdk来说的,所以我还是使用了旧的sdk进行开发,就是我打钩的那个

下载下来之后,解压,在lib目录下有两个jar包,我用的是框框那个

 

3 封装接口(中间件

好了,这个jar包怎么用呢,首先我们是要给unity调用的,所以,得写一个中间件,就是作为unity和这个jar包接口之间的桥梁。

用eclipse新建一个android工程,导入unity中关于编译Android程序的jar包:classes.jar

project - Properties - Java Build Path - Add External JARs...

unity的classes.jar路径一般为: %Unity安装目录%EditorDataPlaybackEnginesAndroidPlayerVariationsmonoDevelopmentClassesclasses.jar

然后让主Activity继承UnityPlayerActivty,因为我们在Unity中要获得这个主Activity然后进行一些接口调用,下面再说怎么调用

然后,在android工程中新建个libs目录,把上面的那个wechat-sdk-android-with-mta-1.3.4.jar丢进来

在onCreate中创建api对象

 

按照微信开放平台的文档,我们需要进行注册接口的调用,写个注册接口

再写个授权接口

sendReq给微信了,微信客户端就会收到我们发给它的信息,它会启动自己的Activity

在这个Activity,你点取消按钮或者确认登录按钮,微信的Activity都会new一个叫WXEntryActivity的东东然后调用onResp

这个WXEntryActivity必须放在名字叫做wxapi的文件下面,所以必须新建一个wxapi文件夹,并且Activity名字必须是WXEntryActivity,继承Activity并继承接口IWXAPIEventHandler

它也是在onCreate中通过WXAPIFactory创建一个api对象,然后调用接口handleIntent,这样才能收到微信的回调

下面就是onResp和onReq了

为了理解这两个回调,我画了个图

我们上面授权其实是调用了sendReq,微信启动了个Activity,点取消或者确认登录的时候呢,它就会回调到我们那个WXEntryActivity的onResp了

回调回来的数据结构是个baseResp,我们要根据type转化为对应的子类,由于我们是要传给unity的,说以得把数据转成json,写个单独的类专门转成json,然后写个专门的类作为unity的消息发送器,这样,就可以把数据传到unity啦

注意记得处理完执行finish,这样才能回到主Activity

将数据结构转化为json的类

unity消息发送器

其他接口就不继续讲了,现在我们要把我们写的这些java代码打成jar包导入unity中

4 将我们写的中间件打成.jar文件

注意,只需要将java代码打成jar包即可,所以右键src->Export->Java->Jar file

打成jar包,比如叫SPHelper.jar

在unity工程Assets目录下新建Plugins/Android/libs目录

然后把SPHelper.jar丢进去把wechat-sdk-android-with-mta-1.3.4.jar也丢进去

5 AndroidManifest配置

然后是AndroidManifest,我们至少有两个Activity,一个是主Activity,一个是WXEntryActivity

Unity安装目录中有一个AndroidManifest.xml模板,可以拿模板进行修改

目录Unity安装目录/Editor/Data/PlaybackEngines/AndroidPlayer/Apk/AndroidManifest.xml

记得添加权限

6 Unity调用java

好了,可以开始unity的调用了

就是通过com.unity3d.player.UnityPlayer创建一个AndroidJavaClass对象: m_jc

然后通过这个对象GetStatic<AndroidJavaObject>("currentActivity")得到一个AndroidJavaObject对象: m_jo

然后我们就可以用这个m_jo.Call("RegistWXApi")跟m_jo.Call("ReqLogin")了,它就会调用我们上面的java接口了

 

回调回来是通过SendMessage到Unity的一个同名GameObject的方法上的

所以我们搞个名字叫WXSdkAndroidConnector的GameObject,并且挂上脚本,脚本上有个OnRecvMsg的共有成员函数,参数是个字符串

这样我们就能接受到java那边的回调了,剩下的就是解析json跟一些逻辑处理了,这里就不展开了

先讲这么多吧,关于iOS部分的还没有研究,有机会再研究写总结,望共勉


本文地址:http://www.tpjde.com/quote/2505.html    推平第 http://www.tpjde.com/ , 查看更多

特别提示:本信息由相关企业自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


相关行业动态
推荐行业动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2023001713号