Skip to content

uni-app、React Native、Flutter 怎么接 ​

跨平台框架不用装原生 SDK,用 WebView 组件打开对话链接。

原生工程里嵌了一些 H5 页面的混合开发 APP 不属于这一类 —— 那仍然是原生工程,按装进 Android 和装进 iOS 集成即可。

合从没有提供 Flutter、React Native 或 uni-app 的插件包,这三类工程走的是下面这条路:在 APP 里放一个 WebView 组件,打开一条对话链接。用的是对话链接渠道,不是 App 渠道,所以 App 渠道那套原生能力在这条路上不存在。

做法 ​

  1. 在工作台建一个对话链接渠道,拿到链接地址,见对话链接概述。
  2. 在 APP 里放一个 WebView 组件,打开这个地址。uni-app 用 web-view,React Native 用 react-native-webview,Flutter 用 webview_flutter。
  3. 客户在这个页面里咨询,消息进入客服工作台,接待流程和其他渠道完全一样。

让客服知道来的是谁 ​

在链接后面拼参数,把会员 ID 和称呼带过去:

https://你的链接地址?u=会员ID&n=张三

完整的参数清单和注意事项见对话链接的客户身份。

这条路上没有的三件事 ​

原生 SDK 提供而这条路拿不到的能力:

  • 未读红点 —— 没有现成通道把未读数交给你的界面
  • 客户离线时的推送 —— 客户退出 APP 后客服的回复无法通知到他
  • 权限说明弹窗 —— 应用市场要求的权限用途说明,要你自己在 WebView 的权限回调里实现

需要这三件事,且你的框架支持编写原生模块,可以在原生层集成 SDK 再桥接到 JS 层,见装进 Android 与装进 iOS。

这条路上建议用 SDK 提供的整页界面:它是一个独立的页面,在 platform channel 里调一行就能打开,不用把客服视图塞进框架的视图树,也就不用处理那几个宿主回调转发。合从没有在这几个框架上做过验证,具体集成方式以你的框架文档为准。

WebView 要打开哪些开关 ​

用 React Native、Flutter 这类能拿到底层 WebView 配置的框架时,有几项要确认,否则功能会缺:

平台要做什么不做的症状
Android实现 WebChromeClient.onShowFileChooser客户点发图片完全没反应
Android开启 javaScriptEnabled 和 domStorageEnabled前者不开页面不工作,后者不开客户每次进来都是新访客
Android在 onPermissionRequest 里放行音频采集,并在 manifest 成对声明 RECORD_AUDIO 与 MODIFY_AUDIO_SETTINGS语音消息用不了;只声明前一条时,客户点了允许仍提示麦克风被占用
iOSInfo.plist 补 NSMicrophoneUsageDescription、NSCameraUsageDescription客户点录音时 APP 闪退
iOSallowsInlineMediaPlayback = true视频被系统全屏播放器接管

uni-app 的 web-view 组件不开放这些配置,能力以框架自身提供的为准。

小程序不走这条路 ​

微信、支付宝、抖音等小程序有自己的接入要求,见小程序接入。

下一步 ​