4
评论

在微信小程序里实现聊天室 聊天室 小程序

Tolazy 发表了文章 • 1905 次浏览 • 2019-04-19 17:49 • 来自相关话题

第一次搞小程序,老板让我实现一个聊天室功能,压力山大啊。
花了几天时间研究比较了一下方案,最后基于环信的小程序SDK 开发了一个聊天室。
 
准备工作
下载环信 小程序demo+sdkgit clone https://github.com/easemob/webim-weixin-xcx创建一个文件夹,将 demo 中的文件 comps、images、sdk、utils 拷贝到新的文件,文件目录说明



集成
登录环信没什么可说的,这里选择的是使用 username/password 登录,和demo中的一样,文件没有进行任何更改


在app.js 中注册的 WebIM.conn.listen, 然后在 登陆成功的回调 onOpened 设置的跳转页面,并将登陆的 username 赋给 myName,传到新的页面中使用


修改 roomlist.js 获取聊天室列表,是分页获取的,这里先偷个懒,获取了第一页 20 个聊天室


然后将listChatrooms() 分别在onLoad、onShow 内,更改下,将原有的 listGroups() 替换掉然后在roomlist.wxml 修改对应的 变量绑定名称





demo中的group.js 中,获取到的是当前登陆账号已加入的群组,咱们做的是聊天室功能,所以需要有一个加入的操作,找roomlist.js 中找到 into_room: function (event),然后填写加入聊天室的方法, 我是直接在当前这个里面加的跳转到聊天页面,并将当前登陆的IDmyName,聊天室IDgroupID,聊天室名称your 传给新页面


Ex:监听是否加入聊天室成功的回调是在 onPresence 中,type:memberJoinChatRoomSuccess,正常是监听这个回调跳转页面,有点麻烦就直接这样吧到会话页面后,需要修改一下对应的消息格式,在comps/chat/suit 目录下,将里面的文件对应的 js 文件根据文档给聊天室发送消息 格式进行修改,聊天室消息和群组消息不同,所以我目前是直接将getSendToParam()、isGroupChat() 注释,改成下面这样,demo 中下面还有代码的,这里就用 …… 代替了





就这样了,简单集成聊天室功能,demo中的UI 是开源的,可以根据自己的需求更改~下面是具体实现过程。代码也放在github 上了,有需要的兄弟自取。demo下载地址:https://github.com/lizgDonkey/room-xcx 查看全部
第一次搞小程序,老板让我实现一个聊天室功能,压力山大啊。
花了几天时间研究比较了一下方案,最后基于环信的小程序SDK 开发了一个聊天室。
 
准备工作
  1. 下载环信 小程序demo+sdk
    git clone https://github.com/easemob/webim-weixin-xcx
  2. 创建一个文件夹,将 demo 中的文件 comps、images、sdk、utils 拷贝到新的文件,文件目录说明
    ml.png

集成
  1. 登录环信没什么可说的,这里选择的是使用 username/password 登录,和demo中的一样,文件没有进行任何更改
    login.png
  2. 在app.js 中注册的 WebIM.conn.listen, 然后在 登陆成功的回调 onOpened 设置的跳转页面,并将登陆的 username 赋给 myName,传到新的页面中使用
    tz.png
  3. 修改 roomlist.js 获取聊天室列表,是分页获取的,这里先偷个懒,获取了第一页 20 个聊天室
    getroom.png
    然后将listChatrooms() 分别在onLoad、onShow 内,更改下,将原有的 listGroups() 替换掉
  4. 然后在roomlist.wxml 修改对应的 变量绑定名称
    listui.png
    list.png
  5. demo中的group.js 中,获取到的是当前登陆账号已加入的群组,咱们做的是聊天室功能,所以需要有一个加入的操作,找roomlist.js 中找到 into_room: function (event),然后填写加入聊天室的方法, 我是直接在当前这个里面加的跳转到聊天页面,并将当前登陆的IDmyName,聊天室IDgroupID,聊天室名称your 传给新页面
    joinrom.png
    Ex:监听是否加入聊天室成功的回调是在 onPresence 中,type:memberJoinChatRoomSuccess,正常是监听这个回调跳转页面,有点麻烦就直接这样吧
  6. 到会话页面后,需要修改一下对应的消息格式,在comps/chat/suit 目录下,将里面的文件对应的 js 文件根据文档给聊天室发送消息 格式进行修改,聊天室消息和群组消息不同,所以我目前是直接将getSendToParam()、isGroupChat() 注释,改成下面这样,demo 中下面还有代码的,这里就用 …… 代替了
    send.png
    chat.png
    就这样了,简单集成聊天室功能,demo中的UI 是开源的,可以根据自己的需求更改~下面是具体实现过程。代码也放在github 上了,有需要的兄弟自取。demo下载地址:https://github.com/lizgDonkey/room-xcx

4
评论

【开源项目】全国首个开源直播小程序源码

beyond 发表了文章 • 30688 次浏览 • 2018-07-20 17:30 • 来自相关话题

今天你看直播了吗?拥有10亿微信生态用户的小程序已经成为了继移动互联后的又一个现象级风口,随着微信小程序对外开放实时音视频录制及播放等更多连接能力,小程序与直播强强联合,在各行各业找到了非常多的玩法,小程序直播相比微信直播和APP直播更加简洁、流畅、低延时、多入口等众多优势迅速向商业直播领域及泛娱乐直播领域蔓延。从小游戏、内容付费、工具、大数据、社交电商创业者到传统品牌商们,都在努力搭上小程序直播这辆快车,以免错过微信生态里新的流量洼地。
 





作为一名环信生态圈资深开发者,本着对技术的热衷,对环信的眷恋和对党的忠诚,基于环信即时通讯云写了“直播购物小程序”,目前项目源码已全部免费开放,希望对有需求的企业和开发者提供一个思路和参考。
直播购物小程序源码github地址:https://github.com/YuTongNetworkTechnology/wechat_live/tree/master 
git打不开可直接点下面链接下载


小程序直播demo_2018-06-21.zip







直播购物小程序运行预览图 
 
小程序体验指南(仅需两步):
 
1、下载微信小程序开发工具,下载地址:https://developers.weixin.qq.c ... .html 
 




2、导入源码:将附件的源码解压直接导入 







环信小程序直播技术文档
一、 使用的技术
1、 环信IM直播室。
2、 微信小程序实时音视频播放组件live-player。
3、 推流软件(obs、易推流)等推流。
4、 视频流服务器(UCLOUD、七牛、腾讯)等视频流服务器。
二、 系统使用流程。
1、 视频推流软件将视频流推到流服务器。
2、 打开视频直播demo小程序注册环信账号。
3、 进入软件直播室进行测试。
三、 技术流程及使用的SDk
1、 注册环信账号
打开https://www.easemob.com/ 环信官网,点击右上角注册按钮,选择[注册即时通讯云]




填写对相关信息进行注册





注册成功后进行登录




注:新注册用户需进行账号的认证。
2、 直播应用创建
登录成功点击应用列表选择创建应用




输入应用名称等信息
 





创建成功后点击应用进入





需要注意的是应用的OrgName 和AppName这两个是以后都需要用到的两个参数变量




3、 直播创建
1)在创建直播之前需要对应用进行设置首先需要设置应用的直播流地址
第一步获取应用管理员的Tokencurl -X POST "https://a1.easemob.com/[应用OrgName]/[应用AppName]/token" -d '{"grant_type":"client_credentials","client_id":"[应用client_id]","client_secret":"[应用] client_secret"}'返回格式{
"access_token":"YWMtWY779DgJEeS2h9OR7fw4QgAAAUmO4Qukwd9cfJSpkWHiOa7MCSk0MrkVIco",
"expires_in":5184000,
"application":"c03b3e30-046a-11e4-8ed1-5701cdaaa0e4"












第二步设置直播流地址curl -X POST -H "Authorization: Bearer [管理员Token]" " https://a1.easemob.com/[应用OrgName]/[应用AppName]/liverooms/stream_url -d '{"pc_pull":"[pc拉流地址]","pc_push":"[pc推流地址]","mobile_pull":"[手机拉流地址]","mobile_push":"[手机推流地址]"}'"成功返回格式:{
"action": "post",
"application": "e1a09de0-0e03-11e7-ad8e-a1d913615409",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"pc_pull": true,
"mobile_push": true,
"mobile_pull": true,
"pc_push": true
},
"timestamp": 1494084474885,
"duration": 1,
"organization": "easemob-demo",
"applicationName": "chatdemoui"
}












2)创建主播
点击IM用户





点击注册IM用户





填写用户信息





创建用户的过程同样也可以通过REST API形式进行curl -X POST -i " https://a1.easemob.com/[应用OrgName]/[应用AppName]/users" -d '{"username":"[用户名]","password":"[密码]"}'
注:应用必须为开放注册





将注册的用户添加为主播curl -X POST -H "Authorization: [管理员Token]" https://a1.easemob.com/[应用OrgName]/[应用AppName]/super_admin -d'{"superadmin":"[IM用户名]"}'返回结果示例:{
"action": "post",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"result": "success"
},
"timestamp": 1496236798886,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui"
}












3)创建直播
点击直播





点击新建房间





填写房间信息




创建房间同时也可以使用REST API形式进行详情可以查看http://docs.easemob.com/im/live/server-integration环信官方文档。
4、 小程序demo集成使用
小程序直播购物demo集成官方WebIM SDK详情请查看https://github.com/easemob/webim-weixin-xcx
Demo具体配置如下
打开demo 下sdk配置文件





修改appkey为自己应用的appkey





打开pages/live/index.js修改房间默认拉流地址及直播间房间号





四、 扩展说明
Demo中房间为固定测试房间,实际使用中应获取环信直播的房间信息及房间列表。具体如下:
获取直播间列表:curl -X GET -H "Authorization: Bearer [用户Token]" https://a1.easemob.com/[应用OrgName]/[应用AppName]/liverooms?ongoing=true&limit=[获取数量]&cursor=[游标地址(不填写为充开始查询)]
响应:{
"action": "get",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"params": {
"cursor": [
"ZGNiMjRmNGY1YjczYjlhYTNkYjk1MDY2YmEyNzFmODQ6aW06Y2hhdHJvb206ZWFzZW1vYi1kZW1vI2NoYXRkZW1vdWk6MzE"
],
"ongoing": [
"true"
],
"limit": [
"2"
]
},
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": [
{
"id": "1924",
"chatroom_id": "17177265635330",
"title": "具体了",
"desc": "就咯",
"startTime": 1495779917352,
"endTime": 1495779917352,
"anchor": "wuls",
"gift_count": 0,
"praise_count": 0,
"current_user_count": 8,
"max_user_count": 9,
"status": "ongoing",
"cover_picture_url": "",
"pc_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"pc_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"mobile_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"mobile_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1"
},
{
"id": "1922",
"chatroom_id": "17175003856897",
"title": "香山",
"desc": "随便",
"startTime": 1495777760957,
"endTime": 1495777760957,
"anchor": "sx001",
"gift_count": 0,
"praise_count": 8,
"current_user_count": 1,
"max_user_count": 3,
"status": "ongoing",
"cover_picture_url": "http://127.0.0.1:8080/easemob- ... ot%3B,
"pc_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"pc_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"mobile_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"mobile_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1"
}
],
"timestamp": 1496303336669,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui",
"cursor": "ZGNiMjRmNGY1YjczYjlhYTNkYjk1MDY2YmEyNzFmODQ6aW06Y2hhdHJvb206ZWFzZW1vYi1kZW1vI2NoYXRkZW1vdWk6NDk",
"count": 2
}












获取直播间详情:curl -X GET -H "Authorization: Bearer [用户Token]" " https://a1.easemob.com/[应用OrgName]/[应用AppName]/[房间id]/status"响应:{
"action": "get",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"liveRoomID": "1946",
"status": "ongoing"
},
"timestamp": 1496234759930,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui",
"count": 0
}














 
使用环信直播购物小程序遇到任何问题欢迎跟帖讨论。 查看全部
今天你看直播了吗?
拥有10亿微信生态用户的小程序已经成为了继移动互联后的又一个现象级风口,随着微信小程序对外开放实时音视频录制及播放等更多连接能力,小程序与直播强强联合,在各行各业找到了非常多的玩法,小程序直播相比微信直播和APP直播更加简洁、流畅、低延时、多入口等众多优势迅速向商业直播领域及泛娱乐直播领域蔓延。从小游戏、内容付费、工具、大数据、社交电商创业者到传统品牌商们,都在努力搭上小程序直播这辆快车,以免错过微信生态里新的流量洼地。
 
微信图片_20180725162426.jpg


作为一名环信生态圈资深开发者,本着对技术的热衷,对环信的眷恋和对党的忠诚,基于环信即时通讯云写了“直播购物小程序”,目前项目源码已全部免费开放,希望对有需求的企业和开发者提供一个思路和参考。
直播购物小程序源码github地址:https://github.com/YuTongNetworkTechnology/wechat_live/tree/master 
git打不开可直接点下面链接下载



预览图.jpg

直播购物小程序运行预览图 
 
小程序体验指南(仅需两步):
 
1、下载微信小程序开发工具,下载地址:https://developers.weixin.qq.c ... .html 
 
Catch9A07(07-20-17-38-30).jpg

2、导入源码:将附件的源码解压直接导入 


Catch1C69(07-20-17-38-30).jpg


环信小程序直播技术文档
一、 使用的技术
1、 环信IM直播室。
2、 微信小程序实时音视频播放组件live-player。
3、 推流软件(obs、易推流)等推流。
4、 视频流服务器(UCLOUD、七牛、腾讯)等视频流服务器。
二、 系统使用流程。
1、 视频推流软件将视频流推到流服务器。
2、 打开视频直播demo小程序注册环信账号。
3、 进入软件直播室进行测试。
三、 技术流程及使用的SDk
1、 注册环信账号
打开https://www.easemob.com/ 环信官网,点击右上角注册按钮,选择[注册即时通讯云]
1.png

填写对相关信息进行注册

2.png

注册成功后进行登录
3.png

注:新注册用户需进行账号的认证。
2、 直播应用创建
登录成功点击应用列表选择创建应用
4.png

输入应用名称等信息
 

5.png

创建成功后点击应用进入

6.png

需要注意的是应用的OrgName 和AppName这两个是以后都需要用到的两个参数变量
7.png

3、 直播创建
1)在创建直播之前需要对应用进行设置首先需要设置应用的直播流地址
第一步获取应用管理员的Token
curl -X POST "https://a1.easemob.com/[应用OrgName]/[应用AppName]/token" -d '{"grant_type":"client_credentials","client_id":"[应用client_id]","client_secret":"[应用] client_secret"}'
返回格式
{
"access_token":"YWMtWY779DgJEeS2h9OR7fw4QgAAAUmO4Qukwd9cfJSpkWHiOa7MCSk0MrkVIco",
"expires_in":5184000,
"application":"c03b3e30-046a-11e4-8ed1-5701cdaaa0e4"












第二步设置直播流地址
curl -X POST -H "Authorization: Bearer [管理员Token]"  " https://a1.easemob.com/[应用OrgName]/[应用AppName]/liverooms/stream_url -d '{"pc_pull":"[pc拉流地址]","pc_push":"[pc推流地址]","mobile_pull":"[手机拉流地址]","mobile_push":"[手机推流地址]"}'"
成功返回格式:
{
"action": "post",
"application": "e1a09de0-0e03-11e7-ad8e-a1d913615409",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"pc_pull": true,
"mobile_push": true,
"mobile_pull": true,
"pc_push": true
},
"timestamp": 1494084474885,
"duration": 1,
"organization": "easemob-demo",
"applicationName": "chatdemoui"
}












2)创建主播
点击IM用户

8.png

点击注册IM用户

9.png

填写用户信息

10.png

创建用户的过程同样也可以通过REST API形式进行
curl -X POST -i " https://a1.easemob.com/[应用OrgName]/[应用AppName]/users" -d '{"username":"[用户名]","password":"[密码]"}'

注:应用必须为开放注册

11.png

将注册的用户添加为主播
curl -X POST -H "Authorization: [管理员Token]"  https://a1.easemob.com/[应用OrgName]/[应用AppName]/super_admin -d'{"superadmin":"[IM用户名]"}'
返回结果示例:
{
"action": "post",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"result": "success"
},
"timestamp": 1496236798886,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui"
}












3)创建直播
点击直播

12.png

点击新建房间

13.png

填写房间信息
14.png

创建房间同时也可以使用REST API形式进行详情可以查看http://docs.easemob.com/im/live/server-integration环信官方文档。
4、 小程序demo集成使用
小程序直播购物demo集成官方WebIM SDK详情请查看https://github.com/easemob/webim-weixin-xcx
Demo具体配置如下
打开demo 下sdk配置文件

15.png

修改appkey为自己应用的appkey

16.png

打开pages/live/index.js修改房间默认拉流地址及直播间房间号

17.png

四、 扩展说明
Demo中房间为固定测试房间,实际使用中应获取环信直播的房间信息及房间列表。具体如下:
获取直播间列表:
curl -X GET -H "Authorization: Bearer  [用户Token]"  https://a1.easemob.com/[应用OrgName]/[应用AppName]/liverooms?ongoing=true&limit=[获取数量]&cursor=[游标地址(不填写为充开始查询)]

