unity手游之聊天SDK集成与使用一
2015-11-05 19:52
751 查看
手游中都有聊天功能,比如公会,私聊,世界聊天,那么找一个好用,功能强大的SDK的可以节省很多精力,帮助我们提高开发速度与游戏质量。
写本篇博文是为了方便使用这个SDK做聊天模块的程序,避免许多坑,我在研究过程中,咨询了SDK开发者许多问题,所以我会详细的把使用过程及坑记录下来。
[b]集成插件[/b]
我使用的是亲加通讯云提供的即时通讯SDK,附上地址,如下。
这里是文档说明,请查看即时通讯云-增强版,里面有unity的文档:
http://www.gotye.com.cn/docs.html?product=im&apiType=start 这里有UNITY版本的SDK插件: http://www.gotye.com.cn/download.html
大概使用流程就是新建一个unity项目,在编辑器模式下切换成android平台进行编辑器调试。
导入unity sdk插件包gotyeapi.unitypackage。
如果提示Plugins/Windows/32bit/gotyeapi.dll等 插件等冲突,可以删掉Plugins/Windows/32bit文件夹下的插件,因为我是64位操作系统,所以Plugins/Windows/64bit文件夹下的插件有就行了。
[b]导出android项目[/b]
发android包必须先导出android项目:
然后把unity项目插件里的Plugins/Android/libs/armeabi 文件夹和 Plugins/Android/libs/armeabi-v7a文件夹 拷贝到导出的android项目里libs文件夹里进行替换,因为Export的android项目缺少libs。
用Ellipse打开android项目:
File->Import->Anroid->Existing Android Code Into Workspace: Next
选择Android文件夹路径,导入后保证libs不缺少,正常应该如下图:
然后打开src->com.gotye.unityTest->UnityPlayerNativeActivity.java文件,在里面初始化sdk GotypeAPI:
在@Override protected void onCreate (Bundle savedInstanceState)函数内最后一行加上:
GotyeAPI.getInstance().init(getApplicationContext(), "19ff98c3-f93d-477f-81ba-be68859433a8", GotyeAPI.SCENE_UNITY3D);
别忘了加命名空间:import com.gotye.api.*;
app key改成你在官网上申请的appkey。
然后打开android项目根目录的AndroidManifest.xml文件,修改appkey成你在官网申请的appkey,并保存。
android:value="19ff98c3-f93d-477f-81ba-be68859433a8"
[b]ellipse发apk包[/b]
File->Export->Anroid->Export Android Application -> Next,
选择要导出的项目,继续Next,
这里没有keystore的可以,先创建一个,testkey.keystore随便写,保存在根目录,填写paasword,重复填写密码后,Next,
这样,选择导出的包的地址,就可以打包apk了,再通过DDMS可以调试apk,查看log。
[b]API使用
[/b]
值得注意的是必须有mainLoop(),没有这个则服务器不会相应回调任何客户端的回调。
编辑器模式下需要api.Init(appkey, "com.gotyeapi") ,第二个参数不能改变,第一个参数改成自己的appkey。
下面是登陆的回调脚本:
同样,你应该为每个监听写一个脚本,类似Login监听,这样才能收到服务器的响应。
这样用:
就可以登陆了,之所以之前调用Logout,是为了没有退出话,先直接退出,再登陆。
[b]给好友发私聊[/b]
监听好友事件:
下面的代码可以在登陆成功的回调onLogin里调用:
添加好友:
获取好友列表:
给好友发私聊:
发送后,zhangsan就会 收到消息:onReceiveMessage。
文本消息发送完毕。
下一篇,我会研究该SDK语音聊天功能。
写本篇博文是为了方便使用这个SDK做聊天模块的程序,避免许多坑,我在研究过程中,咨询了SDK开发者许多问题,所以我会详细的把使用过程及坑记录下来。
[b]集成插件[/b]
我使用的是亲加通讯云提供的即时通讯SDK,附上地址,如下。
这里是文档说明,请查看即时通讯云-增强版,里面有unity的文档:
http://www.gotye.com.cn/docs.html?product=im&apiType=start 这里有UNITY版本的SDK插件: http://www.gotye.com.cn/download.html
大概使用流程就是新建一个unity项目,在编辑器模式下切换成android平台进行编辑器调试。
导入unity sdk插件包gotyeapi.unitypackage。
如果提示Plugins/Windows/32bit/gotyeapi.dll等 插件等冲突,可以删掉Plugins/Windows/32bit文件夹下的插件,因为我是64位操作系统,所以Plugins/Windows/64bit文件夹下的插件有就行了。
[b]导出android项目[/b]
发android包必须先导出android项目:
然后把unity项目插件里的Plugins/Android/libs/armeabi 文件夹和 Plugins/Android/libs/armeabi-v7a文件夹 拷贝到导出的android项目里libs文件夹里进行替换,因为Export的android项目缺少libs。
用Ellipse打开android项目:
File->Import->Anroid->Existing Android Code Into Workspace: Next
选择Android文件夹路径,导入后保证libs不缺少,正常应该如下图:
然后打开src->com.gotye.unityTest->UnityPlayerNativeActivity.java文件,在里面初始化sdk GotypeAPI:
在@Override protected void onCreate (Bundle savedInstanceState)函数内最后一行加上:
GotyeAPI.getInstance().init(getApplicationContext(), "19ff98c3-f93d-477f-81ba-be68859433a8", GotyeAPI.SCENE_UNITY3D);
别忘了加命名空间:import com.gotye.api.*;
app key改成你在官网上申请的appkey。
然后打开android项目根目录的AndroidManifest.xml文件,修改appkey成你在官网申请的appkey,并保存。
android:value="19ff98c3-f93d-477f-81ba-be68859433a8"
[b]ellipse发apk包[/b]
File->Export->Anroid->Export Android Application -> Next,
选择要导出的项目,继续Next,
这里没有keystore的可以,先创建一个,testkey.keystore随便写,保存在根目录,填写paasword,重复填写密码后,Next,
这样,选择导出的包的地址,就可以打包apk了,再通过DDMS可以调试apk,查看log。
[b]API使用
[/b]
using UnityEngine; using System.Collections; using gotye; public class InitAPI : GotyeMonoBehaviour { public GotyeAPI api; void Awake() { InvokeRepeating ("mainLoop", 0.0f, 0.050f); } // Use this for initialization void Start() { api = GotyeAPI.GetInstance (); if (Application.platform != RuntimePlatform.Android) { api.Init("19ff98c3-f93d-477f-81ba-be68859433a8", "com.gotyeapi"); } //语音识别有关,可选 api.InitIflySpeechRecognition(); } void mainLoop() { api.MainLoop(); } }
值得注意的是必须有mainLoop(),没有这个则服务器不会相应回调任何客户端的回调。
编辑器模式下需要api.Init(appkey, "com.gotyeapi") ,第二个参数不能改变,第一个参数改成自己的appkey。
下面是登陆的回调脚本:
using UnityEngine; using System.Collections; using gotye; public class Login : GotyeMonoBehaviour, LoginListener { public GotyeAPI api; void Start() { api = GotyeAPI.GetInstance (); api.AddListener (this); } public void onLogin(GotyeStatusCode code,GotyeUser user) { Debug.Log ("onLogin--" + code + "," + user.Name); api.ReqFriendList (); api.BeginReceiveOfflineMessage (); } public void onLogout(GotyeStatusCode code) { } public void onReconnecting(GotyeStatusCode code, GotyeUser currentUser) { } }
同样,你应该为每个监听写一个脚本,类似Login监听,这样才能收到服务器的响应。
这样用:
api.Logout(); //注意Login函数的第二个参数,必须为null,否则服务器回调给Login.cs的onLogin回调的code是验证失败的。 api.Login(userName, null);
就可以登陆了,之所以之前调用Logout,是为了没有退出话,先直接退出,再登陆。
[b]给好友发私聊[/b]
监听好友事件:
using UnityEngine; using System.Collections; using gotye; using System.Collections.Generic; public class Friend : GotyeMonoBehaviour, UserListener { public GotyeAPI api; public List<GotyeUser> friendList = new List<GotyeUser>(); void Start() { api = GotyeAPI.GetInstance (); api.AddListener (this); } public void onAddFriend (GotyeStatusCode code,GotyeUser friend) { //添加好友成功后,刷新好友列表 api.ReqFriendList (); } public void onGetFriendList(GotyeStatusCode code,List<GotyeUser> list) { friendList = list; } }
下面的代码可以在登陆成功的回调onLogin里调用:
添加好友:
//账号"zhangsan"必须存在,才能加好友成功,回调给实现UserListener接口的类。 api.ReqAddFriend(new GotyeUser("zhangsan"));
获取好友列表:
api.ReqFriendList ();
给好友发私聊:
//receiver 可以自己用好友账号名new一个 GotyeUser receiver = new GotyeUser("zhangsan"); GotyeMessage msg = GotyeMessage.CreateTextMessage(receiver, content); api.SendMessage(msg);
发送后,zhangsan就会 收到消息:onReceiveMessage。
文本消息发送完毕。
下一篇,我会研究该SDK语音聊天功能。
相关文章推荐
- Unity3D学习笔记
- 用unity surface shader 重新渲染dota2 模型
- Unity 角色释放技能后使周围物体具有爆炸效果
- unity调用别的脚本里面的方法
- Unity3D 学习 创建简单的按钮、相应事件
- unity/unity3d编译成android apk包瘦身方法
- 【Unity】MonoBehavior事件函数的执行顺序(监听调用顺序)
- Unity 3D 正交相机(Orthographic)
- Unity3D中Quaternion.Euler方法解析
- 浅析游戏引擎的资源管理机制 扒一扒Unity3D中隐藏在背后的资源管理
- 【VR】Leap Motion 官网文档(二) Unity插件概述
- Unity3D工程版本管理方案
- UNITY 5.2 Time类
- Unity结合讯飞语音在线识别
- unity3d 保存(截图、拍照)图片 到Android IPhone手机相册
- Unity3D调用第三方SDK(之一)从eclipse到Unity3D
- unity 粒子缩放代码实现
- Spine 2D骨骼动画插件 for Unity
- Unity3D研究院之LZMA压缩文件与解压文件
- Unity快捷键