开发一款即时通讯App,从这几步开始

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦本文由腾讯云视频发表于云+社区专栏关注公众号“腾讯云视频”,一键获取 技术干货 | 优惠活动 | 视频方案“晚上去哪吃饭啊?”桌面上来自一条晚上约饭的对话框——QQ。突然灵光一现,新出了优化的IM SDK,可以尝试着搭建一个类似QQ的即时通讯软件01注册账号腾讯云官网注册腾讯云账号,也可以使用QQ或者微信直接登陆02创建应用选择【产品】→【云通信】→【立即使用】→【创建应用接入】03SDK接入1、集成SDK【下载云通信SDK】包括IMSDK(云通信SDK)、TUIKit(基础界面库)2、生成UserSig在【基础配置】下载公私钥,使用【开发辅助工具】生成测试用户的UserSig3、初始化SDKAndroid代码 //应用启动时(一般为Application的onCreate)配置UIKit的基本配置,具体参数说明参考API BaseUIKitConfigs uiKitConfigs = new BaseUIKitConfigs(); uiKitConfigs.appCacheDir(Constants.APP_DIR_CACHE).audioRecordMaxTime(120) .disableAudioPlayedStatusIcon(true).disableAutoPlayNextAudio(true) .ChatProcessor(new PojoChatProcessor()); ILiveUIKit.init(this, uiKitConfigs);4、创建登陆界面Android代码 public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); //实例化登录面板 mLoginPanel = new LoginView(this); //将登录组件设置为登录Activity的基本布局,也可在布局文件xml中引用LoginView setContentView((View) mLoginPanel); //添加登录组件的动作事件,登录点击与注册点击 mLoginPanel.setLoginEvent(new ILoginEvent() { @Override public void onLoginClick(View view, String userName, String password) { //点击登录时业务自己的登录逻辑 } @Override public void onRegisterClick(View view, String userName, String password) { //点击注册时业务自己的注册逻辑 } }); }界面实图 5、创建会话列表布局文件 <!–在会话列表布局文件中引用会话列表组件,也可参考登录面板在代码中设置–><?xml version=“1.0” encoding=“utf-8”?><LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android" xmlns:app=“http://schemas.android.com/apk/res-auto" xmlns:tools=“http://schemas.android.com/tools" android:layout_width=“match_parent” android:layout_height=“match_parent” android:orientation=“vertical” tools:context=".main.MainActivity”> <com.tencent.qcloud.uikit.business.session.view.SessionPanel android:id=”@+id/session_panel” android:layout_width=“match_parent” android:layout_height=“match_parent” /></LinearLayout>Android代码 /*** 获取会话列表组件,初始化默认设置* 会话组件的默认设置已经实现了会话数据的拉取与处理(与IMSDK关联完成相关逻辑)* 开发者如为特殊要求直接初始化默认设置即可* 另会话组件提供的可扩展的事件和UI处理,具体可参考API文档*/sessionPanel = baseView.findViewById(R.id.session_panel);sessionPanel.initDefault();界面实图6、创建聊天界面Android代码//从布局文件中获取聊天面板组件chatPanel = mBaseView.findViewById(R.id.chat_panel);/** 会话组件的默认设置已经实现了会话数据的拉取与处理(与IMSDK关联完成相关逻辑)* 开发者如无特殊要求直接初始化默认设置即可* 另聊天面板组件提供的可扩展的事件和UI处理,具体可参考API文档*/chatPanel.initDefault();//生成聊天基本信息,如聊天对象的昵称,头像,最后一页聊天信息等BaseChatInfo info = getChatInfo();//设置基本信息,以便用户进入该页面时能即时展示相关信息chatPanel.setBaseChatInfo(info);界面实图7、群管理Android代码//从布局文件中获群管理面板组件GroupManagerPanel groupManagerPanel = mBaseView.findViewById(R.id.group_manager_panel);/** 群管理组件的默认设置已经实现了群管理相关的逻辑也操作(与IMSDK关联完成相关逻辑)* 开发者如无特殊要求直接初始化默认设置即可* 另聊群管理组件提供的可扩展的事件和UI处理,具体可参考API文档*/groupManagerPanel.initDefault();界面实图 通过以上几个步骤,一个拥有单聊、群聊的即时通讯App就这样完成了再次崇拜自己的动手能力,一天就能搭建完成一个APP,啦啦啦啦啦啦最后,了解一下经过优化后的新版本IM SDKIM SDK–体积优化1.android so体积<1M2.ios体积增量<2M–性能优化1.线程裁剪(单线程架构,减少线程切换和线程同步开支)2.cpu占用优化(线程裁剪、代码逻辑优化)–消息到达率深度优化业务逻辑层、会话策略层和网络层,实现四个九(99.99%)的消息到达率–数据监控用户级数据监控,实时跟踪和统计用户行为dau/mau功能统计用户分布–海外布点增加富媒体消息海外布点,为图片视频语音文件的上传下载提速–版本兼容与老版本兼容,实现无缝切换–UIKit插件一套多功能自定义界面库,实现会话列表、聊天、联系人、群管理、弹幕等界面,实现客户一天接入问答请问小程序即时通讯如何接入发送消息?相关阅读IM即时通讯实现原理iOS 即时通讯 + 仿微信聊天框架 + 源码开发一款即时通讯App,从这几步开始 【每日课程推荐】机器学习实战!快速入门在线广告业务及CTR相应知识 ...