响应:
{
"action": "get",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"params": {
"cursor": [
"ZGNiMjRmNGY1YjczYjlhYTNkYjk1MDY2YmEyNzFmODQ6aW06Y2hhdHJvb206ZWFzZW1vYi1kZW1vI2NoYXRkZW1vdWk6MzE"
],
"ongoing": [
"true"
],
"limit": [
"2"
]
},
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": [
{
"id": "1924",
"chatroom_id": "17177265635330",
"title": "具体了",
"desc": "就咯",
"startTime": 1495779917352,
"endTime": 1495779917352,
"anchor": "wuls",
"gift_count": 0,
"praise_count": 0,
"current_user_count": 8,
"max_user_count": 9,
"status": "ongoing",
"cover_picture_url": "",
"pc_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"pc_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"mobile_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1",
"mobile_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1924_1"
},
{
"id": "1922",
"chatroom_id": "17175003856897",
"title": "香山",
"desc": "随便",
"startTime": 1495777760957,
"endTime": 1495777760957,
"anchor": "sx001",
"gift_count": 0,
"praise_count": 8,
"current_user_count": 1,
"max_user_count": 3,
"status": "ongoing",
"cover_picture_url": "http://127.0.0.1:8080/easemob- ... ot%3B,
"pc_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"pc_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"mobile_pull_url": "rtmp://vlive3.rtmp.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1",
"mobile_push_url": "rtmp://publish3.cdn.ucloud.com.cn/ucloud/easemob-demo_chatdemoui_1922_1"
}
],
"timestamp": 1496303336669,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui",
"cursor": "ZGNiMjRmNGY1YjczYjlhYTNkYjk1MDY2YmEyNzFmODQ6aW06Y2hhdHJvb206ZWFzZW1vYi1kZW1vI2NoYXRkZW1vdWk6NDk",
"count": 2
}












获取直播间详情:
curl -X GET -H "Authorization: Bearer [用户Token]" " https://a1.easemob.com/[应用OrgName]/[应用AppName]/[房间id]/status"
响应:
{
"action": "get",
"application": "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",
"uri": "http://127.0.0.1:8080/easemob- ... ot%3B,
"entities": [ ],
"data": {
"liveRoomID": "1946",
"status": "ongoing"
},
"timestamp": 1496234759930,
"duration": 0,
"organization": "easemob-demo",
"applicationName": "chatdemoui",
"count": 0
}














 
使用环信直播购物小程序遇到任何问题欢迎跟帖讨论。
19
评论

【新手快速入门】集成环信常见问题+解决方案汇总

dujiepeng 发表了文章 • 22532 次浏览 • 2017-05-22 15:51 • 来自相关话题

   这里整理了集成环信的常见问题和一些功能的实现思路,希望能帮助到大家。感谢热心的开发者贡献,大家在观看过程中有不明白的地方欢迎直接跟帖咨询。
 
ios篇
APNs证书创建和上传到环信后台头像昵称的简述和处理方案音视频离线推送Demo实现环信服务器聊天记录保存多久?离线收不到好友请求IOS中环信聊天窗口如何实现文件发送和预览的功能ios集成常见问题环信推送的一些常见问题实现名片|红包|话题聊天室等自定义cell
 
Android篇
Android sdk 的两种导入方式环信3.0SDK集成小米推送教程EaseUI库中V4、v7包冲突解决方案Android EaseUI里的百度地图替换为高德地图android扩展消息(名片集成)关于会话列表的置顶聊天java.lang.UnsatisfiedLinkError: 的问题android 端 app 后台被杀死收不到消息的解决方案
昵称头像篇
android中如何显示开发者服务器上的昵称和头像 Android中显示头像(接上一篇文章看)环信(Android)设置头像和昵称的方法(最简单暴力的基于环信demo的集成)IOS中如何显示开发者服务器上的昵称和头像【环信公开课第12期视频回放】-所有关于环信IM昵称头像的问题听这课就够了
 
直播篇
一言不合你就搞个直播APP
 
客服集成
IM-SDK和客服SDK并存开发指南—Android篇IM-SDK和客服SDK并存开发指南—iOS篇
 
开源项目
Android简版demoios简版demo凡信2.0:超仿微信的开源项目 凡信3.0:携直播和红包而来高仿微信:Github 3,515 Star方圆十里:环信编程大赛冠军项目泛聊:定一个小目标写一个QQSlack聊天机器人:一天时间做一个聊天机器人TV视频通话:在电视上视频通话视频通话:Android手机视频通话酷信:ios高仿微信公众号助手:与订阅用户聊天沟通
 
持续更新ing...小伙伴们还有什么想知道欢迎跟帖提出。
  查看全部
   这里整理了集成环信的常见问题和一些功能的实现思路,希望能帮助到大家。感谢热心的开发者贡献,大家在观看过程中有不明白的地方欢迎直接跟帖咨询。
 
ios篇

 
Android篇

昵称头像篇

 
直播篇
  1. 一言不合你就搞个直播APP

 
客服集成
  1. IM-SDK和客服SDK并存开发指南—Android篇
  2. IM-SDK和客服SDK并存开发指南—iOS篇

 
开源项目

 
持续更新ing...小伙伴们还有什么想知道欢迎跟帖提出。
 
13
回复

收集基于环信SDK开发的开源项目 开源项目

xiaoyan2015 回复了问题 • 13 人关注 • 16138 次浏览 • 2019-03-14 13:52 • 来自相关话题

0
评论

抖音app开发者们可能要向小红书学习了:约束MCN 抖音app开发

QQ1449701271 发表了文章 • 21 次浏览 • 2019-06-26 09:41 • 来自相关话题

小红书要对“MCN”下手了,这次是真的。

据可靠消息称,6月19日晚,小红书官方在机构群里发布了一份文件,要求MCN机构签字,在这份文件中,严格规定了MCN机构入驻小红书的标准、入驻保证金制度、MCN必须肩负的权利与义务、为背后的惩罚措施等,事实上,在我看来,快手、抖音app开发者和运营者们也该着手准备这些事了。

我们知道,短视频平台的变现来源之一便是以流量换取的广告费用,像小红书这样专注“种草”的平台更是如此,而“私下接单”对于平台而言,是必须严令禁止的、影响平台收入的“做私活”的表现,而像数据作假、发布虚假信息等做法更是
抖音app开发在小红书发布的该项文件中,像私下接单,未通过小红书品牌合作人平台”“与博主合作关系作假”和“数据作假作弊”等行为,将会被扣除保证金,并终止合作一年。这对于一些MCN机构而言,是一项沉重的打击。

但尽管如此,我依然建议快手app、抖音app开发组和运营人员像小红书学习,尽管这样的文件会使一些MCN机构不满,但就像任何一个行业的发展过程一样,短视频行业的发展也必然是会越来越规范化的。
抖音app开发抖音还好,尽管发展时间较短,但有头条系其他产品作为“前车”,它的规范化发展速度是其他短视频平台无法想象的,这固然离不开抖音app开发人员对于抖音app的精雕细啄,同时也离不开运营者们的不断努力。但是其他短视频软件呢,就拿“快手”来说,低俗的视频一直是难以根治的弊病,如果官方为平台中引入一些服从“规章制度”的MCN机构,一点点提升平台视频的内容质量,这对于快手平台的发展必然会有好的促进作用。

小红书的这一举动也许是出于遏制平台上越来越泛滥的“非官方推广”而制定的,也许还有其他一些原因,但无论如何,这一做法,可能会伤害一些MCN机构,但更可能通过本次活动,使小红书的平台风气得以肃清。
抖音app开发以MCN机构撑起平台流量的小红书,突然对MCN下手,一个做不好,伤及自身,但若是做好了,将会成为快手、抖音app开发者们可借鉴的榜样。

更多与行业相关的资讯和分析会在以后逐渐放出,敬请期待,需要的朋友请关注我。 查看全部
小红书要对“MCN”下手了,这次是真的。

据可靠消息称,6月19日晚,小红书官方在机构群里发布了一份文件,要求MCN机构签字,在这份文件中,严格规定了MCN机构入驻小红书的标准、入驻保证金制度、MCN必须肩负的权利与义务、为背后的惩罚措施等,事实上,在我看来,快手、抖音app开发者和运营者们也该着手准备这些事了。

我们知道,短视频平台的变现来源之一便是以流量换取的广告费用,像小红书这样专注“种草”的平台更是如此,而“私下接单”对于平台而言,是必须严令禁止的、影响平台收入的“做私活”的表现,而像数据作假、发布虚假信息等做法更是
抖音app开发在小红书发布的该项文件中,像私下接单,未通过小红书品牌合作人平台”“与博主合作关系作假”和“数据作假作弊”等行为,将会被扣除保证金,并终止合作一年。这对于一些MCN机构而言,是一项沉重的打击。

但尽管如此,我依然建议快手app、抖音app开发组和运营人员像小红书学习,尽管这样的文件会使一些MCN机构不满,但就像任何一个行业的发展过程一样,短视频行业的发展也必然是会越来越规范化的。
抖音app开发抖音还好,尽管发展时间较短,但有头条系其他产品作为“前车”,它的规范化发展速度是其他短视频平台无法想象的,这固然离不开抖音app开发人员对于抖音app的精雕细啄,同时也离不开运营者们的不断努力。但是其他短视频软件呢,就拿“快手”来说,低俗的视频一直是难以根治的弊病,如果官方为平台中引入一些服从“规章制度”的MCN机构,一点点提升平台视频的内容质量,这对于快手平台的发展必然会有好的促进作用。

小红书的这一举动也许是出于遏制平台上越来越泛滥的“非官方推广”而制定的,也许还有其他一些原因,但无论如何,这一做法,可能会伤害一些MCN机构,但更可能通过本次活动,使小红书的平台风气得以肃清。
抖音app开发以MCN机构撑起平台流量的小红书,突然对MCN下手,一个做不好,伤及自身,但若是做好了,将会成为快手、抖音app开发者们可借鉴的榜样。

更多与行业相关的资讯和分析会在以后逐渐放出,敬请期待,需要的朋友请关注我。
0
回复

请问哪位大佬有webim语音通话的demo,官方的那个demo看的一脸懵 webim语音通话

回复

明明明 发起了问题 • 1 人关注 • 46 次浏览 • 2019-06-25 21:58 • 来自相关话题

0
评论

【突破运营瓶颈:解构小程序增长模型】 小程序开发

beyond 发表了文章 • 29 次浏览 • 2019-06-25 11:26 • 来自相关话题

即速应用小程序线下沙龙---成都、重庆站
----------------------------
【活动主题】
1、现状解析:BATT背后的小程序战略
2、运营思维:高留存高转化的隐藏逻辑
3、案例分享:引爆流量的推广套路与技巧
4、活动复盘:如何打造一场2天涨粉六万的活动
----------------------------
【免费报名链接】
6月29日成都站:
http://sina.lt/gqpE
6月30日重庆站:
http://sina.lt/gqpJ
----------------------------
活动咨询:18145862129(微信同号)





  查看全部
即速应用小程序线下沙龙---成都、重庆站
----------------------------
【活动主题】
1、现状解析:BATT背后的小程序战略
2、运营思维:高留存高转化的隐藏逻辑
3、案例分享:引爆流量的推广套路与技巧
4、活动复盘:如何打造一场2天涨粉六万的活动
----------------------------
【免费报名链接】
6月29日成都站:
http://sina.lt/gqpE
6月30日重庆站:
http://sina.lt/gqpJ
----------------------------
活动咨询:18145862129(微信同号)

微信图片_20190625111604.jpg

 
0
回复

环信小程序音频播放 音频播放

回复

用户3794213955 发起了问题 • 1 人关注 • 50 次浏览 • 2019-06-25 10:33 • 来自相关话题

0
评论

怎么获得直播源码搭建直播平台,怎么选择直播软件开发公司? 直播软件开发 直播源码 软件开发 直播软件开发公司 直播软件

QQ1449701271 发表了文章 • 46 次浏览 • 2019-06-24 09:09 • 来自相关话题

直播不该被限制在小小的直播间里,直播也不只是主播们的舞台,它的作用,是让足不出户的人们看到更大的世界,它,是所有人的舞台。昔日“小咖秀”中心化太严重导致普通用户不被重视,最终凉了,现在任何有社交性质的app都不该忘记这段教训。直播只是一种信息传播手段,想要吸引更多的用户,不但需要主播们不断生产优质内容,还要开发者们忠实普通用户的体验感,为直播源码赋予更多的趣味功能,为普通用户提高体验感。
一、市场行情
直播行业到达平稳期,且用户粘性较大,70%的客户在半年内都使用了同一款直播平台,因此在进行直播源码开发时要注重创新,才更能赢得用户的喜爱。

二、技术方面
人数众多的直播乃至几百人的直播是要非常困难的。想要做一个正规大规模的直播平台,需要就被足够的音视频开发能力,技术人员一定要充足,在直播源码开发的开发过程中,直播画面可能会出现不清晰、卡顿、蓝屏等情况,需要经过大量的适配工作才行。

三、如何开发直播源码

(一)选择合适的直播系统
1、 请记住,一定买开源源码书写的原生系统
2、 从比较老牌的直播软件开发公司中进行选择,三年以上的一般系统就比较成熟了,记得去实地考察一下,看看那他们有多少技术人员,然后再签合同,一般科研人员有五十个左右就很好了。
3、 确认他们的售后服务是否满一年。
4、 是否支持二次开发
直播系统源码并不自带所有的直播功能,都是需要加入三方SDK的,因此,是否支持二次开发也就代表着是否支持系统的更新换代。
(二)选择服务器
目前来说直播平台选择最多的是云服务器,因为就运维成本和运算速度的性价比来说,云服务器是非常好的,新建的公司和资金不那么雄厚的公司选择云服务器是很合适的。
当然,如果不差钱且经验丰富,自建机房也是可以的。
直播源码搭建到服务器上,就可以开始运营了,那么如何寻找一家靠谱的直播软件开发公司呢?联系:qq144 970 1271 查看全部
直播不该被限制在小小的直播间里,直播也不只是主播们的舞台,它的作用,是让足不出户的人们看到更大的世界,它,是所有人的舞台。昔日“小咖秀”中心化太严重导致普通用户不被重视,最终凉了,现在任何有社交性质的app都不该忘记这段教训。直播只是一种信息传播手段,想要吸引更多的用户,不但需要主播们不断生产优质内容,还要开发者们忠实普通用户的体验感,为直播源码赋予更多的趣味功能,为普通用户提高体验感。
一、市场行情
直播行业到达平稳期,且用户粘性较大,70%的客户在半年内都使用了同一款直播平台,因此在进行直播源码开发时要注重创新,才更能赢得用户的喜爱。

二、技术方面
人数众多的直播乃至几百人的直播是要非常困难的。想要做一个正规大规模的直播平台,需要就被足够的音视频开发能力,技术人员一定要充足,在直播源码开发的开发过程中,直播画面可能会出现不清晰、卡顿、蓝屏等情况,需要经过大量的适配工作才行。

三、如何开发直播源码

(一)选择合适的直播系统
1、 请记住,一定买开源源码书写的原生系统
2、 从比较老牌的直播软件开发公司中进行选择,三年以上的一般系统就比较成熟了,记得去实地考察一下,看看那他们有多少技术人员,然后再签合同,一般科研人员有五十个左右就很好了。
3、 确认他们的售后服务是否满一年。
4、 是否支持二次开发
直播系统源码并不自带所有的直播功能,都是需要加入三方SDK的,因此,是否支持二次开发也就代表着是否支持系统的更新换代。
(二)选择服务器
目前来说直播平台选择最多的是云服务器,因为就运维成本和运算速度的性价比来说,云服务器是非常好的,新建的公司和资金不那么雄厚的公司选择云服务器是很合适的。
当然,如果不差钱且经验丰富,自建机房也是可以的。
直播源码搭建到服务器上,就可以开始运营了,那么如何寻找一家靠谱的直播软件开发公司呢?联系:qq144 970 1271
0
评论

盘点网络视频直播开发平台中的变现功能 直播平台开发

q3557873521 发表了文章 • 141 次浏览 • 2019-06-13 14:35 • 来自相关话题

网络视频直播平台在国内已走过多个年头,从疯狂生长到趋于冷静,行业的成熟是人们对于网络视频直播变现能力的不断探索。纵观整个直播行业的发展历程,引流和变现是平台运营方最看重的。我们今天一起来了解下视频直播开发中的那些变现功能。
礼物打赏
礼物打赏几乎是直播平台最核心的变现方式。在直播行业的蛮荒期,礼物系统极为简单,早期的视频直播开发中,由于技术有限,甚至可以通过“抓包”的方式直接调用很多运营级直播平台的礼物内容。随着视频直播平台的不断升级优化,礼物系统也变得多元化,从最初的普通礼物和豪华礼物之分,到如今能够影响主播排名的热门礼物,VIP用户专属的守护礼物,以及当下备受关注的幸运礼物,无一例外都是为了进一步刺激用户充值,提升平台收益。






幸运礼物
既然提到了“幸运礼物”,我们就简单说一下幸运礼物到底是怎么回事。幸运礼物玩法就是在后台指定某一个礼物为幸运礼物,享有单独的中奖倍数,以及一个公共奖池,用户在进行打赏时会有一定的几率中奖,中奖之后会从奖池里得到一部分收益。这种中奖玩法,能够极大程度地增强用户黏性,让用户更好地参与到视频直播中来。
主播守护
这一变现功能由来已久了,简单来讲就是平台给予用户的一项增值服务内容。用户只需要充值开通守护功能即可,不同的视频直播平台所设定的守护时长不同,守护者所拥有的直播间特权也各不相同。
连麦PK
主播间的连麦礼物PK也是当下视频直播平台比较火爆的变现功能之一。这种PK机制能够极大刺激双方主播各自直播间的用户,同时也能让主播大胆地去挑战一些“不可能”,既丰富了视频直播内容,又能够为主播和平台提升收益,当然对于连麦PK直播间而言,平台的监管十分重要。
红包功能
直播间红包也是一项能够让观众端用户参与其中的功能。主播和用户都可以发送红包,参与抢红包玩法,而且观众端用户也是可以获取红包收益的。对于这些能够提升用户参与度的变现功能,恰恰是平台运营方最需要的。
代理推广
代理推广也是现在比较受运营方欢迎的功能之一,通过传统的分销裂变思维,吸纳平台代理商,为他们下发单独的管理平台,让代理商参与平台推广,从收益中获取一定的佣金,大大降低了平台推广引流的难度,短期内即可实现大量的用户流量聚集和变现。






