sdk开发(游戏sdk开发)

软件教程 2023.02.26 139

目录:

米讯 社交SDK 开发指南

米讯SDK,主要提供各种即时通讯服务。帮助游戏和app快速实现 实时聊天,私信留言,音视频通话,群聊等im功能。

目前我们提供了Android、iOS的客户端SDK,同时提供了各个平台的详细文档和Demo,帮助快速入门。

* 我们强烈建议你阅读完本篇指南之后,再去查看以上的详细文档。

接入方需要通过唯一的appid、appkey、guid来向米讯服务器绑定用户,后续交互通过这个guid来标志一个用户。

米讯服务器不关心guid的业务逻辑,接入方只需要保证guid独立性。

米讯服务器提供open-api,接入方服务器需要随时和米讯服务器同步群组关系。

支持 room(聊天室)和group(群组)两种群聊模式。

room:只提供在线消息收发,用户离线时自动退出。不保存记录。(频道聊天,房间聊天等)

group:稳定的群组关系,提供云端消息存储和离线消息等功能。(工会聊天、邮件等)

支持单聊、聊天室、群聊。并且具备完善的群组管理功能。

支持文字、语音、自定义文件、小视频、图片(开发中)等多种自定义类型消息。

聊天记录保存在云端,允许自由获取。

支持系统向指定用户和群组发送消息。

提供最多16人的 多人实时语音通话功能

支持通话中的各种设定

支持根据带宽情况,只能调整流量消耗

支持最多4人的多人视频功能(开发中)

如果不需要使用实时通话功能:可以删掉lib中的 rtc-sdk-jni.so 和 libHDACEngine.so 文件以减小SDK体积。

离线消息推送

敏感词过滤

资料和关系链托管

其他个性化业务

如有需求请单独联系我们

原生的 Android、iOS、的客户端 SDK

服务器帐号绑定、群组管理、系统消息发送的open api

可以实时监控用户数、消息数的开发者控制台(开发中)

为方便unity游戏接入,我们提供了unity的SDK封装和样例工程。

unityDemo分为展示基础功能的appDemo和演示游戏中实时通话的SpaceShooter。接入方可以按需参考。

接入方从米讯获取 appID和appkey。

所有服务端的接口鉴权,都要通过appID和appkey来实现。请妥善保存。

客户端接口需要的token、publicID、publickey,需要由接入方服务器,用appID和appkey来换取。再转发给客户端保存。

2、账户绑定(guid、token、pubkey)

接入方需要提供唯一的id来标识一个用户端。这个id,在米讯SDK中,称之为guid(最长128个字符)。

接入方服务器需要调用米讯服务器的bind_account(appid,appkey,guid)来进行注册。米讯服务器将返回对应这个guid的 token、publicID、publickey。

接入方app,在初始化米讯SDK提供的服务时,需要提供 (guid,token,publicID,publickey)。

* 米讯服务器不关心guid的业务逻辑,接入方只需要保证guid独立性。

3、群聊(room,group)

米讯SDK提供两种模式的消息群聊服务。分别适合不同的场景。

所有群组的管理,需要接入方服务器和米讯服务器实时交互,保证用户在正确的群里。

接入方app,调用米讯sdk消息操作,负责向群里的用户收发消息。SDK暂时不提供群组管理功能。

聊天室(Room)

只提供在线消息收发,用户离线(超过5min没心跳)自动退出room。再次上线需要重新加入。不保存消息记录。

适合频道聊天、聊天室、随机配对聊天等场景。

一个room,最多同时在线10000人。

rid:接入方定义,要保证不同room的rid唯一性。(128个字符内)

roomtype:接入方定义,方便用户屏蔽某一类room的消息。

群组(Group)

稳定的群组关系,提供云端消息存储和离线消息等功能。需要接入方服务器控制成员进出和群组创建销毁。

适合工会聊天,固定群聊等。

一个group,最多有1000个成员。

gid:接入方定义,要保证不同group的gid唯一性。(128个字符内)

grouptype由业务方定义,方便用户屏蔽某一类group的消息。

4、消息(Message)

Message是SDK用来传输消息的基本对象。需要接入放app构造,然后调用sdk的send接口进行发送。

