Files
cunkebao_v3/Appbuild/README.md

281 lines
7.2 KiB
Markdown
Raw Normal View History

# 存客宝 - UniApp 套壳应用
这是一个基于 UniApp 开发的安卓套壳应用,主要功能是作为内置浏览器加载目标网站,并提供完整的组件通信功能。
## 🚀 主要特性
- **全屏 WebView** - 无边框、无导航栏的全屏显示
- **双向通信** - UniApp 与网页之间的完整消息通信
- **无缝体验** - 用户无法察觉这是一个套壳应用
- **错误处理** - 完善的加载失败和网络错误处理
- **备用地址** - 支持主地址失败时自动切换到备用地址
- **调试模式** - 可选的调试信息显示
## 📱 应用配置
### 1. 修改目标网站
`config.js` 文件中修改目标网站地址:
```javascript
webConfig: {
// 主要目标网站URL请替换为您的实际网站
mainUrl: 'https://your-target-website.com',
// 备用网站URL如果主网站无法访问
fallbackUrl: 'https://backup-website.com',
}
```
### 2. 应用设置
```javascript
appConfig: {
// 应用名称
appName: '存客宝',
// 应用版本
version: '1.0.0',
// 是否显示加载动画
showLoading: true,
// 加载超时时间(毫秒)
loadingTimeout: 10000,
// 是否启用调试模式
debug: false
}
```
## 🔄 通信功能
### UniApp 向网页发送消息
网页可以通过以下方式接收来自 UniApp 的消息:
```javascript
// 监听来自 UniApp 的消息
window.addEventListener("uniAppMessage", function (event) {
const message = event.detail;
console.log("收到 UniApp 消息:", message);
switch (message.type) {
case "userInfo":
// 处理用户信息
console.log("用户信息:", message.data);
break;
case "deviceInfo":
// 处理设备信息
console.log("设备信息:", message.data);
break;
case "shareResult":
// 处理分享结果
console.log("分享结果:", message.data);
break;
case "paymentResult":
// 处理支付结果
console.log("支付结果:", message.data);
break;
case "confirmResult":
// 处理确认结果
console.log("确认结果:", message.data);
break;
}
});
```
### 网页向 UniApp 发送消息
网页可以通过 `window.uniAppBridge` 对象与 UniApp 通信:
```javascript
// 检查桥接是否可用
if (window.uniAppBridge) {
// 获取用户信息
window.uniAppBridge.getUserInfo();
// 获取设备信息
window.uniAppBridge.getDeviceInfo();
// 显示 Toast
window.uniAppBridge.showToast("操作成功!", 2000);
// 显示 Alert
window.uniAppBridge.showAlert("提示", "这是一个提示信息");
// 显示 Confirm
window.uniAppBridge.showConfirm("确认", "确定要执行此操作吗?");
// 分享
window.uniAppBridge.share({
url: "https://example.com",
title: "分享标题",
summary: "分享描述",
});
// 支付
window.uniAppBridge.payment({
amount: 100,
orderId: "order123",
description: "商品描述",
});
// 发送自定义消息
window.uniAppBridge.postMessage("customType", {
key: "value",
data: "custom data",
});
}
```
## 🛠️ 开发指南
### 1. 环境准备
确保已安装 HBuilderX 并配置好 UniApp 开发环境。
### 2. 修改配置
1. 打开 `config.js` 文件
2. 修改 `mainUrl` 为您的目标网站地址
3. 根据需要修改其他配置项
### 3. 编译打包
1. 在 HBuilderX 中打开项目
2. 选择 "发行" -> "原生 App-云打包"
3. 选择 Android 平台
4. 配置应用图标和签名信息
5. 点击打包
### 4. 测试通信功能
在目标网站中添加以下测试代码:
```html
<!DOCTYPE html>
<html>
<head>
<title>测试页面</title>
</head>
<body>
<h1>UniApp 套壳应用测试</h1>
<button onclick="testCommunication()">测试通信</button>
<button onclick="getUserInfo()">获取用户信息</button>
<button onclick="getDeviceInfo()">获取设备信息</button>
<button onclick="showToast()">显示 Toast</button>
<div id="result"></div>
<script>
// 监听来自 UniApp 的消息
window.addEventListener("uniAppMessage", function (event) {
const message = event.detail;
document.getElementById("result").innerHTML =
"<p>收到消息: " + JSON.stringify(message) + "</p>";
});
function testCommunication() {
if (window.uniAppBridge) {
window.uniAppBridge.postMessage("test", {
message: "Hello from Web!",
timestamp: Date.now(),
});
} else {
alert("桥接未初始化");
}
}
function getUserInfo() {
if (window.uniAppBridge) {
window.uniAppBridge.getUserInfo();
}
}
function getDeviceInfo() {
if (window.uniAppBridge) {
window.uniAppBridge.getDeviceInfo();
}
}
function showToast() {
if (window.uniAppBridge) {
window.uniAppBridge.showToast("这是一个测试 Toast");
}
}
</script>
</body>
</html>
```
## 📋 消息类型说明
### 从网页到 UniApp
| 消息类型 | 说明 | 参数 |
| --------------- | ------------ | -------------------------------- |
| `getUserInfo` | 获取用户信息 | 无 |
| `getDeviceInfo` | 获取设备信息 | 无 |
| `toast` | 显示 Toast | `{message, duration}` |
| `alert` | 显示 Alert | `{title, content}` |
| `confirm` | 显示 Confirm | `{title, content}` |
| `share` | 分享功能 | `{url, title, summary}` |
| `payment` | 支付功能 | `{amount, orderId, description}` |
| `navigate` | 页面导航 | `{url}` |
### 从 UniApp 到网页
| 消息类型 | 说明 | 数据 |
| --------------- | -------- | --------------------- |
| `userInfo` | 用户信息 | 用户数据对象 |
| `deviceInfo` | 设备信息 | 设备数据对象 |
| `shareResult` | 分享结果 | `{success, error?}` |
| `paymentResult` | 支付结果 | `{success, orderId?}` |
| `confirmResult` | 确认结果 | `{confirmed}` |
## 🔧 自定义功能
### 添加新的消息类型
1.`config.js` 中添加新的消息类型:
```javascript
messageTypes: {
// ... 现有类型
CUSTOM_ACTION: "customAction";
}
```
2.`index.vue` 中添加处理逻辑:
```javascript
case this.config.communication.messageTypes.CUSTOM_ACTION:
this.handleCustomAction(data);
break;
```
3. 实现处理方法:
```javascript
handleCustomAction(data) {
// 处理自定义操作
console.log('自定义操作:', data);
// 返回结果给网页
this.sendToIframe('customActionResult', { success: true });
}
```
## 🚨 注意事项
1. **网络安全** - 确保目标网站使用 HTTPS 协议
2. **权限配置** - 在 `manifest.json` 中配置必要的网络权限
3. **兼容性** - 测试不同 Android 版本的兼容性
4. **性能优化** - 避免频繁的消息通信,影响性能
5. **错误处理** - 完善错误处理机制,提升用户体验
## 📞 技术支持
如有问题或需要技术支持,请联系开发团队。