小视频模块
如今,越来越多的直播平台都加入了独立的小视频模块。小视频功能中的很多广告功能,让流量较大的运营级视频直播平台,能够从广告商那里获取一定的广告收益。例如我们常见的应用开屏广告,贴片广告,以及小视频中的信息流广告等。
“直播+”收益
“直播+”直播行业未来的主要发展方向,如今教育直播、购物直播、游戏直播等越来越成熟。教育直播可以通过一对一付费直播间,付费课程视频下载回看等方式实现变现;购物直播则通过导入商品进行分销,或是直接入住平台开店等方式获取商品销售收益;游戏直播更多的是结合线下活动,赛事举办,广告赞助等获取收益,与功能层面上的联系相对较少。
正是由于视频直播开发平台中多种多样的变现功能,才使得这样一个趋于冷静的市场依旧有新入局者,而广阔的海外直播市场,更是一块“大蛋糕”。近年来,视频直播开发技术的稳步提升,也大大降低了直播平台开发的准入门槛,不断优化提升的各项技术功能,更是让整个直播行业等待下一个爆发点! 查看全部
网络视频直播平台在国内已走过多个年头,从疯狂生长到趋于冷静,行业的成熟是人们对于网络视频直播变现能力的不断探索。纵观整个直播行业的发展历程,引流和变现是平台运营方最看重的。我们今天一起来了解下视频直播开发中的那些变现功能。
礼物打赏
礼物打赏几乎是直播平台最核心的变现方式。在直播行业的蛮荒期,礼物系统极为简单,早期的视频直播开发中,由于技术有限,甚至可以通过“抓包”的方式直接调用很多运营级直播平台的礼物内容。随着视频直播平台的不断升级优化,礼物系统也变得多元化,从最初的普通礼物和豪华礼物之分,到如今能够影响主播排名的热门礼物,VIP用户专属的守护礼物,以及当下备受关注的幸运礼物,无一例外都是为了进一步刺激用户充值,提升平台收益。

直播3.png


幸运礼物
既然提到了“幸运礼物”,我们就简单说一下幸运礼物到底是怎么回事。幸运礼物玩法就是在后台指定某一个礼物为幸运礼物,享有单独的中奖倍数,以及一个公共奖池,用户在进行打赏时会有一定的几率中奖,中奖之后会从奖池里得到一部分收益。这种中奖玩法,能够极大程度地增强用户黏性,让用户更好地参与到视频直播中来。
主播守护
这一变现功能由来已久了,简单来讲就是平台给予用户的一项增值服务内容。用户只需要充值开通守护功能即可,不同的视频直播平台所设定的守护时长不同,守护者所拥有的直播间特权也各不相同。
连麦PK
主播间的连麦礼物PK也是当下视频直播平台比较火爆的变现功能之一。这种PK机制能够极大刺激双方主播各自直播间的用户,同时也能让主播大胆地去挑战一些“不可能”,既丰富了视频直播内容,又能够为主播和平台提升收益,当然对于连麦PK直播间而言,平台的监管十分重要。
红包功能
直播间红包也是一项能够让观众端用户参与其中的功能。主播和用户都可以发送红包,参与抢红包玩法,而且观众端用户也是可以获取红包收益的。对于这些能够提升用户参与度的变现功能,恰恰是平台运营方最需要的。
代理推广
代理推广也是现在比较受运营方欢迎的功能之一,通过传统的分销裂变思维,吸纳平台代理商,为他们下发单独的管理平台,让代理商参与平台推广,从收益中获取一定的佣金,大大降低了平台推广引流的难度,短期内即可实现大量的用户流量聚集和变现。

tg2.jpg


小视频模块
如今,越来越多的直播平台都加入了独立的小视频模块。小视频功能中的很多广告功能,让流量较大的运营级视频直播平台,能够从广告商那里获取一定的广告收益。例如我们常见的应用开屏广告,贴片广告,以及小视频中的信息流广告等。
“直播+”收益

“直播+”直播行业未来的主要发展方向,如今教育直播、购物直播、游戏直播等越来越成熟。教育直播可以通过一对一付费直播间,付费课程视频下载回看等方式实现变现;购物直播则通过导入商品进行分销,或是直接入住平台开店等方式获取商品销售收益;游戏直播更多的是结合线下活动,赛事举办,广告赞助等获取收益,与功能层面上的联系相对较少。
正是由于视频直播开发平台中多种多样的变现功能,才使得这样一个趋于冷静的市场依旧有新入局者,而广阔的海外直播市场,更是一块“大蛋糕”。近年来,视频直播开发技术的稳步提升,也大大降低了直播平台开发的准入门槛,不断优化提升的各项技术功能,更是让整个直播行业等待下一个爆发点!
0
评论

(客服云)iOS访客端接收图文消息不展示封面图片怎么办? 客服云 图文消息

kijieoeew 发表了文章 • 153 次浏览 • 2019-06-10 10:16 • 来自相关话题

将HDBubbleView.h+Article.m中的- (instancetype)initWithDictionary:(NSDictionary *)dic方法改成下面这样就可以了
- (instancetype)initWithDictionary:(NSDictionary *)dic {
self = [super init];
if (dic != nil) {
_type = HDCellTypeSub;
_title = [dic objectForKey:@"title"];
double createTime = [[NSDate date] timeIntervalSince1970] * 1000;
if ([dic objectForKey:@"createdTime"]) {
createTime = [[dic objectForKey:@"createdTime"] doubleValue];
}
_createTime = [self timeFormatter:createTime/1000];
_digest = [dic objectForKey:@"digest"];

// //封面展示缩略图
// NSString *thumbUrl = [dic objectForKey:@"thumbUrl"];
// if (thumbUrl) {
// if (thumbUrl && [thumbUrl hasPrefix:@"http"]) {
// _imageUrl = thumbUrl;
// }else {
// _imageUrl = [NSString stringWithFormat:@"%@%@",[HDClient.sharedClient kefuRestServer], thumbUrl];
// }
// }

// 封面展示原图
NSString *picUrl = [dic objectForKey:@"picurl"];
if (picUrl) {
if (picUrl && [picUrl hasPrefix:@"http"]) {
_imageUrl = picUrl;
}else {
_imageUrl = [NSString stringWithFormat:@"%@%@",[HDClient.sharedClient kefuRestServer], picUrl];
}
}

NSString *detailUrl = [dic objectForKey:@"url"];
if (detailUrl) {
if (detailUrl && [detailUrl hasPrefix:@"http"]) {
_url = detailUrl;
}else {
_url = [NSString stringWithFormat:@"%@%@",[HDClient.sharedClient kefuRestServer], detailUrl];
}
}
}
return self;
} 查看全部
HDBubbleView.h+Article.m中的- (instancetype)initWithDictionary:(NSDictionary *)dic方法改成下面这样就可以了
- (instancetype)initWithDictionary:(NSDictionary *)dic {
self = [super init];
if (dic != nil) {
_type = HDCellTypeSub;
_title = [dic objectForKey:@"title"];
double createTime = [[NSDate date] timeIntervalSince1970] * 1000;
if ([dic objectForKey:@"createdTime"]) {
createTime = [[dic objectForKey:@"createdTime"] doubleValue];
}
_createTime = [self timeFormatter:createTime/1000];
_digest = [dic objectForKey:@"digest"];

// //封面展示缩略图
// NSString *thumbUrl = [dic objectForKey:@"thumbUrl"];
// if (thumbUrl) {
// if (thumbUrl && [thumbUrl hasPrefix:@"http"]) {
// _imageUrl = thumbUrl;
// }else {
// _imageUrl = [NSString stringWithFormat:@"%@%@",[HDClient.sharedClient kefuRestServer], thumbUrl];
// }
// }

// 封面展示原图
NSString *picUrl = [dic objectForKey:@"picurl"];
if (picUrl) {
if (picUrl && [picUrl hasPrefix:@"http"]) {
_imageUrl = picUrl;
}else {
_imageUrl = [NSString stringWithFormat:@"%@%@",[HDClient.sharedClient kefuRestServer], picUrl];
}
}

NSString *detailUrl = [dic objectForKey:@"url"];
if (detailUrl) {
if (detailUrl && [detailUrl hasPrefix:@"http"]) {
_url = detailUrl;
}else {
_url = [NSString stringWithFormat:@"%@%@",[HDClient.sharedClient kefuRestServer], detailUrl];
}
}
}
return self;
}
0
评论

(客服云)企业版机器人如何设置转人工 客服云

kijieoeew 发表了文章 • 145 次浏览 • 2019-06-06 15:59 • 来自相关话题

注意:只购买了企业版机器人,不使用客服系统的同学,可忽略第一、二步。
 
一、管理员模式--智能机器人--机器人设置,选择【转人工设置】,这里可以设置“转人工时间段”、“限制转人工提示语”和“转人工指定技能组”。




 
二、还是这个页面,选择【基础设置】,然后点击【机器人管理】,跳转到机器人管理页面。
    有些同学点击后没反应,那有可能是被浏览器拦截了,手动释放即可。




 
三、来到机器人管理页面,找到机器人设置--转人工设置,先【添加转人工参数】,添加时“参数名”随便写,“参数值”必须是技能组的名称,否则无法转接到此技能组。
然后打开【转人工指令】的开关,配置“转人工指令”以及“参数”
注意:在这里设置了“转人工指令”及其“参数”,第1步的“转人工指定技能组”则失效,以这里为准。 查看全部
注意:只购买了企业版机器人,不使用客服系统的同学,可忽略第一、二步。
 
一、管理员模式--智能机器人--机器人设置,选择【转人工设置】,这里可以设置“转人工时间段”、“限制转人工提示语”和“转人工指定技能组”。
企业版机器人转人工设置1.png

 
二、还是这个页面,选择【基础设置】,然后点击【机器人管理】,跳转到机器人管理页面。
    有些同学点击后没反应,那有可能是被浏览器拦截了,手动释放即可。
企业版机器人转人工设置2.png

 
三、来到机器人管理页面,找到机器人设置--转人工设置,先【添加转人工参数】,添加时“参数名”随便写,“参数值”必须是技能组的名称,否则无法转接到此技能组。
然后打开【转人工指令】的开关,配置“转人工指令”以及“参数”
注意:在这里设置了“转人工指令”及其“参数”,第1步的“转人工指定技能组”则失效,以这里为准。
企业版机器人转人工设置3.png
0
回复

网上遇到ag平台网站不给出该怎么办? 环信_Android

回复

小周豪 发起了问题 • 1 人关注 • 291 次浏览 • 2019-05-30 16:25 • 来自相关话题

0
评论

怎么制作直播平台?直播软件开发不得不说的重点内容 直播平台开发

q3557873521 发表了文章 • 131 次浏览 • 2019-05-30 11:57 • 来自相关话题

据悉,欢聚时代将于近日发布2019年Q1季度财报,公司此前预测的2019年净收入在人民币40.1亿元~41.6亿元之间,同比增长23.4%~28.0%,不过最终财报数据如何,让我们拭目以待。不过,就目前欢聚时代净收入稳步增长的态势来看,直播行业依旧有着极强的盈利能力,关键是看运营方怎么“玩”?想要进军直播市场并且“玩好”,“怎么制作直播平台?”就成为了众多运营方最关心的问题了。今天我们就给大家将那些琐碎的知识点串连起来,说说直播软件开发的那些重点内容。






直播软件开发核心业务四大项
前端采集编码设备:主要是主播端直播新号源的采集,以及音视频直播内容的编码压缩,完成这一环节后,将主播端音视频直播内容推送到流媒体服务器,进入内容分发环节。
流媒体服务器:负责将编码压缩后的直播内容进行转播分发。流媒体服务器主要有三方CDN和自建流媒体服务两种方式,对于常见的用户群体广泛的娱乐秀场直播而言,大多选择三方CDN服务。
直播服务组成:视频直播的实现是多个服务内容共同作用的结果。常见的有提供页面和接口逻辑的WEB系统,提供数据缓存的Redis服务,提供静态数据存储的Mysql等。
终端设备:主要是实现客户端观看直播内容,如PC和移动终端,移动终端又分为手机APP、手机H5、微信小程序等,因此在制作直播平台时不一定非要多个终端开播,但很多时候却要实现多个终端观看。
通常制作商用直播平台时,这些核心业务都需要借助于国内很多大型服务商提供的SDK和相关云服务,直播软件开发商更多的是为平台运营方实现应用层面上的功能。






直播软件开发流媒体传输协议
我们不止一次提到过流媒体传输协议的概念,选择合适的流媒体协议,会直接影响视频直播的流畅性。基于这一点,较为常用的直播协议有RTMP、HTTP-FLV、HLS三种,三者各有优劣势。
RTMP是专为流媒体开发协议,直播延时基本上能控制在5秒以内,特别适用于互动视频直播,但RTMP协议是Adobe私有协议,在iOS端需要借助第三方解码器才能播放;
HTTP-FLV协议则是能够有效的穿透防火墙,而且能够兼容Android和iOS移动端,但它的保密性不好,而且流媒体资源是缓存在本地客户端的,不太适合做拉流协议;
至于HLS协议,在H5页面上表现优于RTMP协议,由于是苹果公司开发的,全面兼容苹果公司产品,支持CDN网络,但是它最致命的问题在于实时性太差,基本上在10秒以上,对于视频直播而言十分影响用户体验。
因此直播软件开发主流的流媒体协议当属RTMP协议了。
直播软件开发环境搭建和服务器部署
衡量服务商制作直播平台的重要标准,一方面是视频直播核心业务的稳定实现,以及应用功能的完整性和逻辑缜密;另一方面则是服务器部署上的专业性。
对于后期运营中并发要求较高的直播平台而言,分布式部署和负载均衡配置必不可少。而分布式部署则意味着更多的服务器集群。
例如用于消息推送、私信消息的消息服务器集群;
用于用户关系、直播管理、礼物系统等直播业务支持的业务服务器集群;
用于视频直播、点播、转码、存储等业务的视频服务器集群;
以及使用nodejs服务搭建部署的聊天服务器集群等。
在直播软件开发技术不断进步的今天,实现应用层面功能的重要性反而被弱化,更多比拼直播平台的稳定性和流畅性,让用户有最佳的视频直播体验。未来,直播软件开发市场的竞争将会更多地转向系统运维层面,而不是系统功能开发层面。 查看全部
据悉,欢聚时代将于近日发布2019年Q1季度财报,公司此前预测的2019年净收入在人民币40.1亿元~41.6亿元之间,同比增长23.4%~28.0%,不过最终财报数据如何,让我们拭目以待。不过,就目前欢聚时代净收入稳步增长的态势来看,直播行业依旧有着极强的盈利能力,关键是看运营方怎么“玩”?想要进军直播市场并且“玩好”,“怎么制作直播平台?”就成为了众多运营方最关心的问题了。今天我们就给大家将那些琐碎的知识点串连起来,说说直播软件开发的那些重点内容。

f11f3a292df5e0fe718d1b01556034a85edf721d.jpg


直播软件开发核心业务四大项
前端采集编码设备:主要是主播端直播新号源的采集,以及音视频直播内容的编码压缩,完成这一环节后,将主播端音视频直播内容推送到流媒体服务器,进入内容分发环节。
流媒体服务器:负责将编码压缩后的直播内容进行转播分发。流媒体服务器主要有三方CDN和自建流媒体服务两种方式,对于常见的用户群体广泛的娱乐秀场直播而言,大多选择三方CDN服务。
直播服务组成:视频直播的实现是多个服务内容共同作用的结果。常见的有提供页面和接口逻辑的WEB系统,提供数据缓存的Redis服务,提供静态数据存储的Mysql等。
终端设备:主要是实现客户端观看直播内容,如PC和移动终端,移动终端又分为手机APP、手机H5、微信小程序等,因此在制作直播平台时不一定非要多个终端开播,但很多时候却要实现多个终端观看。
通常制作商用直播平台时,这些核心业务都需要借助于国内很多大型服务商提供的SDK和相关云服务,直播软件开发商更多的是为平台运营方实现应用层面上的功能。

QQ截图20190530104621.jpg


直播软件开发流媒体传输协议
我们不止一次提到过流媒体传输协议的概念,选择合适的流媒体协议,会直接影响视频直播的流畅性。基于这一点,较为常用的直播协议有RTMP、HTTP-FLV、HLS三种,三者各有优劣势。
RTMP是专为流媒体开发协议,直播延时基本上能控制在5秒以内,特别适用于互动视频直播,但RTMP协议是Adobe私有协议,在iOS端需要借助第三方解码器才能播放;
HTTP-FLV协议则是能够有效的穿透防火墙,而且能够兼容Android和iOS移动端,但它的保密性不好,而且流媒体资源是缓存在本地客户端的,不太适合做拉流协议;
至于HLS协议,在H5页面上表现优于RTMP协议,由于是苹果公司开发的,全面兼容苹果公司产品,支持CDN网络,但是它最致命的问题在于实时性太差,基本上在10秒以上,对于视频直播而言十分影响用户体验。
因此直播软件开发主流的流媒体协议当属RTMP协议了。
直播软件开发环境搭建和服务器部署
衡量服务商制作直播平台的重要标准,一方面是视频直播核心业务的稳定实现,以及应用功能的完整性和逻辑缜密;另一方面则是服务器部署上的专业性。
对于后期运营中并发要求较高的直播平台而言,分布式部署和负载均衡配置必不可少。而分布式部署则意味着更多的服务器集群。
例如用于消息推送、私信消息的消息服务器集群;
用于用户关系、直播管理、礼物系统等直播业务支持的业务服务器集群;
用于视频直播、点播、转码、存储等业务的视频服务器集群;
以及使用nodejs服务搭建部署的聊天服务器集群等。
在直播软件开发技术不断进步的今天,实现应用层面功能的重要性反而被弱化,更多比拼直播平台的稳定性和流畅性,让用户有最佳的视频直播体验。未来,直播软件开发市场的竞争将会更多地转向系统运维层面,而不是系统功能开发层面。
0
评论