Message的关键信息如下:

属性类型说明

messageID

String发送方填写的消息ID,用于本地消息去重

fromString发送方ID

targetString接收方ID ,单聊时为对方guid,群聊时为roomID或groopID

bodyMessageBody消息体。不同类型的消息,消息体内容不同,详见下方说明

bodyTypeint消息体枚举类型。暂时包括文本、语音。决定如何解释消息。

messageSeqlong服务端分配的消息序号,用于消息同步,离线消息拉取等

...

MessageBody

我们提供一下几种类型的MessageBody,后续会持续扩展

0、CustomMessageBody:data

1、TextMessageBody:text

2、AudioMessageBody:audioFilePath;audioUrl;duration

请接入方注意,控制每个Message最大不超过 5KB 的数据。

关于语音消息的录制工具,和自定义消息的方法,请参考详细说明文档。

4、语音通话(VOIP)和会议(Conference)

1、使用语音通话时,接入方服务器,需要先和米讯服务器交互,创建conference。并维护Conference里面的成员。

2、接入方客户端,通过joinconf(confid,guid)来加入确定的conference(前提是,这个conference的成员里面有这个人)

3、客户端加入房间成功后,可以使用各种接口控制音频通话 和 实时获取成员状态。

4、离开conference和确定conference不再使用时,需要及时leave和destroy。

如果不需要使用实时通话功能:可以删掉lib中的 rtc-sdk-jni.so 和 libHDACEngine.so 文件以减小SDK体积。

五、调用流程概要

1、发消息

2、实时语音通话

交互示意

调用流程图

六、详细文档和Demo

Android SDK 详情

iOS SDK 详情

服务端的 OpenAPI

七、联系方式

业务对接和常见问题:

韩尚佑;QQ:271843826;e-mail:hanshangyou@xiaomi.com

服务端API:

张友明;QQ:179818827;e-mail:zhangyouming@xiaomi.com

Android-SDK:

连冬阳;QQ:2460572865;e-mail:liandongyang@xiaomi.com

刘飞;QQ:276985107;e-mail:liufei3@xiaomi.com

iOS-SDK:

柯洪峰;QQ:249082954;e-mail:kehongfeng@xiaomi.com

sdk是什么

一般而言,SDK即 开发 Windows 平台 下的 应用程序所使用的SDK ,它可以简单的为某个程序设计语言提供应用程序接口API的一些文件,也可能包括能与某种嵌入式系统通讯的复杂的硬件,还经常包括示例代码、支持性的技术注解或者其他的为基本参考资料澄清疑点的支持文档。

为了鼓励开发者使用其系统或者语言,许多SDK是免费提供的。软件工程师通常从目标系统开发者那里获得软件开发包,也可以直接从互联网下载。SDK是 软件开发工具包 的意思,一般都是一些软件工程师为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。

如何用java开发一个sdk

如何用java开发一个sdk可以在千锋教育进行专业的学习,千锋教育是国内java开发教学的领导者,实力雄厚,放心可靠。

java开发一个sdk具体流程:

1、在Java工程中添加该SDK中dist目录下的jar库,并添加到你的编译路径中。

2、在代码中import相应的包名。

3、非web应用请修改和查阅***.java,web应用请修改config.jsp,查阅index.jsp, 获得包括oauth登录请求及其它功能请求的方法接口。

4、commons包里面的java类实现了目前腾讯微博开发平台的所有接口,除第一个参数是oauth对象外其他都和开发平台的api文档一致,类名和方法名亦和api一致:比如获取主页时间线的api是:那么此SDK的java类是:Statuses_***.java,实现方法是home_timeline(a,b,c,d...)。

5、此SDK为半原创,思路和部分方法函数参考了官方(热心网友sampan)提供的java SDK() 和网上相关的Oauth授权资料。

6、javawind-qweibo-api-1.0.jar为本sdk生成的jar,如果有修改源码,记得重新生成此jar。

