Appearance
uni-app、React Native、Flutter 怎么接
跨平台框架不用装原生 SDK,用 WebView 组件打开对话链接。
原生工程里嵌了一些 H5 页面的混合开发 APP 不属于这一类 —— 那仍然是原生工程,按装进 Android 和装进 iOS 集成即可。
合从没有提供 Flutter、React Native 或 uni-app 的插件包,这三类工程走的是下面这条路:在 APP 里放一个 WebView 组件,打开一条对话链接。用的是对话链接渠道,不是 App 渠道,所以 App 渠道那套原生能力在这条路上不存在。
做法
- 在工作台建一个对话链接渠道,拿到链接地址,见对话链接概述。
- 在 APP 里放一个 WebView 组件,打开这个地址。uni-app 用
web-view,React Native 用react-native-webview,Flutter 用webview_flutter。 - 客户在这个页面里咨询,消息进入客服工作台,接待流程和其他渠道完全一样。
让客服知道来的是谁
在链接后面拼参数,把会员 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 | 语音消息用不了;只声明前一条时,客户点了允许仍提示麦克风被占用 |
| iOS | Info.plist 补 NSMicrophoneUsageDescription、NSCameraUsageDescription | 客户点录音时 APP 闪退 |
| iOS | allowsInlineMediaPlayback = true | 视频被系统全屏播放器接管 |
uni-app 的 web-view 组件不开放这些配置,能力以框架自身提供的为准。
小程序不走这条路
微信、支付宝、抖音等小程序有自己的接入要求,见小程序接入。