重磅开源!业内首个 React Native 转微信小程序引擎 react native

sunshine123 发表了文章 • 222 次浏览 • 2019-05-29 10:27 • 来自相关话题

前言

Alita 是一套由京东 ARES 多端技术团队打造的 React Native 代码转换引擎工具。它对 React 语法有全新的处理方式,支持在运行时处理 React 语法,实现了 React Native 和微信小程序之间的主要组件对齐,可以用简洁、高效的方式把 React Native 代码转换成微信小程序代码。
Alita 不是一个新框架,不会有额外的学习成本,她只是一套转换引擎工具,可以把 React Native 扩展到微信小程序端,大大降低多终端上的业务开发成本。以后移动端开发者只需要掌握 React Native 技术栈,就可以轻松实现 Android、iOS、Windows、Web(已有开源项目支持)、微信小程序等多端渲染。
 
Alita 项目

开源地址: https://github.com/areslabs/alita
React Native 





 
微信小程序






Alita 具备哪些能力
Alita 的设计目标是要尽可能无损的转换 RN 应用,即使是已经存在的 RN 应用,我们也希望只做少量的修改就可以在微信小程序平台运行,所以这就要求 Alita 必须对 React 语法有足够的支持,包括 JSX 语法,React 生命周期等

JSX 语法

Alita 支持大部分 JSX 语法,这意味着什么呢?意味着你可以使用 React 自由的代码方式以及强大的组件化支持,意味着你可以延用自己的编程习惯,不需要对已有的 RN 代码进行过多修改。这主要得益于 Alita 是在运行时处理 JSX 语法,而不是现在社区上常见的编译时处理。

因此 Alita 没有诸如以下社区其他方案的限制:

JSX 只允许出现的组件的 render 方法中
不能通过 props 传递 JSX 片段或者返回 JSX 的函数
不支持在属性上传递函数

Alita 转换以下代码毫无压力:





生命周期

Alita 支持所有的 React 生命周期。微信小程序本身给组件提供了生命周期,但是这些生命周期在写法和调用上与 React 存在着一些的差异,另外 React 生命周期更加丰富。Alita 在支持 React 生命周期的时候,把它们分为了两类:

第一类: componentDidMount,componentDidUpdate,componentWillUnmount 这 3 个生命周期在微信小程序上有相应的触发时机,比如ready, detached,只需要在微信小程序相关回调触发的时候,调用 React 组件对应的方法即可。
另外一类,在微信小程序端没有直接对应的生命周期,对于这一类生命周期,主要是借助于 Alita 内部嵌入的 mini-react,触发相应的回调。通过这两种方式,Alita 实现了 React 生命周期的对齐。

此外,Alita 抹平了 RN 和微信小程序之间的事件及样式差异,能够无损得将 RN事件和样式传递到微信小程序中。

RN 基本组件和 API

RN 提供了很多基本的组件和 API,这些组件加上 React 开发方式,共同构成了 RN 应用。Alita 除了要对 React 语法进行处理,还必须在预先在微信小程序平台对齐出一套与 RN 等效的组件和 API。比如在 RN 端,请求网络的方式是通过 fetch 方式,但是微信小程序本身并不存在 fetch 方法,就这要求 Alita 必须基于微信小程序的网络 API,在微信小程序上实现一个 fetch 方法。 同样的以 RN 组件 FlatList 为例,当 Alita 把 RN 应用转化为微信小程序代码之后,FlatList 在微信小程序平台并不存在,需要预先在微信小程序平台实现小程序版本的 FlatList 。这个预先处理的过程,我们称之为对齐,对齐的过程包括组件,组件属性,API 等。





Redux

Redux 是 JavaScript 状态容器,提供可预测化的状态管理,并且易于测试,是当前 React 技术栈流行的数据层管理方案。得益于 Alita 运行阶段处理 React 逻辑的设计,Alita 支持将使用 Redux 的 RN 应用转换成微信小程序。

动画

动画是每一个 app 不可或缺的能力,RN 和微信小程序的动画实现差异很大,RN 的动画能力要强于微信小程序,想要完全把 RN 的动画转化至微信小程序的是不可能的。为此我们封装了一套动画组件库,这一套动画组件库涵盖了所有微信小程序的动画能力,所有使用此动画库开发的动画,都可以无损转化到小程序端。
React Native





微信小程序





Alita 原理简介

那么 Alita 是如何将 RN 转换运行在微信小程序上的呢?我们不打算在这篇文章深入剖析,简单从编译阶段和运行阶段来说明。

编译阶段:我们通过静态分析 RN 源码,将其转换为微信小程序可以识别的代码,首先我们会将 JSX 语法转换为微信小程序的 wxml 模块语法,RN 组件在这个阶段会被转换为微信小程序自定义组件,一般会产生微信小程序需要的 4 个文件 wxml, js,json 和 wxss。 此外,我们会保留一份 babel 转译之后的 RN 源码,这份代码里面所有的 JSX 都已经由 React.createElement 替换,运行阶段,会使用这个能被微信小程序的 JavaScript 运行环境识别的源码。

运行阶段:Alita 内部嵌入了一个 mini-react,这个 mini-react 在运行阶段会运行上文所说的转译后的 RN 源码,与 React 一样,递归(React Fiber 之后,不再是递给的方式)的处理组件树,调用组件的 render 方法,调用组件生命周期,计算 context 等。另外 React 在运行的过程中有一个重要的 reconciliation 算法(即 virtual-dom),mini-react 同样提供了简化版本的 reconciliation 来决定组件的销毁与复用。mini-react 执行完之后,最终会输出一个描述视图的数据结构,这份数据结构提供了微信小程序渲染所需要的所有数据。微信小程序通过桥接模块与 mini-react 通信,获取到这一份数据,通过 setData 的方式设置到微信小程序模版上,从而渲染出视图。





Alita 组件库

在项目开发中,仅仅使用 RN 基本组件和 API,是很难满足需要的。我们在使用 Alita 的过程中,积累了很多常用的三端组件,包括ScrollTabView,ViewPager,SegmentedControl等等,我们正在剥离和梳理这些组件,很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一,我们将会不断优化和扩展新组件。

除了 Alita 组件库,我们还提供了扩展方式,开发者可以很方便的把本团队的基本 UI 组件库扩展到微信小程序端,然后通过 Alita 把使用了这些组件的 RN 应用运行在微信小程序平台。





结语

我们将不断拓展 Alita 的能力,支持更多端能力,如:百度小程序、头条小程序等,继续完善开发者体验,提高开发者效率,帮助更多开发者。

我们也在考察 Flutter 这一新的跨端方案和微信小程序融合转化的可行性。

我们十分重视开源社区的反馈和建议,会不断从中汲取养分,让 Alita 变得更加强大。

意见反馈

如果有任何的意见或者建议,欢迎在 Github 创建 issue,感谢你的支持和贡献。
  查看全部
前言

Alita 是一套由京东 ARES 多端技术团队打造的 React Native 代码转换引擎工具。它对 React 语法有全新的处理方式,支持在运行时处理 React 语法,实现了 React Native 和微信小程序之间的主要组件对齐,可以用简洁、高效的方式把 React Native 代码转换成微信小程序代码。
Alita 不是一个新框架,不会有额外的学习成本,她只是一套转换引擎工具,可以把 React Native 扩展到微信小程序端,大大降低多终端上的业务开发成本。以后移动端开发者只需要掌握 React Native 技术栈,就可以轻松实现 Android、iOS、Windows、Web(已有开源项目支持)、微信小程序等多端渲染。
 
Alita 项目

开源地址: https://github.com/areslabs/alita
React Native 

11.gif

 
微信小程序

1.gif


Alita 具备哪些能力
Alita 的设计目标是要尽可能无损的转换 RN 应用,即使是已经存在的 RN 应用,我们也希望只做少量的修改就可以在微信小程序平台运行,所以这就要求 Alita 必须对 React 语法有足够的支持,包括 JSX 语法,React 生命周期等

JSX 语法

Alita 支持大部分 JSX 语法,这意味着什么呢?意味着你可以使用 React 自由的代码方式以及强大的组件化支持,意味着你可以延用自己的编程习惯,不需要对已有的 RN 代码进行过多修改。这主要得益于 Alita 是在运行时处理 JSX 语法,而不是现在社区上常见的编译时处理。

因此 Alita 没有诸如以下社区其他方案的限制:

JSX 只允许出现的组件的 render 方法中
不能通过 props 传递 JSX 片段或者返回 JSX 的函数
不支持在属性上传递函数

Alita 转换以下代码毫无压力:

2.jpg

生命周期

Alita 支持所有的 React 生命周期。微信小程序本身给组件提供了生命周期,但是这些生命周期在写法和调用上与 React 存在着一些的差异,另外 React 生命周期更加丰富。Alita 在支持 React 生命周期的时候,把它们分为了两类:

第一类: componentDidMount,componentDidUpdate,componentWillUnmount 这 3 个生命周期在微信小程序上有相应的触发时机,比如ready, detached,只需要在微信小程序相关回调触发的时候,调用 React 组件对应的方法即可。
另外一类,在微信小程序端没有直接对应的生命周期,对于这一类生命周期,主要是借助于 Alita 内部嵌入的 mini-react,触发相应的回调。通过这两种方式,Alita 实现了 React 生命周期的对齐。

此外,Alita 抹平了 RN 和微信小程序之间的事件及样式差异,能够无损得将 RN事件和样式传递到微信小程序中。

RN 基本组件和 API

RN 提供了很多基本的组件和 API,这些组件加上 React 开发方式,共同构成了 RN 应用。Alita 除了要对 React 语法进行处理,还必须在预先在微信小程序平台对齐出一套与 RN 等效的组件和 API。比如在 RN 端,请求网络的方式是通过 fetch 方式,但是微信小程序本身并不存在 fetch 方法,就这要求 Alita 必须基于微信小程序的网络 API,在微信小程序上实现一个 fetch 方法。 同样的以 RN 组件 FlatList 为例,当 Alita 把 RN 应用转化为微信小程序代码之后,FlatList 在微信小程序平台并不存在,需要预先在微信小程序平台实现小程序版本的 FlatList 。这个预先处理的过程,我们称之为对齐,对齐的过程包括组件,组件属性,API 等。

3.jpg

Redux

Redux 是 JavaScript 状态容器,提供可预测化的状态管理,并且易于测试,是当前 React 技术栈流行的数据层管理方案。得益于 Alita 运行阶段处理 React 逻辑的设计,Alita 支持将使用 Redux 的 RN 应用转换成微信小程序。

动画

动画是每一个 app 不可或缺的能力,RN 和微信小程序的动画实现差异很大,RN 的动画能力要强于微信小程序,想要完全把 RN 的动画转化至微信小程序的是不可能的。为此我们封装了一套动画组件库,这一套动画组件库涵盖了所有微信小程序的动画能力,所有使用此动画库开发的动画,都可以无损转化到小程序端。
React Native

5.gif

微信小程序

6.gif

Alita 原理简介

那么 Alita 是如何将 RN 转换运行在微信小程序上的呢?我们不打算在这篇文章深入剖析,简单从编译阶段和运行阶段来说明。

编译阶段:我们通过静态分析 RN 源码,将其转换为微信小程序可以识别的代码,首先我们会将 JSX 语法转换为微信小程序的 wxml 模块语法,RN 组件在这个阶段会被转换为微信小程序自定义组件,一般会产生微信小程序需要的 4 个文件 wxml, js,json 和 wxss。 此外,我们会保留一份 babel 转译之后的 RN 源码,这份代码里面所有的 JSX 都已经由 React.createElement 替换,运行阶段,会使用这个能被微信小程序的 JavaScript 运行环境识别的源码。

运行阶段:Alita 内部嵌入了一个 mini-react,这个 mini-react 在运行阶段会运行上文所说的转译后的 RN 源码,与 React 一样,递归(React Fiber 之后,不再是递给的方式)的处理组件树,调用组件的 render 方法,调用组件生命周期,计算 context 等。另外 React 在运行的过程中有一个重要的 reconciliation 算法(即 virtual-dom),mini-react 同样提供了简化版本的 reconciliation 来决定组件的销毁与复用。mini-react 执行完之后,最终会输出一个描述视图的数据结构,这份数据结构提供了微信小程序渲染所需要的所有数据。微信小程序通过桥接模块与 mini-react 通信,获取到这一份数据,通过 setData 的方式设置到微信小程序模版上,从而渲染出视图。

7.jpg

Alita 组件库

在项目开发中,仅仅使用 RN 基本组件和 API,是很难满足需要的。我们在使用 Alita 的过程中,积累了很多常用的三端组件,包括ScrollTabView,ViewPager,SegmentedControl等等,我们正在剥离和梳理这些组件,很快会发布兼容三端的 Alita 组件库。此组件库也是我们日后的工作重点之一,我们将会不断优化和扩展新组件。

除了 Alita 组件库,我们还提供了扩展方式,开发者可以很方便的把本团队的基本 UI 组件库扩展到微信小程序端,然后通过 Alita 把使用了这些组件的 RN 应用运行在微信小程序平台。

8.jpg

结语

我们将不断拓展 Alita 的能力,支持更多端能力,如:百度小程序、头条小程序等,继续完善开发者体验,提高开发者效率,帮助更多开发者。

我们也在考察 Flutter 这一新的跨端方案和微信小程序融合转化的可行性。

我们十分重视开源社区的反馈和建议,会不断从中汲取养分,让 Alita 变得更加强大。

意见反馈

如果有任何的意见或者建议,欢迎在 Github 创建 issue,感谢你的支持和贡献。
 
0
评论

GitHub 开源跨平台神器 Electron 实践 Electron 实践

beyond 发表了文章 • 219 次浏览 • 2019-05-22 14:14 • 来自相关话题

认识 Electron

Electron是由GitHub开发,用HTML、CSS 和 JavaScript来构建跨平台桌面应用程序的一个开源库。Electron通过将Chromium和Node.js合并到同一个运行时环境中,并将其打包为Mac、Windows和Linux系统下的应用。Electron于2013年作为构建GitHub上可编程的文本编辑器Atom的框架而被开发出来。

这不意味着Electron是绑定了GUI库的JavaScript。相反,Electron使用Web页面作为它的GUI,所以你能把它看作成一个被JavaScript控制的,精简版的Chromium浏览器。

Electron的版本更新很频繁,基本保持在1周发布一个小版本,每季度发布一个大版本。除了稳定版外还有Beta版和Nightly(最新功能试用版),Chromium更新时,Electron也会跟着更新。

为什么选择Electron

如今的桌面应用软件基本都需要跨平台运行,类似于MFC、Duilib等技术都无法满足需求。当今的跨平台桌面应用软件开发以使用QT,Electron较多。

QT跨平台开发

Qt是一个跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。作为使用C++语言开发的框架,他的优缺点十分明显。

优点:

运行效率高;

架构健壮,性能强大。

缺点:

开发周期长;

需要开发者具有C++编程能力;

QT是一款收费软件,如果不想缴费购买License,又想用QT开发商业(闭源)程序,必须遵守LGPL协议,开源使用了LGPL库的源代码。

Electron桌面软件开发

Electron最早用于开发GitHub上的可编程文本编辑器Atom,它是一个借助Node.js和Chromium, 利用HTML/CSS/JavaScript语言创建桌面应用的框架。与之类似的还有NW.js, 但是NW.js社区发展基本处于停滞状态,更新也较慢。

优点:

使用JavaScript语言作为开发语言,方便前端开发者轻松开发桌面应用,原C++/Java语言开发者,也可以很快入手开发;

方便调试,提供了浏览器的开发者工具,轻松断点调试;

丰富的Web前端UI资源,可以快速制作绚丽的界面;

快速构建,迭代开发。最复杂的底层浏览器部分Electron已经帮你搞定,你只需要负责上层界面及业务逻辑的开发。Electron还提供了热更新功能,只需加载更新模块,会自动帮你检查更新并后台下载;

崩溃日志报告。轻松收集崩溃日志,定位错误代码;

C++插件扩展;