想要了解更多java开发的相关信息,推荐咨询千锋教育。千锋励精图治,不改教育初心。十一年来,千锋以政策为引导,不断完善国内特色现代职业教育体系建设,充分发挥教研师资队伍使命,构建品质教育,加大创新型人才培养力度,为经济发展提供智力人才和智力支撑,成为新时期职业教育发展的新方向,在同行业中有很高的美誉度。

SDK-开发工程.framework

在SDK开发中,我们一般都是开发静态库。通常以Framework这样的打包方式,进行打包我们自己的SDK工程;.framework主要里主要包含:

C++跨平台SDK开发指北

上半年一直忙于主机平台支付功能的接入,原来基于android开发的sdk并不适用主机平台。为了满足业务需求,先是重新开发了一套unity的sdk,用于unity引擎游戏业务集成。然而该unity sdk并不能满足ue4引擎游戏业务的需求,考虑到后续sdk的兼容和通用,选择重新开发一套c++ sdk,实现跨主机平台接入。

虽然很早之前也接触过c++开发,但工作以来主要还是做android平台开发,c++很多东西早就忘的一干二净了。相对于早前自己开发的unity sdk,c#语言更类似java,同样采用虚拟机实现,平台工具都比较齐全。而c++自身的语言特性和平台实现差异,决定了重新开发一套c++ sdk的难度。

c++ sdk的目标是能支持跨平台调用,实现多平台支付接入。如:既能支持switch、ps4、xbox等不同平台支付功能的接入,又能支持unity跨平台调用该sdk。因此,对外暴露的sdk接口入参回调等最好是统一格式,最小化的个性定制。

c++对外接口如下所示:

为了实现unity跨平台调用该c++ sdk,需要再封装一层协议接口层,实现unity到c++的转换。并通过dllexport,将接口暴露到unity层。

以初始化接口Initialize为例:

unity层调用c++ dll库中接口的方式如下:

这部分内容主要分析c++ sdk的逻辑设计思路。c++ sdk对外提供初始化、支付、补发、查物品信息和查营销信息等功能,对内需要维护复用一套框架,实现不同平台不同支付渠道的接入。

由于对外提供的接口存在相似性(入参request、回调callback),抽象出订单中心。

每次各外部接口调用开始到结束,复用同一套订单逻辑。以支付接口调用为例:

sdk是以渠道为粒度,提供了一套框架,负责实现各渠道的流程调度。而每个渠道通常存在差异,对外提供的功能不一,从而将渠道的每项功能抽象为具体的渠道实例,如:支付渠道、补发渠道、查物品信息渠道和查营销活动渠道。而sdk再通过基类,抽象出各功能渠道的流程框架,具体实现交由不同子类渠道完成。

仍以支付为例:

由于c++不支持反射,不能像java实现实例的动态创建。c++ sdk通过渠道工厂类,负责渠道实例的创建回收。

网络层设计的目标是既能满足sdk自身业务需要,又能跨平台调用。于是将网络抽象成3层:

这里讲下跨平台层实现逻辑。

由于sdk目标是能在多平台上运行,而不同平台如windows、linux和unix中网络库不同;要实现多平台统一,可以采用的方式有:

c++ sdk的目标是跨平台,但如何实现跨平台?

综合sdk实现过程中,需要跨平台实现的主要是sdk的基础功能,如:网络收发、AES加/解密、gzip压缩。正如在上面提到的一样,开始的方案是通过引入第三方平台无关的库来实现各基础功能,再通过编译成不同平台的库来实现跨平台。而在x64上,自己也通过这种方式实现了整套流程,在x64上采用的库为:

而在移植到ps4平台时,花了大量时间做libcurl的编译,而openssl编译适配更是毫无头绪。于是放弃了这种实现,改而通过将基础功能下沉到具体平台实现,sdk抽象出基类实现跨平台框架。最终在ps4的移植后,采用的方式:

c++ sdk断断续续开发了一个多月,重新捡起c++到完成ps4的移植测试,还是有点成就感的。之前虽然也重新写了一套unity sdk,但相对c++ sdk来说,难度还是低了很多。虽然也是重复造轮子,但在整个项目的过程中,碰到的问题远比预期的多,解决问题的快乐才是继续的源动力。

本文转载自互联网,如有侵权,联系删除

相关推荐