一、普通网页(H5)
用 (最稳妥,尽量让用户点链接而不是纯 JS)
打开福音在线客服
用 JS(部分浏览器会拦截非用户手势的跳转)
window.location.href = 'boxim://cs';
注意
很多浏览器里 file:// 打开的页面 会拦自定义协议,要用 HTTPS 页面 或本地 http://本机IP:端口(你们 deep-link-test.html 里写过模拟器用 http://10.0.2.2:...)。
微信内置浏览器 对自定义协议限制多,常需「在浏览器打开」或走你们自己的 H5 中转页。
二、Android 里「别的 App」
在 已安装你们 App 的前提下,用 显式或隐式 Intent 打开:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("boxim://cs"));
intent.addCategory(Intent.CATEGORY_BROWSABLE);
// 可选:指定包名,避免弹出选择器(包名以你实际打包为准)
intent.setPackage("uni.app.UNI5A96A50");
context.startActivity(intent);
Kotlin 同理:Uri.parse("boxim://cs")。
若要从 Chrome 调起,和你们测试页一样可以用 intent 链接(需把 package= 改成当前包名):
intent://cs#Intent;scheme=boxim;package=你的包名;category=android.intent.category.BROWSABLE;end
ADB 自测:
adb shell am start -a android.intent.action.VIEW -d "boxim://cs" 你的包名/io.dcloud.PandoraEntry
包名在 HBuilder 发行配置 / AndroidManifest 里看,自定义基座与正式包可能不同。
三、iOS 里「别的 App」
若已在 Xcode / 能力里配好 boxim URL Types(uni-app 打包一般会随 manifest 带上):
Swift
if let url = URL(string: "boxim://cs") {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
Objective-C
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"boxim://cs"] options:@{} completionHandler:nil];
若对方是 Universal Links(https 域名直开 App),要在苹果开发者后台 + 你们服务端配 apple-app-site-association,和 Scheme 是另一套路,需要再单独配。
四、和你们项目里的对照
本地自测页:im-uniapp-ces/static/deep-link-test.html(含 HTTP、、intent、ADB 说明)。
Android 清单里还有 VIEW + scheme=boxim 的 intent-filter(nativeResources/android/AndroidManifest.xml),所以 boxim:// 任意合法 path 都会进你们 App,再由 App.vue 里逻辑决定进客服还是别的页。
五、给对方接入时最少要交代的三句
协议名:boxim
客服入口示例:boxim://cs(或你们约定的 path)
Android 包名、iOS 是否已上架且用户已安装,否则只能跳到应用商店或 H5 落地页。
如果你希望 HTTPS 链接(例如 https://xxx.com/help)一点就开 App,需要再加 App Links(Android)+ Universal Links(iOS) 和服务器上的配置文件,可以说一下我按你们域名写一版清单步骤(仍不写无关仓库文件)。