代码开源。Electron是GitHub上的开源项目,开发者有疑问可以在GitHub社区(https://github.com/electron/electron)上直接提issue,高级开发者可以修改Electron底层代码,订制自己的Elcetron。

缺点:

打包文件太大。Electron毕竟是一个浏览器,最小的应用安装包也要几十兆大小;

无法代码加密。和Web开发类似,使用者可以在开发者工具看到应用的客户端代码,商业软件需要代码加密的可以选择重要功能在服务端实现,桌面应用请求,或使用Node文件实现;

运行耗资源。浏览器通病,Electron应用也是多进程系统,启动几个Electron应用还好,如果太多会造成机器卡顿;

不支持XP系统,Node.js并不支持XP系统。

综上,如果你想快速的开发出炫酷的桌面应用,而又对系统限制不大,建议你选择Electron,如果你是一个前端开发人员,又想制作桌面应用,建议你选择Electron。

创建一个简单的应用

环境安装

Electron应用本质上是一个Node.js应用程序,需要安装Node.js,到官网(http://Node.js.cn/download/)安装即可。安装完后,在命令行窗口中分别输入node -v和npm -v来查看Node和NPM的版本。

初始化应用
与Node.js模块相同,应用的入口为package.json 文件,该文件可以在一个文件夹下使用npm init命令,按照提示填充各项信息生成。 一个最基本的Electron 应用一般来说会有如下的目录结构:





 main.js是主进程,完成窗口的创建,url或html文件的加载。GitHub上提供了一个简单的Electron应用https://github.com/electron/el ... t.git,可供学习参考。

使用C++插件扩展功能
对于复杂的业务逻辑,可以开发成C++插件Node,C++插件主要完成一些复杂的逻辑功能,供Electron调用。Electron对于C++生成的Node插件引用功能来自于Node.js,可以使用require() 函数加载到工程中,像普通的模块一样使用。JavaScript 与C++ 库之间接口使用V8引擎,如下图所示:





 插件开发环境

C++插件的开发需要安装node-gyp、Python 2.76,Windows下开发还要安装Visual Studio。
每个插件都有一个工程文件binging.gyp,配置了源文件、include路径及链接库,目标文件,使用的编译器等,格式如下:





 
C++与JavaScript通过V8交互执行的整体过程如下图所示:





 
C++可以使用Napi接口,模块的加载使用宏NODEAPIMODULE(hello, Init),导出的JavaScript接口在Init中定义,示例如下:





 
编译C++插件使用命令如下:





 
生成的C++插件为node文件,如hello.node 在JavaScript中调用C++插件直接使用require函数,代码hello.js如下:





 JavaScript就可以调用C++的接口了,执行命令node hello.js,输出"world"。

C++中调用JavaScript传递的回调函数需要使用libuv库,libuv实现了Node.js的事件循环、工作线程、以及平台所有的的异步操作的C库。 具体参考示例代码https://github.com/nodejs/node-addon-examples

Electron打包

Electron应用打包可以使用electron-builder和electron-packager,推荐使用electron-builder,打包命令为npm run builder,可以使用参数配置生成的安装包的操作系统。

环信IM桌面端

环信的IM桌面端SDK提供了JavaScript接口,并且使用Electron框架开发的示例Demo,可以让任何一个前端人员在极短时间内搭建出一款同时在Mac、Windows上运行的即时通讯软件,拥有单聊、群聊和聊天室功能,支持文字、表情、图片、音视频等消息格式,开发时间短、界面美观,可以为开发者提供方便快捷的桌面端即时通讯解决方案。

下载地址:http://www.easemob.com/download/im
集成说明:http://docs-im.easemob.com/im/pc/intro/integration

作者:李小明,现就职于环信,高级软件开发工程师,负责IM桌面端软件的研发,以C++、Node.js为开发语言,从事多年桌面软件开发经验,对行业前沿技术永远不懈追求。 查看全部
认识 Electron

Electron是由GitHub开发,用HTML、CSS 和 JavaScript来构建跨平台桌面应用程序的一个开源库。Electron通过将Chromium和Node.js合并到同一个运行时环境中,并将其打包为Mac、Windows和Linux系统下的应用。Electron于2013年作为构建GitHub上可编程的文本编辑器Atom的框架而被开发出来。

这不意味着Electron是绑定了GUI库的JavaScript。相反,Electron使用Web页面作为它的GUI,所以你能把它看作成一个被JavaScript控制的,精简版的Chromium浏览器。

Electron的版本更新很频繁,基本保持在1周发布一个小版本,每季度发布一个大版本。除了稳定版外还有Beta版和Nightly(最新功能试用版),Chromium更新时,Electron也会跟着更新。

为什么选择Electron

如今的桌面应用软件基本都需要跨平台运行,类似于MFC、Duilib等技术都无法满足需求。当今的跨平台桌面应用软件开发以使用QT,Electron较多。

QT跨平台开发

Qt是一个跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。作为使用C++语言开发的框架,他的优缺点十分明显。

优点:

运行效率高;

架构健壮,性能强大。

缺点:

开发周期长;

需要开发者具有C++编程能力;

QT是一款收费软件,如果不想缴费购买License,又想用QT开发商业(闭源)程序,必须遵守LGPL协议,开源使用了LGPL库的源代码。

Electron桌面软件开发

Electron最早用于开发GitHub上的可编程文本编辑器Atom,它是一个借助Node.js和Chromium, 利用HTML/CSS/JavaScript语言创建桌面应用的框架。与之类似的还有NW.js, 但是NW.js社区发展基本处于停滞状态,更新也较慢。

优点:

使用JavaScript语言作为开发语言,方便前端开发者轻松开发桌面应用,原C++/Java语言开发者,也可以很快入手开发;

方便调试,提供了浏览器的开发者工具,轻松断点调试;

丰富的Web前端UI资源,可以快速制作绚丽的界面;

快速构建,迭代开发。最复杂的底层浏览器部分Electron已经帮你搞定,你只需要负责上层界面及业务逻辑的开发。Electron还提供了热更新功能,只需加载更新模块,会自动帮你检查更新并后台下载;

崩溃日志报告。轻松收集崩溃日志,定位错误代码;

C++插件扩展;

代码开源。Electron是GitHub上的开源项目,开发者有疑问可以在GitHub社区(https://github.com/electron/electron)上直接提issue,高级开发者可以修改Electron底层代码,订制自己的Elcetron。

缺点:

打包文件太大。Electron毕竟是一个浏览器,最小的应用安装包也要几十兆大小;

无法代码加密。和Web开发类似,使用者可以在开发者工具看到应用的客户端代码,商业软件需要代码加密的可以选择重要功能在服务端实现,桌面应用请求,或使用Node文件实现;

运行耗资源。浏览器通病,Electron应用也是多进程系统,启动几个Electron应用还好,如果太多会造成机器卡顿;

不支持XP系统,Node.js并不支持XP系统。

综上,如果你想快速的开发出炫酷的桌面应用,而又对系统限制不大,建议你选择Electron,如果你是一个前端开发人员,又想制作桌面应用,建议你选择Electron。

创建一个简单的应用

环境安装

Electron应用本质上是一个Node.js应用程序,需要安装Node.js,到官网(http://Node.js.cn/download/)安装即可。安装完后,在命令行窗口中分别输入node -v和npm -v来查看Node和NPM的版本。

初始化应用
与Node.js模块相同,应用的入口为package.json 文件,该文件可以在一个文件夹下使用npm init命令,按照提示填充各项信息生成。 一个最基本的Electron 应用一般来说会有如下的目录结构:

1.png

 main.js是主进程,完成窗口的创建,url或html文件的加载。GitHub上提供了一个简单的Electron应用https://github.com/electron/el ... t.git,可供学习参考。

使用C++插件扩展功能
对于复杂的业务逻辑,可以开发成C++插件Node,C++插件主要完成一些复杂的逻辑功能,供Electron调用。Electron对于C++生成的Node插件引用功能来自于Node.js,可以使用require() 函数加载到工程中,像普通的模块一样使用。JavaScript 与C++ 库之间接口使用V8引擎,如下图所示:

2.jpg

 插件开发环境

C++插件的开发需要安装node-gyp、Python 2.76,Windows下开发还要安装Visual Studio。
每个插件都有一个工程文件binging.gyp,配置了源文件、include路径及链接库,目标文件,使用的编译器等,格式如下:

3.png

 
C++与JavaScript通过V8交互执行的整体过程如下图所示:

4.jpg

 
C++可以使用Napi接口,模块的加载使用宏NODEAPIMODULE(hello, Init),导出的JavaScript接口在Init中定义,示例如下:

5.png

 
编译C++插件使用命令如下:

6.png

 
生成的C++插件为node文件,如hello.node 在JavaScript中调用C++插件直接使用require函数,代码hello.js如下:

7.png

 JavaScript就可以调用C++的接口了,执行命令node hello.js,输出"world"。

C++中调用JavaScript传递的回调函数需要使用libuv库,libuv实现了Node.js的事件循环、工作线程、以及平台所有的的异步操作的C库。 具体参考示例代码https://github.com/nodejs/node-addon-examples

Electron打包

Electron应用打包可以使用electron-builder和electron-packager,推荐使用electron-builder,打包命令为npm run builder,可以使用参数配置生成的安装包的操作系统。

环信IM桌面端

环信的IM桌面端SDK提供了JavaScript接口,并且使用Electron框架开发的示例Demo,可以让任何一个前端人员在极短时间内搭建出一款同时在Mac、Windows上运行的即时通讯软件,拥有单聊、群聊和聊天室功能,支持文字、表情、图片、音视频等消息格式,开发时间短、界面美观,可以为开发者提供方便快捷的桌面端即时通讯解决方案。

下载地址:http://www.easemob.com/download/im
集成说明:http://docs-im.easemob.com/im/pc/intro/integration

作者:李小明,现就职于环信,高级软件开发工程师,负责IM桌面端软件的研发,以C++、Node.js为开发语言,从事多年桌面软件开发经验,对行业前沿技术永远不懈追求。
0
评论

据直播软件开发者们说,关于卡顿,直播系统源码尽力了 直播 直播软件开发 直播系统源码

QQ1449701271 发表了文章 • 215 次浏览 • 2019-05-14 14:13 • 来自相关话题

直播app软件制作、开发完毕后,搭建到服务器上就可以开始运营了,在运营一段时间后,直播平台的客服们最常被问及的问题是:客服小姐姐,为什么我这边看直播会卡顿呀?这时候,客服人员一边会把该问题反馈上去,一边查看下同类问题的反馈量,再根据情况进行回复。


直播卡顿是一件非常常见的事,在网络环境差、源码有BUG、服务器带宽不足、在线人数大导致服务器配置吃紧等情况下都会产生。
当然,直播软件开发者也会在开发直播系统源码时尽量降低直播卡顿的频率,比如:

1、 使用系统官方提供的开源代码编写原生系统,保障系统层面上的优势,原生系统在所有系统开发方式中,是交互性、用户体验感最好的一种开发方式。

2、 使用H.264、H.265等编码方式,降低带宽占用率

3、 默认使用硬编硬解的编解码方式,降低对手机CPU的占用率

4、 使用RTMP流媒体传输协议,保障直播传输速度。

总之,我们先假设直播软件开发者们已经很尽力的开发软件了,直播系统源码本身并没有BUG,开发人员也并非新手或仍坚持使用技术落后的开发方式进行软件开发的团队。在这种情况下,都有什么常见的导致直播卡顿的原因呢?
1、 网络环境差

先说网络环境差这个硬伤,回到开头,客服人员在接到用户反馈“直播卡顿”后,会主动查询是否有其他用户反馈同类问题,如果集中于某一区域有大量用户反应同类问题,可能是当地CDN分发网络出现问题,或由于天气原因导致的网络问题。

而如果反映用户聚集于同一直播间,则可能是主播方面网络的原因。

2、 服务器配置差

我们都知道在某些大主播开播时,由于一瞬间涌入直播间的人数过多而导致直播间进不去的情况是很常见的,在同一时刻,做同一操作的用户量大于服务器所能够承受的并发数,这种情况会使直播间产生卡顿。
用户方网络环境差的情况,或许能够因这份文件的下发而被解决。

5月8日,工信部在官网发布《两部门关于开展深入推进宽带网络提速降费 支撑经济高质量发展2019专项行动的通知》。通知要求:

1、 开展“双G双提”,100M及以上宽带用户比例提升至80%,4G用户渗透率力争提升至80%;

2、 开展“同网同速”,推动我国行政村4G和光纤覆盖率双双超过98%,实现农村宽带网络接入能力和速率基本达到城市同等水平;

3、 开展“精准降费”,推动基础电信企业面向全国建档立卡贫困户给予最大折扣基础通信资费优惠

长期以来,带宽网速“降价提速”的通知不断下达,三大网络运营商也在随之作出响应,农村网络基站覆盖率低、网络环境差的情况是长期存在的,但从一次比一次详尽严谨的通知来看,逐步建成更优质的网络环境,是一件有计划、有实施可能性的事。
本文到此结束,更多与直播软件开发、直播系统源码相关的行业资讯和分析会在以后逐渐放出,敬请期待,需要的朋友请关注我。

声明:文章为原创内容,转载请注明原文链接及作者 查看全部
直播app软件制作、开发完毕后,搭建到服务器上就可以开始运营了,在运营一段时间后,直播平台的客服们最常被问及的问题是:客服小姐姐,为什么我这边看直播会卡顿呀?这时候,客服人员一边会把该问题反馈上去,一边查看下同类问题的反馈量,再根据情况进行回复。


直播卡顿是一件非常常见的事,在网络环境差、源码有BUG、服务器带宽不足、在线人数大导致服务器配置吃紧等情况下都会产生。
当然,直播软件开发者也会在开发直播系统源码时尽量降低直播卡顿的频率,比如:

1、 使用系统官方提供的开源代码编写原生系统,保障系统层面上的优势,原生系统在所有系统开发方式中,是交互性、用户体验感最好的一种开发方式。

2、 使用H.264、H.265等编码方式,降低带宽占用率

3、 默认使用硬编硬解的编解码方式,降低对手机CPU的占用率

4、 使用RTMP流媒体传输协议,保障直播传输速度。

总之,我们先假设直播软件开发者们已经很尽力的开发软件了,直播系统源码本身并没有BUG,开发人员也并非新手或仍坚持使用技术落后的开发方式进行软件开发的团队。在这种情况下,都有什么常见的导致直播卡顿的原因呢?
1、 网络环境差

先说网络环境差这个硬伤,回到开头,客服人员在接到用户反馈“直播卡顿”后,会主动查询是否有其他用户反馈同类问题,如果集中于某一区域有大量用户反应同类问题,可能是当地CDN分发网络出现问题,或由于天气原因导致的网络问题。

而如果反映用户聚集于同一直播间,则可能是主播方面网络的原因。

2、 服务器配置差

我们都知道在某些大主播开播时,由于一瞬间涌入直播间的人数过多而导致直播间进不去的情况是很常见的,在同一时刻,做同一操作的用户量大于服务器所能够承受的并发数,这种情况会使直播间产生卡顿。
用户方网络环境差的情况,或许能够因这份文件的下发而被解决。

5月8日,工信部在官网发布《两部门关于开展深入推进宽带网络提速降费 支撑经济高质量发展2019专项行动的通知》。通知要求:

1、 开展“双G双提”,100M及以上宽带用户比例提升至80%,4G用户渗透率力争提升至80%;

2、 开展“同网同速”,推动我国行政村4G和光纤覆盖率双双超过98%,实现农村宽带网络接入能力和速率基本达到城市同等水平;

3、 开展“精准降费”,推动基础电信企业面向全国建档立卡贫困户给予最大折扣基础通信资费优惠

长期以来,带宽网速“降价提速”的通知不断下达,三大网络运营商也在随之作出响应,农村网络基站覆盖率低、网络环境差的情况是长期存在的,但从一次比一次详尽严谨的通知来看,逐步建成更优质的网络环境,是一件有计划、有实施可能性的事。
本文到此结束,更多与直播软件开发、直播系统源码相关的行业资讯和分析会在以后逐渐放出,敬请期待,需要的朋友请关注我。

声明:文章为原创内容,转载请注明原文链接及作者
0
回复

一对一直播app不知道怎样开发?这些功能你有了吗? 直播平台开发 直播

回复

q2466131704 发起了问题 • 1 人关注 • 433 次浏览 • 2019-05-14 14:13 • 来自相关话题

0
评论

收藏了~阿里巴巴程序员常用的 15 款开发者工具 程序员 开发者工具

beyond 发表了文章 • 227 次浏览 • 2019-05-10 11:16 • 来自相关话题

从人工到自动化,从重复到创新,技术演进的历程中,伴随着开发者工具类产品的发展。

阿里巴巴将自身在各类业务场景下的技术积淀,通过开源、云上实现或工具等形式对外开放,本文将精选了一些阿里巴巴的开发者工具,希望能帮助开发者们提高开发效率、更优雅的写代码。

由于开发者涉及的技术领域众多,笔者仅从自己熟悉的领域,以后端开发者的视角盘点平时可能用得到的工具。每个工具按照以下几点进行介绍:

工具名称和简介

使用场景

使用教程

获取方式

一、Java 线上诊断工具 Arthas

Arthas 阿里巴巴 2018 年 9 月开源的一款 Java 线上诊断工具。

工具的使用场景:

这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?

我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?

遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?

线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!

是否有一个全局视角来查看系统的运行状况?

有什么办法可以监控到 JVM 的实时运行状态?

Arthas 支持 JDK 6+,支持 Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

使用教程:

基础教程:

https://alibaba.github.io/arth ... asics

进阶教程:

https://alibaba.github.io/arth ... anced

获取方式:(免费)

开源地址:

https://github.com/alibaba/arthas

二、IDE 插件 Cloud Toolkit

Cloud Toolkit是一款 IDE 插件,可以帮助开发者更高效地开发、测试、诊断并部署应用。通过 Cloud Toolkit,开发者能够方便地将本地应用一键部署到任意机器(本地或云端),并内置 Arthas 诊断、高效执行终端命令和 SQL 等,提供 IntelliJ IDEA 版,Eclipse 版,PyCharm 版和 Maven 版。

工具的使用场景:

每次修改完代码后,是否正在经历反复地打包?

在 Maven 、Git 以及其他运维脚本和工具的之间频繁切换?

采用 SCP 工具上传?使用 XShell 或 SecureCRT 登陆服务器?替换部署包?重启?

文件上传到服务器指定目录,在各种 FTP、SCP 工具之间频繁切换 ?

使用教程:

IntelliJ IDEA 版:

https://help.aliyun.com/document_detail/98762.html

Eclipse 版:

https://help.aliyun.com/document_detail/29970.html

PyCharm 版:

https://help.aliyun.com/docume ... .html

Maven 版:

https://help.aliyun.com/docume ... .html

获取方式:(免费) 工具地址:

https://www.aliyun.com/product/cloudtoolkit

三、混沌实验注入工具 ChaosBlade

ChaosBlade是一款遵循混沌工程实验原理,提供丰富故障场景实现,帮助分布式系统提升容错性和可恢复性的混沌工程工具,可实现底层故障的注入,提供了延迟、异常、返回特定值、修改参数值、重复调用和 try-catch 块异常等异常场景。

工具的使用场景:

微服务的容错能力不易衡量?

容器编排配置是否合理无法验证?

PaaS 层健壮性的测试工作无从入手?

使用教程:

https://github.com/chaosblade-io/chaosblade/wiki/ 新手指南

获取方式:(免费)

开源地址:

https://github.com/chaosblade-io/chaosblade/wiki/ 新手指南

四、Java 代码规约扫描插件

该插件用于检测 Java 代码中存在的不规范的位置,并给予提示。规约插件是采用 Kotlin 语言开发。

使用教程:

IDEA 插件使用文档:

https://github.com/alibaba/p3c/wiki/IDEA 插件使用文档

Eclipse 插件使用文档:

https://github.com/alibaba/p3c/wiki/Eclipse 插件使用文档

获取方式:(免费)

开源地址:

https://github.com/alibaba/p3c

五、应用实时监控工具 ARMS

ARMS是一款 APM 类的监控工具,提供前端、应用、自定义监控 3 类监控选项,可快速构建实时的应用性能和业务监控能力。

工具的使用场景:

晚上 10 点收到 37 条报警信息,你却无从下手?

当我们发现问题的时候,客户 / 业务方已经发起投诉?

每个月花几十万买服务器,却无法保障用户体验?

使用教程:

前端监控接入:

https://help.aliyun.com/documentdetail/106086.html

应用监控接入:

https://help.aliyun.com/documentdetail/63796.html

自定义监控:

https://help.aliyun.com/document_detail/47474.html

获取方式:(收费)

工具地址:

https://www.aliyun.com/product/arms

六、静态开源站点搭建工具 Docsite

Docsite一款集官网、文档、博客和社区为一体的静态开源站点的解决方案,具有简单易上手、上手不撒手的特质,同时支持 react 和静态渲染、PC 端和移动端、支持中英文国际化、SEO、markdown 文档、全局站点搜索、站点风格自定义、页面自定义等功能。

使用教程:

https://docsite.js.org/zh-cn/d ... .html

获取方式:(免费)

项目地址:

https://github.com/txd-team/docsite

七、Android 平台上的秒级编译方案 Freeline

Freeline 可以充分利用缓存文件,在几秒钟内迅速地对代码的改动进行编译并部署到设备上,有效地减少了日常开发中的大量重新编译与安装的耗时。Freeline 最快捷的使用方法就是直接安装 Android Studio 插件。

使用教程:

https://github.com/alibaba/fre ... zh.md

获取方式:(免费)

项目地址:

https://github.com/alibaba/freeline

八、性能测试工具 PTS

PTS可以模拟大量用户访问业务的场景,任务随时发起,免去搭建和维护成本,支持 JMeter 脚本转化为 PTS 压测,同样支持原生 JMeter 引擎进行压测。

使用教程:

https://help.aliyun.com/document_detail/70290.html

获取方式:(收费)

工具地址:

https://www.aliyun.com/product/pts

九、云效开发者工具 KT

KT 可以简化在 Kubernetes 下进行联调测试的复杂度,提高基于 Kubernetes 的研发效率。

使用教程:

https://yq.aliyun.com/articles/690519

获取方式:(免费)

工具地址:

https://yq.aliyun.com/download/3393

十、架构可视化工具 AHAS

AHAS为 K8s 等容器环境提供了架构可视化的功能,同时,具有故障注入式高可用能力评测和一键流控降级等功能,可以快速低成本的提升应用可用性。

工具的使用场景:

服务化改造过程中,想精确的了解资源实例的构成和交互情况,实现架构的可视化?

想引入真实的故障场景和演练模型?

低门槛获得流控、降级功能?

使用教程:

https://help.aliyun.com/document_detail/90323.html

获取方式:(免费)

工具地址:

https://www.aliyun.com/product/ahas

十一、数据处理工具 EasyExcel

EasyExcel 是一个用来对 Java 进行解析、生成 Excel 的框架,它重写了 poi 对 07 版 Excel 的解析,原本一个 3M 的 Excel 用 POI sax 需要 100M 左右内存,EasyExcel 可降低到 KB 级别,并且再大的 excel 也不会出现内存溢出的情况。03 版依赖 POI 的 sax 模式。在上层做了模型转换的封装,让使用者更加简单方便。

使用教程:

https://github.com/alibaba/eas ... rt.md

获取方式:(开源)

https://github.com/alibaba/easyexcel

十二、iOS 类工具 HandyJSON

HandyJSON 是一个用于 Swift 语言中的 JSON 序列化 / 反序列化库。

与其他流行的 Swift JSON 库相比,HandyJSON 的特点是,它支持纯 Swift 类,使用也简单。它反序列化时 (把 JSON 转换为 Model) 不要求 Model 从 NSObject 继承 (因为它不是基于 KVC 机制),也不要求你为 Model 定义一个 Mapping 函数。只要你定义好 Model 类,声明它服从 HandyJSON 协议,HandyJSON 就能自行以各个属性的属性名为 Key,从 JSON 串中解析值。

使用教程:

https://github.com/alibaba/Han ... cn.md

获取方式:(开源)

https://github.com/alibaba/HandyJSON

十三、云上资源和应用部署工具 EDAS Serverless

EDAS Serverless一款基于 Kubernetes,面向应用和微服务的 Serverless 平台。用户无需管理和维护集群与服务器,即可通过镜像、WAR 包和 JAR 包,快速创建原生支持 Kubernetes 的容器应用,同时支持 Spring Cloud 和 Dubbo 等主流微服务框架。

使用教程:

https://help.aliyun.com/docume ... .html

获取方式:(公测期间免费)

https://help.aliyun.com/document_detail/97792.html

十四、数据库连接池 Druid

Druid 是 Java 语言下的数据库连接池,它能够提供强大的监控和扩展功能。

使用教程:

https://github.com/alibaba/druid/wiki/ 常见问题

获取方式:(开源)

http://central.maven.org/maven2/com/alibaba/druid/

十五、Java 工具集 Dragonwell

Alibaba Dragonwell 是阿里巴巴内部 OpenJDK 定制版 AJDK 的开源版本, AJDK 为在线电商,金融,物流做了结合业务场景的优化,运行在超大规模的,100,000+ 服务器的阿里巴巴数据中心。 Alibaba Dragonwell 与 Java SE 标准兼容,目前仅支持 Linux/x86_64 平台。

使用教程:

https://github.com/alibaba/dragonwell8/wiki/ 阿里巴巴 Dragonwell8 用户指南

获取方式:(开源)

https://github.com/alibaba/dragonwell8


上一篇: Java首度承认PK失败,愿永久服软Python!
  查看全部
从人工到自动化,从重复到创新,技术演进的历程中,伴随着开发者工具类产品的发展。

阿里巴巴将自身在各类业务场景下的技术积淀,通过开源、云上实现或工具等形式对外开放,本文将精选了一些阿里巴巴的开发者工具,希望能帮助开发者们提高开发效率、更优雅的写代码。

由于开发者涉及的技术领域众多,笔者仅从自己熟悉的领域,以后端开发者的视角盘点平时可能用得到的工具。每个工具按照以下几点进行介绍:

工具名称和简介

使用场景

使用教程

获取方式

一、Java 线上诊断工具 Arthas

Arthas 阿里巴巴 2018 年 9 月开源的一款 Java 线上诊断工具。

工具的使用场景:

这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?

我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?

遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?

线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现!

是否有一个全局视角来查看系统的运行状况?

有什么办法可以监控到 JVM 的实时运行状态?

Arthas 支持 JDK 6+,支持 Linux/Mac/Windows,采用命令行交互模式,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断。

使用教程:

基础教程:

https://alibaba.github.io/arth ... asics

进阶教程:

https://alibaba.github.io/arth ... anced

获取方式:(免费)

开源地址:

https://github.com/alibaba/arthas

二、IDE 插件 Cloud Toolkit

Cloud Toolkit是一款 IDE 插件,可以帮助开发者更高效地开发、测试、诊断并部署应用。通过 Cloud Toolkit,开发者能够方便地将本地应用一键部署到任意机器(本地或云端),并内置 Arthas 诊断、高效执行终端命令和 SQL 等,提供 IntelliJ IDEA 版,Eclipse 版,PyCharm 版和 Maven 版。

工具的使用场景:

每次修改完代码后,是否正在经历反复地打包?

在 Maven 、Git 以及其他运维脚本和工具的之间频繁切换?

采用 SCP 工具上传?使用 XShell 或 SecureCRT 登陆服务器?替换部署包?重启?

文件上传到服务器指定目录,在各种 FTP、SCP 工具之间频繁切换 ?

使用教程:

IntelliJ IDEA 版:

https://help.aliyun.com/document_detail/98762.html

Eclipse 版:

https://help.aliyun.com/document_detail/29970.html

PyCharm 版:

https://help.aliyun.com/docume ... .html

Maven 版:

https://help.aliyun.com/docume ... .html

获取方式:(免费) 工具地址:

https://www.aliyun.com/product/cloudtoolkit

三、混沌实验注入工具 ChaosBlade

ChaosBlade是一款遵循混沌工程实验原理,提供丰富故障场景实现,帮助分布式系统提升容错性和可恢复性的混沌工程工具,可实现底层故障的注入,提供了延迟、异常、返回特定值、修改参数值、重复调用和 try-catch 块异常等异常场景。

工具的使用场景:

微服务的容错能力不易衡量?

容器编排配置是否合理无法验证?

PaaS 层健壮性的测试工作无从入手?

使用教程:

https://github.com/chaosblade-io/chaosblade/wiki/ 新手指南

获取方式:(免费)

开源地址:

https://github.com/chaosblade-io/chaosblade/wiki/ 新手指南

四、Java 代码规约扫描插件

该插件用于检测 Java 代码中存在的不规范的位置,并给予提示。规约插件是采用 Kotlin 语言开发。

使用教程:

IDEA 插件使用文档:

https://github.com/alibaba/p3c/wiki/IDEA 插件使用文档

Eclipse 插件使用文档:

https://github.com/alibaba/p3c/wiki/Eclipse 插件使用文档

获取方式:(免费)

开源地址:

https://github.com/alibaba/p3c

五、应用实时监控工具 ARMS

ARMS是一款 APM 类的监控工具,提供前端、应用、自定义监控 3 类监控选项,可快速构建实时的应用性能和业务监控能力。

工具的使用场景:

晚上 10 点收到 37 条报警信息,你却无从下手?

当我们发现问题的时候,客户 / 业务方已经发起投诉?

每个月花几十万买服务器,却无法保障用户体验?

使用教程:

前端监控接入:

https://help.aliyun.com/documentdetail/106086.html

应用监控接入:

https://help.aliyun.com/documentdetail/63796.html

自定义监控:

https://help.aliyun.com/document_detail/47474.html

获取方式:(收费)

工具地址:

https://www.aliyun.com/product/arms

六、静态开源站点搭建工具 Docsite

Docsite一款集官网、文档、博客和社区为一体的静态开源站点的解决方案,具有简单易上手、上手不撒手的特质,同时支持 react 和静态渲染、PC 端和移动端、支持中英文国际化、SEO、markdown 文档、全局站点搜索、站点风格自定义、页面自定义等功能。

使用教程:

https://docsite.js.org/zh-cn/d ... .html

获取方式:(免费)

项目地址:

https://github.com/txd-team/docsite

七、Android 平台上的秒级编译方案 Freeline

Freeline 可以充分利用缓存文件,在几秒钟内迅速地对代码的改动进行编译并部署到设备上,有效地减少了日常开发中的大量重新编译与安装的耗时。Freeline 最快捷的使用方法就是直接安装 Android Studio 插件。

使用教程:

https://github.com/alibaba/fre ... zh.md

获取方式:(免费)

项目地址:

https://github.com/alibaba/freeline

八、性能测试工具 PTS

PTS可以模拟大量用户访问业务的场景,任务随时发起,免去搭建和维护成本,支持 JMeter 脚本转化为 PTS 压测,同样支持原生 JMeter 引擎进行压测。

使用教程:

https://help.aliyun.com/document_detail/70290.html

获取方式:(收费)

工具地址:

https://www.aliyun.com/product/pts

九、云效开发者工具 KT

KT 可以简化在 Kubernetes 下进行联调测试的复杂度,提高基于 Kubernetes 的研发效率。

使用教程:

https://yq.aliyun.com/articles/690519

获取方式:(免费)

工具地址:

https://yq.aliyun.com/download/3393

十、架构可视化工具 AHAS

AHAS为 K8s 等容器环境提供了架构可视化的功能,同时,具有故障注入式高可用能力评测和一键流控降级等功能,可以快速低成本的提升应用可用性。

工具的使用场景:

服务化改造过程中,想精确的了解资源实例的构成和交互情况,实现架构的可视化?

想引入真实的故障场景和演练模型?

低门槛获得流控、降级功能?

使用教程:

https://help.aliyun.com/document_detail/90323.html

获取方式:(免费)

工具地址:

https://www.aliyun.com/product/ahas

十一、数据处理工具 EasyExcel

EasyExcel 是一个用来对 Java 进行解析、生成 Excel 的框架,它重写了 poi 对 07 版 Excel 的解析,原本一个 3M 的 Excel 用 POI sax 需要 100M 左右内存,EasyExcel 可降低到 KB 级别,并且再大的 excel 也不会出现内存溢出的情况。03 版依赖 POI 的 sax 模式。在上层做了模型转换的封装,让使用者更加简单方便。

使用教程:

https://github.com/alibaba/eas ... rt.md

获取方式:(开源)

https://github.com/alibaba/easyexcel

十二、iOS 类工具 HandyJSON

HandyJSON 是一个用于 Swift 语言中的 JSON 序列化 / 反序列化库。

与其他流行的 Swift JSON 库相比,HandyJSON 的特点是,它支持纯 Swift 类,使用也简单。它反序列化时 (把 JSON 转换为 Model) 不要求 Model 从 NSObject 继承 (因为它不是基于 KVC 机制),也不要求你为 Model 定义一个 Mapping 函数。只要你定义好 Model 类,声明它服从 HandyJSON 协议,HandyJSON 就能自行以各个属性的属性名为 Key,从 JSON 串中解析值。

使用教程:

https://github.com/alibaba/Han ... cn.md

获取方式:(开源)

https://github.com/alibaba/HandyJSON

十三、云上资源和应用部署工具 EDAS Serverless

EDAS Serverless一款基于 Kubernetes,面向应用和微服务的 Serverless 平台。用户无需管理和维护集群与服务器,即可通过镜像、WAR 包和 JAR 包,快速创建原生支持 Kubernetes 的容器应用,同时支持 Spring Cloud 和 Dubbo 等主流微服务框架。

使用教程:

https://help.aliyun.com/docume ... .html

获取方式:(公测期间免费)

https://help.aliyun.com/document_detail/97792.html

十四、数据库连接池 Druid

Druid 是 Java 语言下的数据库连接池,它能够提供强大的监控和扩展功能。

使用教程:

https://github.com/alibaba/druid/wiki/ 常见问题

获取方式:(开源)

http://central.maven.org/maven2/com/alibaba/druid/

十五、Java 工具集 Dragonwell

Alibaba Dragonwell 是阿里巴巴内部 OpenJDK 定制版 AJDK 的开源版本, AJDK 为在线电商,金融,物流做了结合业务场景的优化,运行在超大规模的,100,000+ 服务器的阿里巴巴数据中心。 Alibaba Dragonwell 与 Java SE 标准兼容,目前仅支持 Linux/x86_64 平台。

使用教程:

https://github.com/alibaba/dragonwell8/wiki/ 阿里巴巴 Dragonwell8 用户指南

获取方式:(开源)

https://github.com/alibaba/dragonwell8


上一篇: Java首度承认PK失败,愿永久服软Python!
 
0
回复

直播:新一代实时音视频底层技术与应用实践 直播 公开课

回复

beyond 发起了问题 • 1 人关注 • 413 次浏览 • 2019-05-09 18:58 • 来自相关话题

0
回复

开发直播软件必须要用直播系统源码才行 直播平台开发 直播

回复

q2466131704 发起了问题 • 1 人关注 • 434 次浏览 • 2019-05-09 16:40 • 来自相关话题

0
评论

史上最完整的官方Oracle OCP中文文教材,快来下载吧!! 下载

beyond 发表了文章 • 332 次浏览 • 2019-05-09 16:18 • 来自相关话题

内含文件:
1、Oracle Database 11g:SQL 基础 学生指南第1 册 
2、Oracle Database 11g:SQL 基础 学生指南第2 册 
3、Oracle Database 11g:数据库管理- 课堂练习I 学生指南第1 册
4、Oracle Database 11g:数据库管理- 课堂练习II 学生指南第1 册 
5、Oracle Database 11g:数据库管理- 课堂练习I 学生指南第2 册 
6、Oracle Database 11g:数据库管理- 课堂练习II 学生指南第2 册 
7、Oracle Da等等 查看全部
内含文件:
1、Oracle Database 11g:SQL 基础 学生指南第1 册 
2、Oracle Database 11g:SQL 基础 学生指南第2 册 
3、Oracle Database 11g:数据库管理- 课堂练习I 学生指南第1 册
4、Oracle Database 11g:数据库管理- 课堂练习II 学生指南第1 册 
5、Oracle Database 11g:数据库管理- 课堂练习I 学生指南第2 册 
6、Oracle Database 11g:数据库管理- 课堂练习II 学生指南第2 册 
7、Oracle Da等等
0
评论

Android短视频开发需要注意些什么?这是我的建议 抖音开发 抖音源码 Android短视频开发 短视频源码 短视频程序

QQ1449701271 发表了文章 • 219 次浏览 • 2019-05-08 16:05 • 来自相关话题

在2017年快手、抖音兴起后,短视频app成为了互联网行业炙手可热的宝贝,无数短视频开发者在前两者的成功中找到了商机,一窝蜂的扎入到短视频开发中,而不少公司在运营前期仅做单端开发,将运营重心集中起来,这种方法是非常聪明的。

本篇文章就从Android短视频开发过程中要注意的几点重点来讲一讲短视频APP该如何开发。

一、难点——功能方面

APP的基础功能必须完备,各项机制可以复刻市面上已有的成功案例,也可以自行研发,关键点就在于与众不同的新功能。

1. 基础功能指:美颜等各种特效、拍摄剪辑小视频的能力、推荐列表等视频列表、分享功能、点赞功能、评论功能等短视频APP必有的功能。

2. 各项机制如:推荐机制、拉黑机制、鉴黄机制、信息流广告密度机制等,通常是一个APP一个样,比如抖音和快手的推荐机制就不同,抖音的推荐机制将流量聚集在少数视频上而快手将流量聚集在更多的用户身上。

3. 层出不穷又与众不同的新功能是与其他APP拉开差距最有用的手段,但如果你真的完全想不出新点子来,也可以“取百家之长”学习其他APP身上的亮眼功能,比如学习吸引电商入驻的抖音购物车功能和快手小店功能、比如加入直播系统增加收入、比如自微博起就非常好用的“话题功能”……

二、重点——风格定位

Android短视频开发前就要想好软件的风格定位,因为这是吸引特定人群的法宝,经典案例有“一罐”目标群众是心情沮丧又无处诉说的人、“小红书”目标群众是热爱美妆的精致姑娘和热爱金钱的美妆电商、抖音目标群众是向往时尚与潮流的男孩女孩。

什么样的定位产生什么风格的短视频平台,平台内的内容也会逐渐向运营方期待的的方向转移。

三、注意点——服务器的选择

服务器通常可以使用VPS服务器、云服务器、独立服务器等,因为不用提前购买硬件、相对高性价比等原因,通常我们会建议用户使用云服务器。

如果开始使用的是独立服务器,后期用户增加,可以把程序分布式部署到不同服务器上,以减轻服务器的压力。

短视频拍摄剪辑门槛的降低、流量的降价提速、三方提供的特效滤镜不断更新换代使得短视频越来越受到用户的喜爱,Android短视频开发也因此越来越互联网行业的喜爱。更多与Android短视频开发行业相关的资讯和分析会在以后逐渐放出,敬请期待,需要的朋友请关注我。

声明:文章为原创内容,转载请注明原文链接及作者 查看全部
在2017年快手、抖音兴起后,短视频app成为了互联网行业炙手可热的宝贝,无数短视频开发者在前两者的成功中找到了商机,一窝蜂的扎入到短视频开发中,而不少公司在运营前期仅做单端开发,将运营重心集中起来,这种方法是非常聪明的。

本篇文章就从Android短视频开发过程中要注意的几点重点来讲一讲短视频APP该如何开发。

一、难点——功能方面

APP的基础功能必须完备,各项机制可以复刻市面上已有的成功案例,也可以自行研发,关键点就在于与众不同的新功能。

1. 基础功能指:美颜等各种特效、拍摄剪辑小视频的能力、推荐列表等视频列表、分享功能、点赞功能、评论功能等短视频APP必有的功能。

2. 各项机制如:推荐机制、拉黑机制、鉴黄机制、信息流广告密度机制等,通常是一个APP一个样,比如抖音和快手的推荐机制就不同,抖音的推荐机制将流量聚集在少数视频上而快手将流量聚集在更多的用户身上。

3. 层出不穷又与众不同的新功能是与其他APP拉开差距最有用的手段,但如果你真的完全想不出新点子来,也可以“取百家之长”学习其他APP身上的亮眼功能,比如学习吸引电商入驻的抖音购物车功能和快手小店功能、比如加入直播系统增加收入、比如自微博起就非常好用的“话题功能”……

二、重点——风格定位

Android短视频开发前就要想好软件的风格定位,因为这是吸引特定人群的法宝,经典案例有“一罐”目标群众是心情沮丧又无处诉说的人、“小红书”目标群众是热爱美妆的精致姑娘和热爱金钱的美妆电商、抖音目标群众是向往时尚与潮流的男孩女孩。

什么样的定位产生什么风格的短视频平台,平台内的内容也会逐渐向运营方期待的的方向转移。

三、注意点——服务器的选择

服务器通常可以使用VPS服务器、云服务器、独立服务器等,因为不用提前购买硬件、相对高性价比等原因,通常我们会建议用户使用云服务器。

如果开始使用的是独立服务器,后期用户增加,可以把程序分布式部署到不同服务器上,以减轻服务器的压力。

短视频拍摄剪辑门槛的降低、流量的降价提速、三方提供的特效滤镜不断更新换代使得短视频越来越受到用户的喜爱,Android短视频开发也因此越来越互联网行业的喜爱。更多与Android短视频开发行业相关的资讯和分析会在以后逐渐放出,敬请期待,需要的朋友请关注我。

声明:文章为原创内容,转载请注明原文链接及作者
0
评论

直播app制作须知:直播行业的卖点和机遇在哪里? 直播 直播app制作

QQ1449701271 发表了文章 • 198 次浏览 • 2019-05-08 14:44 • 来自相关话题

直播行业发展时间已经很久了,建议新入局的玩家在进行直播app制作前要想好,直播平台的定位是什么,清晰明确的定位更利于定位受众人群,也更利于直播app制作时的对接和开发。

一、 直播发展契机
早在2012年,9158视频互动交友平台就被爆出在2011年收入近10亿人民币。依托网络,直播平台飞速发展,几年后,坐上了手机移动化的快车,随着手机市场的发展和资本市场对直播行业的看好,2015年,直播行业千播大战爆发。
时间线继续前进,直到2019年,直播行业依然是很赚钱的行业,随着电商、教育等元素的不断加入,随着短视频、主播PK等功能的开发,直播变得越来越好玩。
直播app制作所需的价格也逐渐走低,2015年,纯定制开发一套直播app需要七八十万,开源直播源码也要四五十万一套,而现在,一套运营级别的开源直播系统也不过8w左右。封装版本还会更低。

二、 直播卖点在哪
1、 涉足范围广
直播app制作时,会在直播平台中内置分类列表,每个直播平台也都会有各自的定位,比如斗鱼主打游戏直播,虎牙宣称自己是弹幕交互直播平台,陌陌主打社交等。
即便已经有了各种各样的定位和主打产品,直播软件内的分类中仍有很多分类,比如美食直播、游戏直播、户外直播等等,直播内容涉足领域十分广泛,可选择性强。
2、 没有广告
如果看电视,广告一定会在节目表演到最精彩的时候插播一段广告,这对于观看者而言是非常不友好的,而看网络直播就不会有这样情况产生,主播只要不下线,用户可以一直看,很多公会都会要求主播每天直播大于多少个小时才能拿到全额底薪,这对用户而言是非常友好的。
直播app制作时也会为平台变现预留一定的广告位,比如轮播图、开屏广告等。
3、 互动性强
互动性强体现在两方面,一方面,主播可能会看到你的弹幕和评论,并作出回复,另一方面,共同观看直播的水友们也可能在直播间内回应你,之前在B站,有主播直播看猫和老鼠,然后主播去吃饭了,电脑就放那儿播着,也没人抱怨,大家一边看,一边发弹幕聊天怀念自己的童年,这样温馨的气氛可比自己观看老电视剧而不被人理解要强多了。
4、 存在感强
每一次发送礼物都会得到主播的感谢,带着头衔进场会有特殊效果出现,存在感、人前显贵是可以拿钱买的,这种轻而易举就能得到的尊重和快乐是非常诱人的。

以上就是本文的全部内容,更多与直播app制作相关的资讯和分析会在以后逐渐放出,敬请期待,需要的朋友请关注我。
声明:文章为原创内容,转载请注明原文链接及作者 查看全部
直播行业发展时间已经很久了,建议新入局的玩家在进行直播app制作前要想好,直播平台的定位是什么,清晰明确的定位更利于定位受众人群,也更利于直播app制作时的对接和开发。

一、 直播发展契机
早在2012年,9158视频互动交友平台就被爆出在2011年收入近10亿人民币。依托网络,直播平台飞速发展,几年后,坐上了手机移动化的快车,随着手机市场的发展和资本市场对直播行业的看好,2015年,直播行业千播大战爆发。
时间线继续前进,直到2019年,直播行业依然是很赚钱的行业,随着电商、教育等元素的不断加入,随着短视频、主播PK等功能的开发,直播变得越来越好玩。
直播app制作所需的价格也逐渐走低,2015年,纯定制开发一套直播app需要七八十万,开源直播源码也要四五十万一套,而现在,一套运营级别的开源直播系统也不过8w左右。封装版本还会更低。

二、 直播卖点在哪
1、 涉足范围广
直播app制作时,会在直播平台中内置分类列表,每个直播平台也都会有各自的定位,比如斗鱼主打游戏直播,虎牙宣称自己是弹幕交互直播平台,陌陌主打社交等。
即便已经有了各种各样的定位和主打产品,直播软件内的分类中仍有很多分类,比如美食直播、游戏直播、户外直播等等,直播内容涉足领域十分广泛,可选择性强。
2、 没有广告
如果看电视,广告一定会在节目表演到最精彩的时候插播一段广告,这对于观看者而言是非常不友好的,而看网络直播就不会有这样情况产生,主播只要不下线,用户可以一直看,很多公会都会要求主播每天直播大于多少个小时才能拿到全额底薪,这对用户而言是非常友好的。
直播app制作时也会为平台变现预留一定的广告位,比如轮播图、开屏广告等。
3、 互动性强
互动性强体现在两方面,一方面,主播可能会看到你的弹幕和评论,并作出回复,另一方面,共同观看直播的水友们也可能在直播间内回应你,之前在B站,有主播直播看猫和老鼠,然后主播去吃饭了,电脑就放那儿播着,也没人抱怨,大家一边看,一边发弹幕聊天怀念自己的童年,这样温馨的气氛可比自己观看老电视剧而不被人理解要强多了。
4、 存在感强
每一次发送礼物都会得到主播的感谢,带着头衔进场会有特殊效果出现,存在感、人前显贵是可以拿钱买的,这种轻而易举就能得到的尊重和快乐是非常诱人的。

以上就是本文的全部内容,更多与直播app制作相关的资讯和分析会在以后逐渐放出,敬请期待,需要的朋友请关注我。
声明:文章为原创内容,转载请注明原文链接及作者
0
评论

做Android短视频开发要知道,这四点不可忽视 软件开发 短视频软件开发

QQ1449701271 发表了文章 • 204 次浏览 • 2019-05-06 14:29 • 来自相关话题

短视频app风靡已久,很多玩家都已入局,前有腾讯微视、快手、抖音等老玩家,后有百度等新玩家,那么,想要入局短视频app,前期又不想投入太多资金到软件开发上,我们就可以先只做单端(ios/Android)的开发,把运营重心放在单端上,节约资金投入和人力成本

一、 Android短视频开发必备功能

1、 基础功能

摄录功能、多端登录、多渠道分享、私信功能等最为基础的功能是要开发完备的,这些功能就像五星酒店里的地板砖,有的时候也看不出多重要来,没有的话,就会让用户感觉不舒服了。

2、 美颜特效

美颜特效功能在短视频app中被用到了极致,作为短视频app的个性能功能,我们对美颜、萌颜、特效的要求不仅仅是“有”而且要“精美”“更新快”,这要求我们选择更优秀的SDK厂家进行合作

3、 广告投放

广告投放功能是短视频app软件中最常用的盈利功能,首屏广告、信息流广告、话题挑战广告、贴纸广告等方式都是常见的短视频软件广告盈利方式。

二、 Android短视频开发升级功能

1、 直播功能:直播功能是能够进一步增强主播、平台盈利能力,增强主播影响力和用户粘性的可靠功能,通过直播收礼物,能够刺激用户直接消费。

2、 社区功能:社区功能为用户之间的交流沟通提供了帮助,能够有效建成社交关系网,增加用户黏性。

这两点功能并非短视频app开发必备功能,而是可以有选择性的添加的升级功能,没有它的时候用户也不会觉得很不方便,但一旦有了它,用户会更乐于使用该功能。

三、 软件开发的三种方式优劣对比

软件开发方法有三种,原生开发、HTML5开发和混合开发,原生开发是指使用某一系统(如安卓/ios)官方提供的开发语言、开发工具进行App开发,这种开发方式的优势是,在该系统上,原生开发的软件的交互体验和性能是最好的,但缺点是需要把Android端和IOS端分开开发,写两套界面,开发时间比较长。常用Android短视频开发工具有java、Android studio等

而HTML5开发是利用Web技术进行的App开发,这种开发方法局限性很大,一般不采用这种方法。

混合开发是很多外包团队常用的开发方法,它牺牲了一定的系统流畅性来提高开发效率、节省开发成本。

综上所述我们可以看出,原生开发的软件对于运营方而言是最好用的,只做Android短视频开发也不会浪费太多的时间。

四、 Android短视频开发常用开发工具

分享一套常用的Android短视频开发环境、开发工具、开发语言

1. Android短视频端开发环境:Android studio 2.2

2. Android短视频端开发工具:Java

3. 服务端:基础环境LAMP(linux ,apache,mysql,php )或者LNMP(linux,ngnix,mysql,php)

4. 缓存服务Redis

5. Android短视频端开发框架:服务端主要采用两个,整个PC端是Thinkphp3.2,接口部分是π框架(http://www.phalapi.net/)

以上就是本篇文章的全部内容,更多与Android短视频开发相关的行业资讯和分析会在以后逐渐放出,敬请期待,需要的朋友请关注我。 查看全部
短视频app风靡已久,很多玩家都已入局,前有腾讯微视、快手、抖音等老玩家,后有百度等新玩家,那么,想要入局短视频app,前期又不想投入太多资金到软件开发上,我们就可以先只做单端(ios/Android)的开发,把运营重心放在单端上,节约资金投入和人力成本

一、 Android短视频开发必备功能

1、 基础功能

摄录功能、多端登录、多渠道分享、私信功能等最为基础的功能是要开发完备的,这些功能就像五星酒店里的地板砖,有的时候也看不出多重要来,没有的话,就会让用户感觉不舒服了。

2、 美颜特效

美颜特效功能在短视频app中被用到了极致,作为短视频app的个性能功能,我们对美颜、萌颜、特效的要求不仅仅是“有”而且要“精美”“更新快”,这要求我们选择更优秀的SDK厂家进行合作

3、 广告投放

广告投放功能是短视频app软件中最常用的盈利功能,首屏广告、信息流广告、话题挑战广告、贴纸广告等方式都是常见的短视频软件广告盈利方式。

二、 Android短视频开发升级功能

1、 直播功能:直播功能是能够进一步增强主播、平台盈利能力,增强主播影响力和用户粘性的可靠功能,通过直播收礼物,能够刺激用户直接消费。

2、 社区功能:社区功能为用户之间的交流沟通提供了帮助,能够有效建成社交关系网,增加用户黏性。

这两点功能并非短视频app开发必备功能,而是可以有选择性的添加的升级功能,没有它的时候用户也不会觉得很不方便,但一旦有了它,用户会更乐于使用该功能。

三、 软件开发的三种方式优劣对比

软件开发方法有三种,原生开发、HTML5开发和混合开发,原生开发是指使用某一系统(如安卓/ios)官方提供的开发语言、开发工具进行App开发,这种开发方式的优势是,在该系统上,原生开发的软件的交互体验和性能是最好的,但缺点是需要把Android端和IOS端分开开发,写两套界面,开发时间比较长。常用Android短视频开发工具有java、Android studio等

而HTML5开发是利用Web技术进行的App开发,这种开发方法局限性很大,一般不采用这种方法。

混合开发是很多外包团队常用的开发方法,它牺牲了一定的系统流畅性来提高开发效率、节省开发成本。

综上所述我们可以看出,原生开发的软件对于运营方而言是最好用的,只做Android短视频开发也不会浪费太多的时间。

四、 Android短视频开发常用开发工具

分享一套常用的Android短视频开发环境、开发工具、开发语言

1. Android短视频端开发环境:Android studio 2.2

2. Android短视频端开发工具:Java

3. 服务端:基础环境LAMP(linux ,apache,mysql,php )或者LNMP(linux,ngnix,mysql,php)

4. 缓存服务Redis

5. Android短视频端开发框架:服务端主要采用两个,整个PC端是Thinkphp3.2,接口部分是π框架(http://www.phalapi.net/

以上就是本篇文章的全部内容,更多与Android短视频开发相关的行业资讯和分析会在以后逐渐放出,敬请期待,需要的朋友请关注我。
0
评论

vue仿微信网页端聊天室|仿微信客户端vue版 vue聊天室 vue仿微信web端 vueWebChat聊天 vue聊天IM

xiaoyan2015 发表了文章 • 581 次浏览 • 2019-05-06 11:39 • 来自相关话题

基于Vue2.5.6+Vuex+vue-router+vue-gemini-scrollbar+swiper+elementUI等技术开发的仿微信web端聊天室,实现了发送消息、表情(动图),图片、视频预览,仿微信右键菜单、网页截图可直接粘贴至编辑框发送。
https://www.cnblogs.com/xiaoyan2017/p/10793728.html
 

































































 
/*
* 页面地址路由js
*/
import Vue from 'vue'
import Router from 'vue-router'
import store from '../vuex'

// 通过改写router.go方法,当new Router 实例就包含back方法
Router.prototype.back = function(){
window.history.go(-1)
}

Vue.use(Router)

const router = new Router({
routes: [
// 登录、注册
{
path: '/login',
component: resolve => require(['../views/auth/login'], resolve),
meta: { hideSideBar: true },
},
{
path: '/register',
component: resolve => require(['../views/auth/register'], resolve),
meta: { hideSideBar: true },
},

// 首页、通讯录、动态圈
{
path: '/',
redirect: '/chat',
component: resolve => require(['../views/index'], resolve),
meta: { requireAuth: true },
},
{
path: '/contact',
redirect: '/contact/new-friends',
component: resolve => require(['../views/contact'], resolve),
meta: { requireAuth: true },
},
{
path: '/contact/new-friends',
component: resolve => require(['../views/contact/new-friends'], resolve),
meta: { requireAuth: true },
},
{
path: '/contact/uinfo',
component: resolve => require(['../views/contact/uinfo'], resolve),
},
{
path: '/qzone',
component: resolve => require(['../views/qzone'], resolve),
},
{
path: '/qzone/write',
component: resolve => require(['../views/qzone/write'], resolve),
meta: { requireAuth: true },
},
{
path: '/my',
component: resolve => require(['../views/my'], resolve),
meta: { requireAuth: true },
},

// 聊天页面
{
path: '/chat',
component: resolve => require(['../views/chat/group-chat'], resolve),
meta: { requireAuth: true }
},
{
path: '/chat/single-chat',
component: resolve => require(['../views/chat/single-chat'], resolve),
meta: { requireAuth: true }
},
{
path: '/chat/group-info',
component: resolve => require(['../views/chat/group-info'], resolve),
meta: { requireAuth: true }
}

]
});

// 注册全局钩子(拦截登录状态)
router.beforeEach((to, from, next) => {
const token = store.state.token
// 判断该路由地址是否需要登录权限
if(to.meta.requireAuth){
// 判断token是否存在
if(token){
next()
}else{
next()
// 未登录授权
wcPop({
content: '还未登录授权!', anim: 'shake', style: 'background:#e03b30;color:#fff;', time: 2,
end: function(){
next({ path: '/login' })
}
});
}
}else{
next()
}
})

export default routerimport Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

import {mm} from '../common.js'

export default new Vuex.Store({
state: {
user: window.sessionStorage.getItem('user'),
token: window.sessionStorage.getItem('token'), //登录标识
onlineStatus: { status: 'online', text: '在线' }, //用户在线状态 【 online:在线、 offline:离开、 busy:忙碌、 invisible:隐身】
},
mutations: {
// 将token存储到sessionStorage
SET_TOKEN (state, data){
state.token = data;
window.sessionStorage.setItem('token', data);
},
// 获取用户名
SET_USER (state, data){
state.user = data;
window.sessionStorage.setItem('user', data);
},
// 退出
LOGOUT (state){
state.user = null;
state.token = null;
window.sessionStorage.removeItem('user');
window.sessionStorage.removeItem('token');
},
},
getters:{}
})

// 这种写法也ok
// export default () => {
// return new Vuex.Store({
// state: {},
// mutations: {},
// actions: {},
// })
// }




欢迎大家一起交流、学习  Q:282310962  wx:xy190310
  查看全部
基于Vue2.5.6+Vuex+vue-router+vue-gemini-scrollbar+swiper+elementUI等技术开发的仿微信web端聊天室,实现了发送消息、表情(动图),图片、视频预览,仿微信右键菜单、网页截图可直接粘贴至编辑框发送。
https://www.cnblogs.com/xiaoyan2017/p/10793728.html
 

009360截图20190429230828577.png


002360截图20190429225404663.png


003360截图20190429225544303.png


004360截图20190429225824919.png


005360截图20190429225945884.png


006360截图20190429230254807.png


007360截图20190429230405160.png


008360截图20190429230519310.png


012360截图20190429231530721.png


013360截图20190429231625431.png


014360截图20190429231721255.png


015360截图20190429231737056.png


016360截图20190429231834918.png

 
/*
* 页面地址路由js
*/
import Vue from 'vue'
import Router from 'vue-router'
import store from '../vuex'

// 通过改写router.go方法,当new Router 实例就包含back方法
Router.prototype.back = function(){
window.history.go(-1)
}

Vue.use(Router)

const router = new Router({
routes: [
// 登录、注册
{
path: '/login',
component: resolve => require(['../views/auth/login'], resolve),
meta: { hideSideBar: true },
},
{
path: '/register',
component: resolve => require(['../views/auth/register'], resolve),
meta: { hideSideBar: true },
},

// 首页、通讯录、动态圈
{
path: '/',
redirect: '/chat',
component: resolve => require(['../views/index'], resolve),
meta: { requireAuth: true },
},
{
path: '/contact',
redirect: '/contact/new-friends',
component: resolve => require(['../views/contact'], resolve),
meta: { requireAuth: true },
},
{
path: '/contact/new-friends',
component: resolve => require(['../views/contact/new-friends'], resolve),
meta: { requireAuth: true },
},
{
path: '/contact/uinfo',
component: resolve => require(['../views/contact/uinfo'], resolve),
},
{
path: '/qzone',
component: resolve => require(['../views/qzone'], resolve),
},
{
path: '/qzone/write',
component: resolve => require(['../views/qzone/write'], resolve),
meta: { requireAuth: true },
},
{
path: '/my',
component: resolve => require(['../views/my'], resolve),
meta: { requireAuth: true },
},

// 聊天页面
{
path: '/chat',
component: resolve => require(['../views/chat/group-chat'], resolve),
meta: { requireAuth: true }
},
{
path: '/chat/single-chat',
component: resolve => require(['../views/chat/single-chat'], resolve),
meta: { requireAuth: true }
},
{
path: '/chat/group-info',
component: resolve => require(['../views/chat/group-info'], resolve),
meta: { requireAuth: true }
}

]
});

// 注册全局钩子(拦截登录状态)
router.beforeEach((to, from, next) => {
const token = store.state.token
// 判断该路由地址是否需要登录权限
if(to.meta.requireAuth){
// 判断token是否存在
if(token){
next()
}else{
next()
// 未登录授权
wcPop({
content: '还未登录授权!', anim: 'shake', style: 'background:#e03b30;color:#fff;', time: 2,
end: function(){
next({ path: '/login' })
}
});
}
}else{
next()
}
})

export default router
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

import {mm} from '../common.js'

export default new Vuex.Store({
state: {
user: window.sessionStorage.getItem('user'),
token: window.sessionStorage.getItem('token'), //登录标识
onlineStatus: { status: 'online', text: '在线' }, //用户在线状态 【 online:在线、 offline:离开、 busy:忙碌、 invisible:隐身】
},
mutations: {
// 将token存储到sessionStorage
SET_TOKEN (state, data){
state.token = data;
window.sessionStorage.setItem('token', data);
},
// 获取用户名
SET_USER (state, data){
state.user = data;
window.sessionStorage.setItem('user', data);
},
// 退出
LOGOUT (state){
state.user = null;
state.token = null;
window.sessionStorage.removeItem('user');
window.sessionStorage.removeItem('token');
},
},
getters:{}
})

// 这种写法也ok
// export default () => {
// return new Vuex.Store({
// state: {},
// mutations: {},
// actions: {},
// })
// }

20180817002157557.jpg

欢迎大家一起交流、学习  Q:282310962  wx:xy190310
 
0
评论

一对一软件怎样开发?需要注意什么? 一对一软件开发 软件开发 直播系统

q2466131704 发表了文章 • 198 次浏览 • 2019-05-05 13:49 • 来自相关话题

一对一软件怎样开发才能解决现代人的社交恐惧症?熟人社交,目前已经成为绝大多数人内心十分抗拒的社交方式,就连发个微信朋友圈都需要屏蔽各种七大姑八大姨,还有小学初中高中同学,而一对一陌生人社交的方式可以有效解决这个问题。那么,应该怎样进行一对一软件开发呢?需要注意什么?
一对一软件开发需要哪些功能?
1.主播列表
主要显示经过平台认证后的主播信息,对主播的信息进行简单的展示。一般情况下该页面显示在首页,即用户登录软件之后最先看到的页面。这一功能主要是让用户直观的看到当前平台上的主播,通常默认显示的是热门或推荐的主播,其次是附近的主播。




2.主播详情页
主要显示主播认证时上传的图片、头像、昵称、星级、收费价格等,上拉之后可跳转到主播的个人介绍、签名、形象标签和个人资料等。开发这个功能主要是为了让用户对当前查看的主播能有一个简单的了解,然后再进行视频或语音聊天。
3.动态
开发一对一软件最主要的目的就是解决熟人社交带来的压力,而动态功能对于社交属性的软件来说,是非常重要的。不仅能够增加平台的用户粘性,还能够从动态中与天南海北的线上好友进行互动。
4.短视频功能
自从抖音把短视频带火之后,人们开始喜欢用录制短视频的形式展现自己。在一对一软件开发中加入短视频,主播可以在自己的详情页面上传短视频,用户可以通过查看主播以往短视频,了解主播的日常工作生活,以及主播的平台活跃度。




一对一软件开发需要注意什么?
1.跨平台互通
基于当下移动端软件的受欢迎程度,所以在进行一对一软件开发时需要实现跨平台互通,即支持Android与ios端开播、观看及互通,后台web端与前端互联,也就是我们常说的三端互通。
2.源码是否开源
如果想要购买一套源码,那么首先需要确定的就是这套源码是否开源。开源的源码不仅拥有相关的独立版权,而且支持二次开发,后期在维护和修复bug时相对比较轻松。




3.程序的稳定性
为了保证后期开发出来的软件能够给用户带来良好的体验,在运行系统时需要具备一定的稳定性和流畅性,同时它的安全兼容性也要足够强。
以上内容就是关于一对一软件开发时需要开发的功能和需要注意的事情,要想真正的解决现阶段社会中存在的社交压力问题,需要找准用户的真实需求、产品定位等方面入手,至于编代码和程序是否问题就不需要我们操心了。
本文声明原创,转载请注明作者、出外及原文链接。 查看全部
一对一软件怎样开发才能解决现代人的社交恐惧症?熟人社交,目前已经成为绝大多数人内心十分抗拒的社交方式,就连发个微信朋友圈都需要屏蔽各种七大姑八大姨,还有小学初中高中同学,而一对一陌生人社交的方式可以有效解决这个问题。那么,应该怎样进行一对一软件开发呢?需要注意什么?
一对一软件开发需要哪些功能?
1.主播列表
主要显示经过平台认证后的主播信息,对主播的信息进行简单的展示。一般情况下该页面显示在首页,即用户登录软件之后最先看到的页面。这一功能主要是让用户直观的看到当前平台上的主播,通常默认显示的是热门或推荐的主播,其次是附近的主播。
一对一4.png

2.主播详情页
主要显示主播认证时上传的图片、头像、昵称、星级、收费价格等,上拉之后可跳转到主播的个人介绍、签名、形象标签和个人资料等。开发这个功能主要是为了让用户对当前查看的主播能有一个简单的了解,然后再进行视频或语音聊天。
3.动态
开发一对一软件最主要的目的就是解决熟人社交带来的压力,而动态功能对于社交属性的软件来说,是非常重要的。不仅能够增加平台的用户粘性,还能够从动态中与天南海北的线上好友进行互动。
4.短视频功能
自从抖音把短视频带火之后,人们开始喜欢用录制短视频的形式展现自己。在一对一软件开发中加入短视频,主播可以在自己的详情页面上传短视频,用户可以通过查看主播以往短视频,了解主播的日常工作生活,以及主播的平台活跃度。
短视频5.jpg

一对一软件开发需要注意什么?
1.跨平台互通
基于当下移动端软件的受欢迎程度,所以在进行一对一软件开发时需要实现跨平台互通,即支持Android与ios端开播、观看及互通,后台web端与前端互联,也就是我们常说的三端互通。
2.源码是否开源
如果想要购买一套源码,那么首先需要确定的就是这套源码是否开源。开源的源码不仅拥有相关的独立版权,而且支持二次开发,后期在维护和修复bug时相对比较轻松。
一对一6.png

3.程序的稳定性
为了保证后期开发出来的软件能够给用户带来良好的体验,在运行系统时需要具备一定的稳定性和流畅性,同时它的安全兼容性也要足够强。
以上内容就是关于一对一软件开发时需要开发的功能和需要注意的事情,要想真正的解决现阶段社会中存在的社交压力问题,需要找准用户的真实需求、产品定位等方面入手,至于编代码和程序是否问题就不需要我们操心了。
本文声明原创,转载请注明作者、出外及原文链接。
0
回复

我们开发的小伙伴最近在用flutter开发,想整合环信调试,是否支持呢? 环信_WebIM

回复

sunshine123 发起了问题 • 1 人关注 • 536 次浏览 • 2019-04-30 14:35 • 来自相关话题

0
评论

开发直播平台多少钱?没有技术团队怎么办? 直播平台开发 直播

q2466131704 发表了文章 • 348 次浏览 • 2019-04-29 16:39 • 来自相关话题

“开发直播平台多少钱?”
“没有技术团队怎么办?”
以上两个问题是绝大多数想要加入直播行业的人都非常关注的问题,所以本文就以这两个问题来简单探讨一下,希望能给大家提供一定的帮助。
开发一个直播平台需要多少钱?
首先,需要确定的是选择定制开发还是购买一套源码进行开发;其次,需要选择专业的直播软件开发公司;最后,确定开发费用。
其实目前最简单直接的方法就是购买一套成品在线直播源码来进行搭建部署,实现快速上线运营。一般从源码服务商那里购买的直播源码都是开源的,支持二次开发,还可以直接搭建部署上线运营。这种方式不仅性价比较高,而且初期费用基本上只有源码本身的费用,当然,如果有额外的开发需要单独按照开发工期计算费用。但整体算下来,比起自己组建团队进行开发,无论是时间成本还是人力成本上都要划算的多。
没有技术团队怎么办?
绝大多数想做直播APP的人都没有配备相应的技术团队,那么他们就会考虑到一个问题,是不是没有技术团队就没办法做直播APP了?其实并非如此,现在市面上专业的软件开发公司除了提供直播源码以外,还会提供一系列的服务,主要就是为了解决客户没有技术团队的问题。举个简单的例子,我们购买一套直播源码之后,如果想要在现有的基础上添加几个功能,那么就把功能需求整理成为一份文档给开发公司,然后他们会负责将功能开发完成好之后交付给我们,后期还可以免费搭建部署实现上架运营。也就是说,就算没有技术团队,只需要花费一套源码和相关功能开发的费用就可以得到一个成品直播APP,不仅省时省力,还节省了自己组建技术团队的相关人力费用。
其实说来说去,还是找专业的直播软件开发公司更合适。因为他们大都是长期专注于直播系统开发的公司,在技术和功能等方面的实现都具备一定的经验和实力,并且对于直播场景中经常出现的问题也有对应的解决方案,所以,有开发直播平台意向的人不妨去正规、专业的公司咨询一下关于开发费用和技术等方面的问题,这样一来不仅程序的质量得到了强有力的保证,还能享受到相应的服务。
本文声明原创,转载请注明原文链接及出处。 查看全部
“开发直播平台多少钱?”
“没有技术团队怎么办?”
以上两个问题是绝大多数想要加入直播行业的人都非常关注的问题,所以本文就以这两个问题来简单探讨一下,希望能给大家提供一定的帮助。
开发一个直播平台需要多少钱?
首先,需要确定的是选择定制开发还是购买一套源码进行开发;其次,需要选择专业的直播软件开发公司;最后,确定开发费用。
其实目前最简单直接的方法就是购买一套成品在线直播源码来进行搭建部署,实现快速上线运营。一般从源码服务商那里购买的直播源码都是开源的,支持二次开发,还可以直接搭建部署上线运营。这种方式不仅性价比较高,而且初期费用基本上只有源码本身的费用,当然,如果有额外的开发需要单独按照开发工期计算费用。但整体算下来,比起自己组建团队进行开发,无论是时间成本还是人力成本上都要划算的多。
没有技术团队怎么办?
绝大多数想做直播APP的人都没有配备相应的技术团队,那么他们就会考虑到一个问题,是不是没有技术团队就没办法做直播APP了?其实并非如此,现在市面上专业的软件开发公司除了提供直播源码以外,还会提供一系列的服务,主要就是为了解决客户没有技术团队的问题。举个简单的例子,我们购买一套直播源码之后,如果想要在现有的基础上添加几个功能,那么就把功能需求整理成为一份文档给开发公司,然后他们会负责将功能开发完成好之后交付给我们,后期还可以免费搭建部署实现上架运营。也就是说,就算没有技术团队,只需要花费一套源码和相关功能开发的费用就可以得到一个成品直播APP,不仅省时省力,还节省了自己组建技术团队的相关人力费用。
其实说来说去,还是找专业的直播软件开发公司更合适。因为他们大都是长期专注于直播系统开发的公司,在技术和功能等方面的实现都具备一定的经验和实力,并且对于直播场景中经常出现的问题也有对应的解决方案,所以,有开发直播平台意向的人不妨去正规、专业的公司咨询一下关于开发费用和技术等方面的问题,这样一来不仅程序的质量得到了强有力的保证,还能享受到相应的服务。
本文声明原创,转载请注明原文链接及出处。