{"id":42271317,"url":"https://github.com/rongcloud/sealtalk-android","last_synced_at":"2026-01-27T07:24:33.123Z","repository":{"id":46150550,"uuid":"405815290","full_name":"rongcloud/sealtalk-android","owner":"rongcloud","description":null,"archived":false,"fork":false,"pushed_at":"2025-12-26T11:11:59.000Z","size":128069,"stargazers_count":17,"open_issues_count":3,"forks_count":7,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-12-27T23:09:52.347Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rongcloud.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-09-13T03:03:28.000Z","updated_at":"2025-12-26T11:12:03.000Z","dependencies_parsed_at":"2025-07-24T11:24:51.575Z","dependency_job_id":"ef89a9f9-2135-434d-9868-65e9dd52747d","html_url":"https://github.com/rongcloud/sealtalk-android","commit_stats":null,"previous_names":[],"tags_count":69,"template":false,"template_full_name":null,"purl":"pkg:github/rongcloud/sealtalk-android","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rongcloud%2Fsealtalk-android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rongcloud%2Fsealtalk-android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rongcloud%2Fsealtalk-android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rongcloud%2Fsealtalk-android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rongcloud","download_url":"https://codeload.github.com/rongcloud/sealtalk-android/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rongcloud%2Fsealtalk-android/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28808005,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T07:14:39.408Z","status":"ssl_error","status_checked_at":"2026-01-27T07:14:39.098Z","response_time":168,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-27T07:24:27.913Z","updated_at":"2026-01-27T07:24:33.115Z","avatar_url":"https://github.com/rongcloud.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SealTalk-Android\nAndroid 应用 SealTalk 由 融云 RongCloud 出品。\n\n## 特别注意\nSealTalk 自从 1.3.14 版本起，CallLib 模块引用的音视频引擎已替换成 RTC 3.0，与之前的版本不互通。详细内容请参考官网的\n\n## 特点  \n* Android iOS [Web](http://web.sealtalk.im/) 多端互通,如果需要你的产品也可以这样实现。\n* [音视频通话](http://www.rongcloud.cn/docs/android_callkit.html) 功能\n* 地理位置,位置共享功能。\n* 随心的 [消息自定义](http://www.rongcloud.cn/docs/android.html#%E6%B6%88%E6%81%AF%E8%87%AA%E5%AE%9A%E4%B9%89) , [功能模块自定义](http://www.rongcloud.cn/docs/android.html#4%E3%80%81%E4%BC%9A%E8%AF%9D%E6%89%A9%E5%B1%95%E5%8A%9F%E8%83%BD%E8%87%AA%E5%AE%9A%E4%B9%89)。\n* 完整的好友体系代码示例。\n* 完整的群组功能代码示例。\n* 单聊,群组,聊天室多种社交场景满足你的需求,如果还想要 [视频直播](http://rongcloud.cn/live) 都可以。\n\n## 运行 SealTalk-Android\n1.  替换 sealtalk 中 gradle.properties 中的 SEALTALK_SERVER 值为您所部署的 SealTalk 服务地址。\n```\n    SEALTALK_SERVER=\"这里请替换为您所部署的 SealTalk Server 地址\"\n```\n2.  替换 sealtalk 中 gradle.properties 中的 SEALTALK_APP_KEY 替换为您所申请的融云 AppKey。\n```\n    SEALTALK_APP_KEY=\"这里请替换为您的融云 AppKey\"\n```\n3. 若使用第三方推送，请参考 IMManager.java 中 initPush 方法，打开注释并在 sealtalk 中 gradle.properties 中各个平台参数替换成您申请的各平台的推送信息\n```\n    /**\n     * 初始化推送\n     */\n    private void initPush() {\n        /*\n         * 配置 融云 IM 消息推送\n         * 根据需求配置各个平台的推送\n         * 配置推送需要在初始化 融云 SDK 之前\n         */\n        //PushConfig config = new PushConfig\n        //        .Builder()\n        //        .enableHWPush(true)        // 在 AndroidManifest.xml 中搜索 com.huawei.hms.client.appid 进行设置\n        //        .enableMiPush(BuildConfig.SEALTALK_MI_PUSH_APPID, BuildConfig.SEALTALK_MI_PUSH_APPKEY)\n        //        .enableMeiZuPush(BuildConfig.SEALTALK_MIZU_PUSH_APPID, BuildConfig.SEALTALK_MIZU_PUSH_APPKEY)\n        //        .enableVivoPush(true)     // 在 AndroidManifest.xml 中搜索 com.vivo.push.api_key 和 com.vivo.push.app_id 进行设置\n        //        .enableFCM(true)          // 在 google-services.json 文件中进行配置\n        //        .build();\n        //RongPushClient.setPushConfig(config);\n    }\n```\n4. 若您要接入 FCM 推送，需要做以下几步工作:\n* 打开 AndroidManifest.xml 解除掉以下注释。\n```\n\u003c!-- [START firebase_service] --\u003e\n        \u003c!--\n        \u003cservice\n            android:name=\"io.rong.push.platform.google.RongFirebaseMessagingService\"\n            android:stopWithTask=\"false\"\u003e\n            \u003cintent-filter\u003e\n                \u003caction android:name=\"com.google.firebase.MESSAGING_EVENT\" /\u003e\n            \u003c/intent-filter\u003e\n        \u003c/service\u003e\n        \u003cmeta-data\n            android:name=\"firebase_messaging_auto_init_enabled\"\n            android:value=\"false\" /\u003e\n        \u003cmeta-data\n            android:name=\"firebase_analytics_collection_enabled\"\n            android:value=\"false\" /\u003e\n         --\u003e\n        \u003c!-- [END firebase_service] --\u003e\n```\n* 在 build.gradle 中解除以下注释\n```\n//apply plugin: 'com.google.gms.google-services'\n... \n//api 'com.google.firebase:firebase-messaging:17.6.0'\n...\n* \n```\n* 编译 google-services.json 配置为您的 FCM 推送相关配置参数\n\n5. 若您要接入华为 4.0 推送，您需要做以下几步工作：\n* 解除 sealtalk 中 build.gralde 中的注释\n```\n// apply plugin: 'com.huawei.agconnect'\n```\n* 解除工程跟目录下的 build.gradle 中的以下注释:\n```\n dependencies {\n        // 华为推送需要开启下面注释\n        // classpath 'com.huawei.agconnect:agcp:1.1.1.300'\n```\n* 登录华为开发者后台，在我的应⽤-\u003e开发-\u003e概览-\u003e下载 agconnect-servics.json, .将下载好的 agconnect-servics.json ⽂件放到 sealtalk 模块下的根⽬录。\n\n4. 若使用地图相关功能，在 AndroidManifest.xml 中搜索 com.amap.api.v2.apikey 修改为您的高德地图 ApiKey\n```\n\u003c!-- 高德地图--\u003e\n        \u003c!--\n        \u003cmeta-data\n            android:name=\"com.amap.api.v2.apikey\"\n            android:value=\"替换你申请的高德地图 ApiKey\" /\u003e\n        --\u003e\n```\n5. 若使用微信相关功能，请替换 WXManager.java 中 APP_ID 为您申请的 AppId\n```\npublic class WXManager {\n    private static final String TAG = \"WXManager\";\n    private static final String APP_ID = \"替换为您的微信开放平台 AppId\";\n```\n6. **重要** 由于JCenter已停止服务，在老版本中请替换项目主工程的 build.gradle中的maven仓库地址\n```\n//在项目主工程的 build.gradle 引入融云maven仓库\nmaven {url  \"http://maven.rongcloud.cn/repository/maven-releases/\"}\n```\n备注：  \nSealTalk Server 源码可以参考[这里](https://github.com/sealtalk/sealtalk-server)\n\n\n## Gif\n### 强大的全局搜索\n![image](./images/search.gif)\u003cbr/\u003e\n### 单人、多人音视频\n![image](./images/audio_video.gif)\u003cbr/\u003e\n### 群组\n![image](./images/group.gif)\u003cbr/\u003e\n## APK\n[下载 Apk](http://rongcloud.cn/sealtalk)\u003cbr/\u003e\n\n## SDK 集成说明\n\n请参考官网 [SDK 集成说明指南](https://docs.rongcloud.cn/im/imkit/android/quick-start/import/)\u003cbr/\u003e\n\n## 关于 SealTalk 2.0\nSealTalk 2.0 重构了内部逻辑实现，整体代码将更清晰易读。使用 LiveData + ViewModel + Retrofit 2.0 + Room 等框架基于 MVVM 模式进行开发。\n\n\u003e由于 DataBinding 存在调试难, 并要在 XML 编写等问题, 所以经过讨论之后, 决定弃用DataBinding.\n\n**架构图**\n![](./images/sealtalk-mvvm.png)\n\n**Ativity/Fragment** 作为 View 层, 负责界面显示和事件交互.\n\n**UserInfoViewModel** 等为 ViewModel 层. 连接 View 和 Model 的桥梁, 数据通过 LiveData 返回. ViewModel 可通过调用不同的 Task 来获取不同的数据源.\n\n**Task** 层即为 Repository . 根据不同的接口或数据属性, 分别封装了不同的 Task, 例如关于 User 的数据操作就封装在了 UserTask 中. 这样功能模块职能清晰并复用性高. 所有数据请求等只需编写一次即可.\n\n**Service** 和 **Dao** 是分别请求网络数据和数据库数据操作. 分别使用了 Retrofit 和 Room 的依赖库.\n\n\n### 数据请求流程\n在新版中也对数据的请求机制做了信息设计处理. 请求数据分为三种.\n\n- 网络请求需要缓存的\n- 网络请求且不需要缓存的\n- 数据库直接查询的\n\n**需要网络请求并需要缓存的**\n![](./images/data-net-database.png)\n\n在 Task 层首先会查询数据库, 然后返回当前数据库中的缓存数据, 此数据用于请求网络时, 页面友好展示. 然后再请求服务器,获取最新数据, 获取数据成功后会把新数据保存至数据库, 最后再进行一次数据库查询, 获取数据库中的最新数据. 此机制虽然烦琐, 但极大的保证了界面展示的数据于最新数据的一致性.\n\n**网络请求且不需要缓存的**\n![](./images/data-net.png)\n\nTask 直接进行网络请求并返回数据.\n\n**数据库直接查询的**\n\n![](./images/data-database.png)\n\n\n\n## 运行环境\n\n- Android Studio 3.2 以上版本 SealMic 适配了 Android X，所以需要 使用 3.2 以上版本的 Android Studio 才能保证可以正常编译和使用。代码中有地方可能报红色错误, 不影响编译运行.\n推荐使用真实 Android 设备 部分模拟器会存在功能缺失或运行环境不稳定等情况影响使用体验。\n- TargetVersion 版本需 26 及以上版本\n\n## 支持\n - [知识库](http://support.rongcloud.cn/)\n - [工单](https://developer.rongcloud.cn/signin?returnUrl=%2Fticket),需要登录融云开发者账号\n - [Android 视频教程](http://www.rongcloud.cn/docs/android_video_tutorials.html)\n\n\n### 比你想象的更强大, 敬请期待更多精彩! \n[融云官网](http://rongcloud.cn/downloads)  \n[注册融云](https://developer.rongcloud.cn/signup)  ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frongcloud%2Fsealtalk-android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frongcloud%2Fsealtalk-android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frongcloud%2Fsealtalk-android/lists"}