October 29, 2018 · 1 min · jiezi

测试工程师的福利!各远程移动测试平台对比分析

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~本文由腾讯移动品质中心TMQ发表于云+社区专栏背景随着移动设备和系统的碎片化程度越来越高以及复杂的移动网络情况, 兼容性测试以及远程真机测试的重要性越来越突出。根据远程测试机/人员与开发者间的合作方式,可以分为以下几种服务:云测试服务、内测服务以及众测服务,相应的平台支持如下图。云测试平台云测试平台提供了远程租用真机的服务,通常是利用自动化框架来实现真机上的脚本自动化运行,或远程租用真机人工测试,或真人真机测试。由于Android端设备的种类众多,云测试服务在Android端应用广泛。国内外都提供了多种云测试平台。1、Pefectohttp://PerfectoMobile.comPefecto将真实移动设备放到cloud端 , 并提供通过web/Eclipse插件的形式进行访问与测试。同时,Pefecto开放了基于selenium的第三方API:MobileDriver,支持自动化测试人员通过Eclipse访问Perfecto上的真机设备,通过MobileDriver远程识别与调用被测应用,快速实现自动化,并与 RQM结合实现对devops的支持。测试脚本可以跨平台(Android/iOS/Blackberry…)执行。2、LessPainful http://lesspainful.com/LessPainful提供了一个多设备平台自动化测试的服务。用户上传应用(.apk)和用Cucumber编写的测试文件,选择测试运行需要的设备配置,最后测试将自动执行并生成测试报告。它支持的设备包括Garmin Asus,几款HTC,LG,Samsung Galaxy,Sony Xperia和Motorola Motodefy。3、TestDroidhttp://testdroid.com/Testdroid是由Bitbar公司推出的手机应用测试的云端服务。TestDroid云端提供了200多种机型,你可以选择你需要的测试机型进行适配测试。 通过Testdriod的测试,还能收集CPU运转以及内存使用情况,从而帮助工程师们提高应用的表现性能,和以防内存被过多占用。此外,用户还可以选择测试机型的语言测试环境,避免由于跨语言导致的潜在漏洞。Testdriod还有一项app爬虫功能,类似于网页爬虫,对你的应用高频次地查看并同时进行图像输出,来模拟真实的浏览过程。TestDroid应用了Robotium /MonkeyRunner生成系列工具,但需要有被测应用的源代码。4、Testinhttp://www.testin.cn/Testin云测试平台是一个基于真实终端设备环境,基于自动化测试技术的7x24云端服务。Testin在云端部署了300多款1000多部测试终端,并开放这些智能终端给全球移动开发者进行测试,开发者只需在Testin平台提交自己的App应用,选择需要测试的网络、机型,便可进行在线的自动化测试,无须人工干预,自动输出含错误、报警等测试日志、UI截图、内存/CPU/启动时间等在内的标准测试报告。支持Android与iOS,业务较为全面。5、百度MTChttp://mtc.baidu.com/MTC是百度云面向移动和web开发者提供的服务,能够满足一般的测试需求,包括当前的热门机型,还支持云端客户端回放。它还提供一个云众测服务,就是开放者上传App,百度提供给用户下载测试,然后将反馈收集返回给开发者。6、腾讯优测http://utest.qq.com/腾讯优测试专业化的移动云测试平台,为广大开发者提供移动应用一站式测试服务与解决方案。提供缺陷分析、应用测试、云手机等主要功能,用户通过平台上传安装包,就可进行全面的兼容性和性能测试,还并可以在线使用多台云端真机,满足更多开发和测试需要。腾讯优测真机实验室目前已配备上千款手机,覆盖市面98%主流机型,724小时在线运行,覆盖亿级用户。构建的数万个适配问题特征库,可以快速准确定位问题。7、阿里MQChttps://mqc.aliyun.com/MQC是阿里移动质量中心推出的真机测试服务的云平台,拥有大量热门机型,提供7x24全天候服务。MQC可以涵盖Android、iOS、YunOS、H5等不同的平台体系,主要服务阿里系和阿里内部如手淘、天猫、聚划算、支付宝等App。8、易测云http://www.yiceyun.com/易测云由国内知名软件公司东软出品,是一个专业为移动APP产品提供适配测试、性能测试、遍历测试、功能测试等多种服务的真机自动化云测试平台,主要为所有移动APP产品的开发者和测试者、以及需要定制化服务的企业级用户,提供安全、专业、高效、易用的自动化云测试服务;强大的录制脚本插件;详细实用的测试报告;以及简单人性化的操作体验。关于云测试平台对比分析的文章已经很多,这里不作赘述。众测平台众测的目的是利用大众的测试能力和测试资源,在短时间内完成大工作量的产品体验,第一时间将体验结果反馈至平台,再由平台管理人员将信息搜集,交给开发人员;同时是从最前端用户拿到的第一手信息,就能从用户角度出发,改善产品质量。1、uTesthttps://www.utest.comuTest是一家来自以色列的创业公司,该公司主要的业务是通过自己构建的一个全球测试员网络为开发人员和技术公司提供软件测试以帮助这些开发人员更好的找到并解决软件中的问题。拥有来自200多个地域国家超过15万专业测试人员。根据测试人员数量的不同,收费也各异,最低499美元,最高可达1999美元。uTest提供了uTest课堂提供了专业软件测试者授权课程的学习使用方法,还提供了工具平台供测试人员提交测试工具或对已有工具评分。总之,uTest给专业测试人员提供了一个社区的氛围。很多大公司都在使用uTest的服务,包括谷歌、微软、Groupon、AOL和BBC等。要想参与uTest测试任务,需要注册并提供详细的测试环境,比如测试机型、测试工作经验、软硬件环境等信息,便于uTest高效分配任务。2、腾讯teslyhttp://tesly.qq.com/腾讯众测是腾讯公司开发的一款基于众包概念的平台。支持应用、游戏、H5混合应用等。多种产品形态,具有Bug探索、产品调研、数据收集和产品评测四种业务模式。3、百度众测http://test.baidu.com.cn/crow…百度众测也是众包模式的典型应用,它将企业产品的相关测试工作交由网络社区大众来完成。百度众测是百度公司开发的众包在软件和产品测试上面的延伸。百度众测“隶属”百度质量部,是一个使广大的互联网用户能够第一时间体验到百度的新产品,从用户体验的角度出发,对百度的新产品提出改进建议,以及各种bug反馈,以便于百度公司及时地改善产品质量。目前,百度众测包括“外部用户测试平台”,“内部员工测试平台”和“开发者平台云众测”。注册用户达到1500万。4、testinhttp://zc.testin.cn/ http://www.mtestin.com/为开发者提供一种完全开箱即用、按需付费的SaaS服务,不仅提供了测试规划、功能测试、兼容性测试、可用性测试、Beta测试等测试服务,开发者还可以直接使用Testin众测平台的Bug管理、用例管理、项目管理、崩溃监控等在线工具,帮助中小开发者无需招聘专业的测试团队也可以轻松将应用质量管理好。5、乌云众测http://ce.wooyun.org/乌云众测是另一种众测类型,是在专业性很强的领域——安全领域深入的一种众测模式,它对众测人员的专业性要求很高,俗称“白帽子”。在乌云众测,企业可在短时间内组建虚拟的安全团队,通过邀请顶尖白帽子模拟黑客对网站、系统或产品进行测试,企业可迅速排查各种安全隐患。同类型的众测公司还有漏洞盒子、Sobug白帽众测,他们是目前国内最大的三家安全众测平台。众测平台总结:众测平台可以分为三种类型, 一种是大众任务型, 主要利用数量来收集数据或模拟特殊情境,如不同网络环境等, 百度众测和腾讯bugly都属于这一类; 第二类是以具有专业知识的测试人员来定向完成任务的模式, 这类的代表是国外的uTest和国内的Testin;第三类是应用于对测试人员专业度要求更高的某类业务——目前主要是安全业务——的模式, 著名的乌云众测、漏洞盒子、Sobug白帽众测就是利用白帽子的“攻”的水平来实现“防”的目的的。内测平台内测平台允许开发者选择合适的测试人员,并允许其与测试人员进行沟通。IOS应用分发多采用这种方式,以苹果收购的TestFlight为代表。这种模式操作起来稍微繁琐,如果是iOS应用的话需要制作特殊的内测版本,获取内测设备的UDID并制作证书,并且有100人的人数限制。1、TestFlighthttps://developer.apple.com/t…TestFlight提供了iOS App测试分发服务,它主要解决的是iOS应用测试分发困难问题,可向指定的人分发应用,双方需要注册TestFlight账号,以及下载TestFlight App,即可在App里测试应用。TestFlight已被苹果收购,因此其UDID证书限制人数可达到1000人。2、HockeyApphttps://www.hockeyapp.netHockeyApp是以TestFlight的替代者的身份出现的,其集成了TestFlight的所有优点,同时增加了自己的一些亮点功能,比如支持更多的平台,服务稳定性也比TestFlight高,并且能够通过SDK方式帮助开发者获取必要的测试信息。HockeyApp被微软收购,是收费应用。 3、Fir.imhttp://fir.im/Fir.im全名Fly It Remotely ,是一个为移动开发者服务,针对应用开发内测阶段,提供应用托管分发,崩溃分析以及反馈收集等一系列帮助开发者提高开发测试效率服务的平台。它提供了开放API,开发者可以将fir.im集成到开发流程中。此外,fir.im还提供了指令工具CLI, 日志查看工具LogGuru、崩溃分析工具BugHD和网速测试等工具。Android端还提供了AndroidStudio插件,方便Android开发者上传应用。4、蒲公英https://www.pgyer.com/蒲公英也提供了面向IOS和Android平台的内测托管和任务分发服务,同样提供开放API。 它提供了移动端SDK用于应用内测数据收集分析、版本更形提示、数据分析统计等多种功能。除此之外,它还提供了专家测试的选项,提供人工遍历测试,IOS审核加速等服务。并且,蒲公英提供了测试管理的平台,使得开发者在单平台上做到收集内测用户问题并得到问题分析。5、Bugly http://bugly.qq.com/Bugly 是腾讯对外开放使用的移动应用崩溃检测服务,同时支持iOS和Android平台。移动开发者在自己的App中接入Bugly的SDK后,就能在应用崩溃后获得信息上报。目前还推出了内测分发服务,但还没有提供收集用户测试结果的方法。内测平台总结:国内的内测平台都还属于起步阶段,更多应用场景在于帮助IOS应用快速发布。远程移动测试平台正在向综合云测、众测、内测甚至远程数据收集工具的方向发展,比如国内领先的Testin平台,在云测、众测攻占城池之后,也推出了内测平台https://pre.im/。蒲公英平台则在内测的基础之上,将bug管理融入平台。读者互动环节你工作中还有用到其他测试平台吗,期待你能给大家分享一下。问答如何并发JUnit测试?相关阅读Android单元测试kafka安装与测试性能测试知识总结 【每日课程推荐】机器学习实战!快速入门在线广告业务及CTR相应知识

October 9, 2018 · 1 min · jiezi