nextCloud集成至APP端可行性报告

淳于功
2023-12-01

研究背景

一款免费开源网络硬盘系统,方便的搭建私有云盘,可自行管理个人或组织机构的数据及文件,实现了文件同步及共享服务。

研究目标

  • nextCloud,Talk是否能整体集成至掌上吉祥2.0中
  • nextCloud,Talk是否能进行二次开发

研究内容

了解各端源码

server端

已完成web的部署,访问地址:http://172.22.2.20:8005/

部署源码官方来源:https://download.nextcloud.com/server/releases/nextcloud-20.0.2.zip

官方代码语言构成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vJfV51V3-1677424506786)(https://img.alicdn.com/imgextra/i3/697410652/O1CN01GcpeKQ1GgesD2JE1y_!!697410652.png)]

对于源码分析

  • 前后端代码未分离,大部分代码基于php预言
  • 前端人员需要维护PHP中的页面代码
  • 应用新增例如talk,必须基于server端的源码,才可运行,增加后续维护难度
  • 整体项目大,代码目录层次深,目前并未找到对应模块的说明

除非完全使用开源的源码,若修复相关问题的话,是需要PHP人员的支持的,二开新功能的难度有的

Android端

官方源码nextCloud, nextCloud Talk已将APP运行成功,源码与store包运行界面有差异

官方存于github源码:
nextCloud: https://github.com/nextcloud/android
nextCloud-talk-for-android:https://github.com/nextcloud/talk-android
溯源地址:https://nextcloud.com/install/#install-clients
应用源码来源: https://apps.nextcloud.com/, 可去github拉取源码,放入server端指定目录

官方代码语言构成

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OaldiJoG-1677424506787)(https://img.alicdn.com/imgextra/i4/697410652/O1CN01U2JT3I1GgesE5Bz1J_!!697410652.png)]

对于源码分析

  • 资料较少,目前只有通过github开源项目去了解
  • 官方未提供SDK,仅有一个官方的demo源码,没有办法已SDK的方式接入到项目中
  • 运行后发现了部分功能无法使用,定位问题为 服务端的端口404导致的(例如此处需要服务端PHP人员去源码中排查)
  • talk的实现基于三方库进行开发的,目前这些3方库均为未接触的,例如kotlin,需要此语言开发者
IOS端

官方源码nextCloud, nextCloud Talk目前均无法运行

github源码来源:
nextCloud: https://github.com/nextcloud/ios
talk-ios: https://github.com/nextcloud/talk-ios
溯源地址:https://nextcloud.com/install/#install-clients

无法运行的原因

  • 依赖库无法下载,具体问题为:pod更新过程2个依赖一直无法安装,预计于网速以及网络有关系(尝试切换网络,仍然为无法下载依赖)

对于源码分析

  • 聊天中为SDK库接入,UI界面为源代码无法直接使用,只能作为参考
  • 网盘项目使用Carthage, 聊天项目使用Pod方式,掌上吉祥使用pod,则网盘必须要有pod库,这个目前还不确定

若想继续深挖的话,必须需要的支持

  • PHP、kotlin, Android技术人员
  • 无SDK接入APP方式介绍
  • 源代码的熟悉以及相关技术性的支持文档(不排除一些需求nextCloud技术人员的支持)
因目前没有找到nextCloud、talk的SDK,所以无法已SDK接入的方式(一般APP接3方功能做法都是接SDK的),如果要想硬接的话,只有接源码了,但是此时必须解决技术人员的问题,以及源码的功能关联,尝试看看能否剥离出所需功能的源码,耗时预计会久远。

结论

基于目前3端的源码无相关技术人员支持,以及源码包缺少相关的文档说明,接入方式无法已SDK方式,源码包大,干净无法剥离独立模块等原因。

前端团队认为:
nextCloud,Talk不能整体集成至掌上吉祥。
nextCloud,Talk二开模块功能难度大。

收费标准

特点基本版标准版升级版
100人€36/人/年€65/人/年€95.5/人/年
200人€28.5/人/年,€5700/年€48.5/人/年, €9700/年€74.5/人/年,€14900/年
Nextcloud企业版
移动和桌面客户端
企业能力
开源
托管服务
维护期1年3年5年+
期的安全性和稳定性补丁
门户支持
迁移支持
电子邮件✔<(营业时间)✔(24/7)
品牌推广✔(支持MDM)
安装审查
定制咨询✔(支持MDM)
升级备用支持
集群实例
组件支持度列表
Nextcloud Talk
Nextcloud Groupware
Outlook Add-in
Collabora Online Office
Phone support: business hours
SLA on fixes
Subscription extensions
Global Scale

其他替代

聊天功能(收费):融云(https://rongcloud.cn), 环信、网易云、腾讯、阿里,支持私有部署

网盘功能:阿里云相册与网盘服务(PDS)

开源免费方案: 暂无

阿里云-相册与网盘服务 目前还在公测阶段,登录,api无法调用

与相关人员沟通图如下:

已完成web的示例部署, 体验账号:sunlijuan Slj242526 地址:https://sz668.apps.aliyunpds.com/

多个地址无法访问通

介绍

相册与网盘服务(Photo And Drive Service, 后面简称PDS)是为开发者提供的面向企业与个人数据管理,内容识别与协作的开放平台。特点如下:

  • 高效可靠的文件管理
  • 相册
  • 快速检索
  • OSS数据分发:可将已存储在阿里云OSS中的数据托管给PDS,PDS将设定的OSS桶映射成多个drive,完成数据在应用和用户间的联动以及和合作伙伴间的数据传递;
  • 丰富的账号接入方式:支持基于阿里云AccessKey的签名方式或基于OAuth JWT以应用身份访问;基于手机号码或OAuth2.0的访问令牌以用户身份的访问,支撑丰富的应用场景;
  • 支持多种应用:在使用PDS时除了自己开发的应用,PDS为用户提供了官方应用或第三方开发的应用,以组合功能提供给最终用户;
  • 事件变化通知;
  • 支持多网络接入:支持在VPC(虚拟私有云)或互联网网络访问PDS
数据存储方式
StandardMode (标准模式)HostingMode(托管模式)
数据存储位置PDS使用者的桶
费用PDS资源消耗PDS仅收取用户服务费(见定价信息
数据访问APIPDS API同时支持PDS API和原生OSS API
账号体系钉钉、RAM子账号;手机号(需提工单开通)钉钉、RAM子账号、手机号(需提工单开通)
认证方式AccessKey、OAuth2.0AccessKey、OAuth2.0
文件管理
秒传
重删
权限设置
搜索近期推出
共享近期推出
官方应用BasicUI、桌面端近期推出BasicUI、桌面端近期推出
人脸聚类
标签识别
最近访问事件近期推出

访问身份分类

  • 以应用身份访问:应用在调用PDS时,不需要用户干预,如后端服务、后台进程、命令行等,请求是代表应用
  • 以用户身份访问:应用在调用PDS时,需用户登录、用户授权等,请求代表最终用户,一般在端侧,如手机端、PC端等(非服务端)

身份认证方式分类

身份分类认证方式说明
以应用身份JWT签名认证近期推出
以应用身份AccessKey签名认证使用阿里云的RAM和STS,请参见访问控制产品文档
以用户身份账号密码使用PDS账号体系的账号密码认证
以用户身份OAuth2.0认证使用标准的OAuth2.0协议认证

PDS的使用限制及性能指标如下:

  • 每个阿里云账号单个region内最大创建3个domain
  • 每个文件大小50GB

计费说明

计量项售卖模式售卖单价
存储费用
(存储量)
后付费(按量付费)0.13元/GB/月
流量费用
(外网流出流量)
后付费(按量付费)0.5元/GB
用户服务费
(用户数)
后付费(按量付费)按照用户数阶梯定价:
  • 0-100:5元/用户/月(前期免费)
  • 100(不含)-1w:2元/用户/月
  • 1w(不含)-10w:0.1元/用户/月
  • 10w(不含)-100w:0.01元/用户/月
  • 100w+:0.005元/用户/月
  • 同一个文件仅存一份,按照实际物理空间计费,降低客户成本。
  • 用户服务费按阶梯定价,用户数越大,单用户服务费越低,最低可到0.005元/用户/月。
  • 如果客户使用数据托管模式(数据存储在自有阿里云OSS中),PDS只收取用户服务费。

欠费说明

PDS产生欠费后的服务状态变化如下:

  • 在欠费后24小时内进行充值,您的服务将不会受到停服影响。

  • 当欠费超过24小时,PDS服务将自动停止。而您所占用的存储空间资源(存储费用)、用户元数据空间资源(用户服务费)仍会继续扣费,因此欠费会累积。如果您在15天内充值补足欠款,PDS服务会自动启用。

  • 欠费超过15天,将视为您主动放弃PDS相册与网盘服务,阿里云不承诺继续保留您的数据,数据可能会被回收清理,清理后数据不可恢复。请注意,数据清理之前仍会继续计费,若您确认不再使用PDS相册与网盘服务,请务必删除PDS上的数据和用户。

在不同模式下清理数据的说明:

  • 标准模式:domain实例及PDS包含的资源全部删除。
  • 托管模式:==domain实例及PDS包含的资源全部删除,==但是客户自己bucket里的文件数据不会删除。

替补聊天方案:腾讯云-即时通信 IM

平台支持

以下平台都支持互通,且能跨终端全平台服务。

平台SDK 及兼容性Demo源码UI 组件
Android兼容支持 JDK 1.6 和 Android SDK version 14 以上系统
iOS兼容 iOS 8.0 以上版本
Mac兼容 OS X 10.10 以上版本-
Windows包含C 、C++ ,兼容 Windows 7、Windows 8/8.1、Windows 10;全面支持32位和64位程序接入---
Web支持 IE 9+,Chrome 7+,FireFox 3.6+,Opera 12+ 和 Safari 6+--
小程序--

全球接入

功能类型功能描述
全球接入简介即时通信 IM 提供覆盖全球的高连通、高可靠、强安全的网络连接通道,自研多重最优寻址算法,具有全网调度能力,终端在海外登录时,IM SDK 会访问就近接入点或加速点
中国华南、华北、华东、香港、台湾等
海外亚洲:日本、韩国、新加坡、印度、泰国、马来西亚、越南、菲律宾、阿联酋
欧洲:德国、英国、法国、俄罗斯、意大利、挪威、西班牙
北美洲:美国、加拿大、墨西哥
南美洲:巴西
大洋洲:澳大利亚
非洲:南非等

帐号功能

功能类型功能描述
帐号导入批量导入帐号
帐号禁用UserSig 失效
帐号删除批量删除帐号
用户在线状态管理在线和离线状态(以用户登录为前提)

多端登录

功能类型功能描述
单端登录仅允许 Windows、Web、Android 或 iOS 单端登录
双端登录(默认状态)允许 Windows、Android 或 iOS 单端登录,同时允许与 Web 端同时在线
三端登录允许 Android 或 iOS 单端登录,同时允许与 Windows 和 Web 端同时在线
多端同时在线允许 Windows、Web、Android 或 iOS 多端或全端同时在线登录

您可以登录 即时通信 IM 控制台,单击目标应用所在行的【应用配置】,在【功能配置】页配置多端登录。

消息类型

功能类型功能描述
文本消息消息内容是普通文本
图片消息消息内容为图片 URL 地址、尺寸、图片大小等信息
表情消息表情消息为开发者自定义
语音消息语音数据需要提供时长信息,以秒为单位
地理位置消息消息内容为地理位置标题、经度、纬度信息
文件消息消息内容为文件的 URL 地址、大小、格式等信息,格式不限,最大支持100M
短视频消息消息内容为视频文件的 URL 地址、时长、大小、格式等信息,最大支持100M
自定义消息开发者自定义的消息类型,例如红包消息、石头剪刀布等形式的消息
系统通知消息包含内置的系统通知消息和开发者自定义系统通知消息

消息功能

功能类型功能描述
消息下载App 管理员可以通过该接口获取 App 中某天某小时的所有单发或群组消息记录
离线消息用户登录后退到后台,当有用户给其发消息时,即时通信 IM 支持离线推送
漫游消息在新设备登录时,将服务器记录(云端)的历史消息存储进行同步,默认保存7天,可付费延长
多端同步多终端消息同步,可同时收到消息
历史消息支持本地历史消息和云端历史消息
消息撤回撤回投递成功的消息,默认撤回 2 分钟内的消息。撤回操作仅支持单聊和群聊消息,不支持直播群(AVChatRoom)的撤回
已读回执查看点对点会话中对方的已读未读状态
消息转发将消息转发给其他用户或群组
@功能群内 @ 消息与普通消息没有本质区别,仅是在被 @ 的人在收到消息时,需要在 UI 上做特殊处理
正在输入可以通过在线消息实现
离线推送支持苹果 APNs、小米推送、华为推送、魅族推送、OPPO 推送、vivo 推送、Google FCM 推送
消息删除使用消息的 remove 方法可以在本地删除消息
红包功能红包消息与@消息类似,可以通过 TIMCustomElem 来实现

资料功能

功能类型功能描述
设置用户资料用户设置自己的昵称、验证方式、头像、性别、年龄、签名、位置等资料
获取用户资料用户查看自己、好友及陌生人资料
按字段获取用户资料按照特定字段获取用户资料
自定义用户资料最大20个自定义用户资料字段

关系链功能

功能类型功能描述
查找好友可通过用户帐号 ID 查找好友
申请添加好友要选择默认是否需要申请理由,目前是默认不需要
添加好友发送添加好友请求
删除好友成为好友后可以删除好友
获取所有好友获取所有好友,默认只拉取基本资料
同意/拒绝好友收到请求加好友请求的系统通知后,可以通过或者拒绝
添加用户到黑名单把任意用户拉黑,如果此前是好友关系会解除好友关系
移除黑名单把用户从黑名单中移除
获取黑名单列表拉取用户黑名单列表
好友备注成为好友后可以给好友备注
设置好友自定义资料最多20个好友自定义字段
创建好友分组创建分组时,可以同时指定添加的用户,同一用户可以添加到多个分组
删除好友分组删除好友分组
添加好友到某分组将好友添加到好友分组
从某分组删除好友将好友从好友分组中删除
重命名好友分组重命名好友分组
获取指定好友分组信息获取指定的好友分组
获取所有好友分组获取所有分组信息,另外,通过获取所有好友也可以获取分组信息
关系链资料存储SDK 可以对关系链资料进行存储
好友资料变更系统通知好友资料变更可以收到系统通知
关系链变更系统通知关系链变更可以收到系统通知

群组功能

即时通信 IM 根据常见使用场景,默认配置了以下群组类型:

  • 好友工作群(Work):类似普通微信群,创建后仅支持已在群内的好友邀请加群,且无需被邀请方同意或群主审批;
  • 陌生人社交群(Public):类似 QQ 群,创建后群主可以指定群管理员,用户搜索群 ID 发起加群申请后,需要群主或管理员审批通过才能入群;
  • 临时会议群(Meeting):创建后可以随意进出,且支持查看入群前消息;适合用于音视频会议场景、在线教育场景等与实时音视频产品结合的场景;
  • 直播群(AVChatRoom):创建后可以随意进出,没有群成员数量上限,但不支持历史消息存储;适合与直播产品结合,用于弹幕聊天场景。

每个群组类型的默认功能差异如下表示意:

功能类型
好友工作群
(Work)
陌生人交友群
(Public)
临时会议群
(Meeting)
直播群
(AVChatRoom)
最高支持成员数量上限6000人6000人6000人无上限
可获取成员资料限制全部可见全部可见全部可见仅展示前300个加群的成员
是否支持设置管理员
群资料修改权限
  • 任意群成员均可修改
  • 后台 App 管理员
  • 群主
  • 群管理员
  • 后台 App 管理员
  • 群主
  • 群管理员
  • 后台 App 管理员
  • 群主
  • 后台 App 管理员
解散群组权限后台 App 管理员
  • 群主
  • 后台 App 管理员
  • 群主
  • 后台 App 管理员
  • 群主
  • 后台 App 管理员
是否支持群主退群
是否支持申请加群支持,但需要群主或管理员审批支持,且无需审批支持,且无需审批
是否支持成员邀请他人加群
“踢人”权限
  • 群主
  • 后台 App 管理员
  • 群主
  • 群管理员
  • 后台 App 管理员
  • 群主
  • 群管理员
  • 后台 App 管理员
不支持踢人,可用“禁言”功能达到类似效果
“禁言”权限不支持禁言
  • 群主
  • 群管理员(仅支持禁言普通群成员)
  • 后台 App 管理员
  • 群主
  • 群管理员(仅支持禁言普通群成员)
  • 后台 App 管理员
  • 群主
  • 后台 App 管理员
是否支持查看入群前历史消息
成员变更通知(进群/退群等)全员全员全员
是否需要在创建群组后发消息激活需要不需要不需要不需要
是否支持未读消息计数
是否支持导入群(群成员/基础资料等)

即时通信 IM 控制台

您可以在腾讯云 即时通信 IM 控制台 根据您的需求对您的应用进行配置。

功能类型功能描述
创建应用新建应用
下载 SDK下载客户端的 SDK
应用配置可进行应用配置
统计分析运营数据查看
查看 Crash错误上报
回调配置第三方回调
功能配置增加自定义字段和在线实例
开发者辅助工具在网页端生成 UserSig

数据统计

即时通信 IM 控制台的 统计分析 功能有各类维度的数据统计,为您提供运营数据。

统计类型功能描述
活跃用户数与服务器产生连接交互的去重用户数
新增注册数新增注册 ID 数量
累计注册数查看所有注册用户数
上行消息数可以选择时间查看上行消息数
发送消息人数可以选择时间查看发送消息人数
最高同时在线人数可以选择时间查看在线同时在线人数
单聊上行消息数可以选择时间查看单聊上行消息数
单聊发消息人数可以选择时间查看单聊发消息人数
群聊上行消息数可以选择时间查看群组中上行消息数
群聊发消息人数可以选择时间查看群组中发消息的人数
发消息群组数可以选择时间查看发消息群组数
新增群组数可以选择时间查看新增群组数
累计群组数可以选择时间查看累计群组数
导出数据可以选择时间导出数据

源码

源码地址来源: https://github.com/tencentyun/TIMSDK/

技术栈:vue + vuex + element-ui, 可以基于源码进行二次迭代开发

体验版

web端部署后的地址:http://172.22.2.20:8007/
IOS端APP也可以运行在本地手机上,实现了拉群,分组聊天的支持文件,图片预览,跨端消息聊天的功能。

目前源码都是给到的,收费只是通过账号APPID,APPSecret购买 专业版以及旗舰版的账号的

目前不支持与网盘互联, 如果需要体验相关功能,目前可以在林博处打包IOS的聊天体验版

开发者简述体验到的功功能如下。

  • 单聊天,分组聊,讨论组,群聊,消息推动
  • 文件预览,视频播放,文件通过本地软件打开
  • 聊天记录本地保存,也有提供相关文件,将聊天记录保存至本地
  • 提供方法打通登录,以及批量导入用户

官方提供控制台相关配置

  • 登录设置,是否 可以进行多端登录,支持双端
  • 历史消息存储时长配置,默认为7天,可延长消息时长存储,但是属于增值服务
  • 消息撤回设置、黑名检查、好友关系检查设置
  • 安全打击,可以配置相关关键词,自动进行过滤

数据

  • 登录权限,官方提供相关API,API参考地址:http://doc.qcloudtrtc.com/im/classcom_1_1tencent_1_1imsdk_1_1v2_1_1V2TIMManager.html#a73fc0e14c5f2f5fc06a80081479fb416

  • 好友关系表,聊天记录,阿里云均可以拿到,也可以保存在自己的服务器上

收费

  • 预付费:按周期购买,自购买之日(T 日)起,至次月 T - 1日有效。
  • 后付费:按自然月结算,每月3日扣除上一个自然月所产生的费用。
基础服务

具体的计费和价格详情如下表所示:

计费项 计费方式 套餐包类型
体验版 专业版 旗舰版
套餐包费用预付费免费999元/月2999元/月
套餐外超量费用峰值 DAU后付费-1000元/1万个,不足1万的部分按1万计算
峰值群组数1000元/10万个,不足10万的部分按10万计算

套餐包功能对比

功能点体验版专业版旗舰版
全球多点覆盖支持支持支持
用户数上限100人无限制无限制
单个用户好友人数上限20个好友3000个好友3000个好友
单个用户可加入群组数50个群/人500个群/人1000个群/人
单个群成员数上限(非直播群)20人/群200人/群2000人/群
群组数上限(解散后不计数)100个无限制无限制
可创建直播群(AVChatRoom)个数10个50个无限制
日净增群组数100个10000个10000个
免费历史消息存储时长7天7天30天
免费日活跃用户数(DAU)额度1001000010000
免费峰值群组数100个/月10万个/月10万个/月
安全打击服务基础版基础版(可开通高级版)基础版(可开通高级版)

增值服务

每一项增值服务都有其独立的计费规则,仅专业版和旗舰版支持使用增值服务。

增值服务产生的费用

计费项 计费方式 套餐包类型
体验版 专业版 旗舰版
增值服务费用扩展直播群(AVChatRoom)创建数量至无上限预付费体验版
不支持
使用
增值服务
1000元/月-
扩展单个群成员数上限2000人/群:500元/月6000人/群:500元/月
扩展单个用户可加入群组数上限1000个群/人:1100元/月3000个群/人:900元/月
安全打击服务 - 高级版1000元/月1000元/月
延长历史消息存储时长后付费存储30天:500元/月
存储90天:1000元/月
存储180天:1500元/月
存储360天:2500元/月
存储90天:500元/月
存储180天:1000元/月
存储360天:2000元/月
直播群(AVChatRoom)弹幕带宽国内带宽:2元/Mbps/天
国际带宽:4元/Mbps/天
国内带宽:2元/Mbps/天
国际带宽:4元/Mbps/天

说明:

  • 每项增值服务仅对单个 SDKAppID 生效,如果您有多个SDKAppID 需要升级,您需依次为其购买单独的套餐包
  • 安全打击服务 - 高级版:可支持中文、英文自定义词库,暂不支持其他语种,不限制过滤次

折扣活动说明

https://cloud.tencent.com/document/product/269/46181

直接计算报价地址:

https://buy.cloud.tencent.com/avc?ver=ultimate

续费到期预警

您通过按月付费方式购买的即时通信 IM 预付费套餐包到期时,系统将会在到期前7天(含到期当日)以及后7天向您推送套餐包即将到期、请及时续费等预警信息,信息将通过邮件及短信的方式通知到使用本服务的腾讯云账户的创建者。

如果您在预付费套餐包到期后7天内(含到期当日)未完成续费操作,您将无法继续使用该套餐包,请您及时续费。预付费套餐包过期超过7天后, 对应应用将会变为停服状态,您将无法使用该应用的所有即时通信 IM 能力(例如登录等)以及控制台除基本配置外的其他配置功能(例如群组管理、回调配置等),续费后可正常使用

账户欠费
使用相关资源所产生的后付费账单会于次月1-3日推送至您的账户,若此时您的腾讯云账户可用余额不足以支付账单或可用余额为负,即为欠费状态。若在账单推送后7天内(含账单推送当日)您的腾讯云账户依然为欠费状态,系统将对您进行停服。停服后,您将无法继续使用腾讯云提供的所有服务。

资源回收
停服后(含停服当日),您的 SDKAppID 资源保存期为90天。如果您在90天内未完成 续费 和 充值,系统将会回收您的资源且不可恢复。

退费

https://cloud.tencent.com/document/product/269/32473

前端部署的H5地址为:
存在一些问题:例如通讯录列表为空,语音无法播放等问题,需要与相关人员沟通

 类似资料: