https://blog.csdn.net/linxinfa/article/details/102635849
这两天接了下微信开放平台的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/ , 查看更多