FEAT => 本次更新项目为:
交互完成,开始封装
This commit is contained in:
@@ -48,13 +48,7 @@
|
|||||||
receivedMessages: [],
|
receivedMessages: [],
|
||||||
messageId: 0,
|
messageId: 0,
|
||||||
// URL 参数配置
|
// URL 参数配置
|
||||||
urlParams: {
|
urlParams: {}
|
||||||
userId: '12345',
|
|
||||||
token: 'abc123',
|
|
||||||
theme: 'dark',
|
|
||||||
language: 'zh-CN',
|
|
||||||
timestamp: Date.now()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onLoad() {
|
onLoad() {
|
||||||
@@ -84,10 +78,12 @@
|
|||||||
sendMessageToIframe() {
|
sendMessageToIframe() {
|
||||||
this.messageId++;
|
this.messageId++;
|
||||||
const message = {
|
const message = {
|
||||||
id: this.messageId,
|
type: 0, // 数据类型:0数据交互 1App功能调用
|
||||||
type: 'fromApp',
|
data: {
|
||||||
content: `Hello,我是 App 发送的消息 ${this.messageId}`,
|
id: this.messageId,
|
||||||
timestamp: Date.now()
|
content: `Hello,我是 App 发送的消息 ${this.messageId}`,
|
||||||
|
timestamp: Date.now()
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// 将消息添加到URL参数中
|
// 将消息添加到URL参数中
|
||||||
@@ -104,15 +100,18 @@
|
|||||||
|
|
||||||
this.receivedMessages.push(`[${new Date().toLocaleTimeString()}] ${JSON.stringify(webData)}`);
|
this.receivedMessages.push(`[${new Date().toLocaleTimeString()}] ${JSON.stringify(webData)}`);
|
||||||
|
|
||||||
if (webData.type === 'ready') {
|
if (webData.type === 0) {
|
||||||
// console.log('web-view 已准备就绪');
|
// 数据交互
|
||||||
|
console.log('收到数据交互消息:', webData.data);
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: 'web-view 连接成功',
|
title: `收到数据:${webData.data.content || '无内容'}`,
|
||||||
icon: 'success'
|
icon: 'none'
|
||||||
});
|
});
|
||||||
} else if (webData.type === 'toApp') {
|
} else if (webData.type === 1) {
|
||||||
|
// App功能调用
|
||||||
|
console.log('收到App功能调用:', webData.data);
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: `收到:${webData.content}`,
|
title: `收到功能调用:${webData.data.action || '未知功能'}`,
|
||||||
icon: 'none'
|
icon: 'none'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import React, { useState, useEffect } from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
import style from "./index.module.scss";
|
import style from "./index.module.scss";
|
||||||
import { json } from "stream/consumers";
|
|
||||||
|
|
||||||
// 声明全局的 uni 对象
|
// 声明全局的 uni 对象
|
||||||
declare global {
|
declare global {
|
||||||
@@ -10,10 +9,8 @@ declare global {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface Message {
|
interface Message {
|
||||||
id: number;
|
type: number; // 数据类型:0数据交互 1App功能调用
|
||||||
type: string;
|
|
||||||
data: any;
|
data: any;
|
||||||
timestamp: number;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const IframeDebugPage: React.FC = () => {
|
const IframeDebugPage: React.FC = () => {
|
||||||
@@ -40,9 +37,9 @@ const IframeDebugPage: React.FC = () => {
|
|||||||
|
|
||||||
if (messageParam) {
|
if (messageParam) {
|
||||||
try {
|
try {
|
||||||
const message = decodeURIComponent(messageParam);
|
const message = JSON.parse(decodeURIComponent(messageParam));
|
||||||
console.log("存客宝 收到消息:", message);
|
console.log("存客宝 收到消息:", message);
|
||||||
handleReceivedMessage(JSON.parse(message));
|
handleReceivedMessage(message);
|
||||||
// 清除URL中的message参数
|
// 清除URL中的message参数
|
||||||
const newUrl =
|
const newUrl =
|
||||||
window.location.pathname +
|
window.location.pathname +
|
||||||
@@ -62,13 +59,12 @@ const IframeDebugPage: React.FC = () => {
|
|||||||
// 发送准备就绪消息
|
// 发送准备就绪消息
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
sendMessageToParent({
|
sendMessageToParent({
|
||||||
id: 0,
|
type: 0, // 数据交互
|
||||||
type: "ready",
|
|
||||||
data: {
|
data: {
|
||||||
|
action: "ready",
|
||||||
status: "loaded",
|
status: "loaded",
|
||||||
url: window.location.href,
|
url: window.location.href,
|
||||||
},
|
},
|
||||||
timestamp: Date.now(),
|
|
||||||
});
|
});
|
||||||
}, 500);
|
}, 500);
|
||||||
};
|
};
|
||||||
@@ -100,7 +96,7 @@ const IframeDebugPage: React.FC = () => {
|
|||||||
|
|
||||||
// 处理接收到的消息
|
// 处理接收到的消息
|
||||||
const handleReceivedMessage = (message: Message) => {
|
const handleReceivedMessage = (message: Message) => {
|
||||||
const messageText = `[${new Date().toLocaleTimeString()}] 收到: ${message}`;
|
const messageText = `[${new Date().toLocaleTimeString()}] 收到: ${JSON.stringify(message)}`;
|
||||||
setReceivedMessages(prev => [...prev, messageText]);
|
setReceivedMessages(prev => [...prev, messageText]);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -128,14 +124,13 @@ const IframeDebugPage: React.FC = () => {
|
|||||||
setMessageId(newMessageId);
|
setMessageId(newMessageId);
|
||||||
|
|
||||||
const message: Message = {
|
const message: Message = {
|
||||||
id: newMessageId,
|
type: 0, // 数据交互
|
||||||
type: "toApp",
|
|
||||||
data: {
|
data: {
|
||||||
|
id: newMessageId,
|
||||||
content: inputMessage,
|
content: inputMessage,
|
||||||
source: "web-view",
|
source: "web-view",
|
||||||
timestamp: Date.now(),
|
timestamp: Date.now(),
|
||||||
},
|
},
|
||||||
timestamp: Date.now(),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
sendMessageToParent(message);
|
sendMessageToParent(message);
|
||||||
@@ -148,14 +143,29 @@ const IframeDebugPage: React.FC = () => {
|
|||||||
setMessageId(newMessageId);
|
setMessageId(newMessageId);
|
||||||
|
|
||||||
const message: Message = {
|
const message: Message = {
|
||||||
id: newMessageId,
|
type: 0, // 数据交互
|
||||||
type: "toApp",
|
|
||||||
data: {
|
data: {
|
||||||
|
id: newMessageId,
|
||||||
action: "ping",
|
action: "ping",
|
||||||
content: `web-view测试消息 ${newMessageId}`,
|
content: `web-view测试消息 ${newMessageId}`,
|
||||||
random: Math.random(),
|
random: Math.random(),
|
||||||
},
|
},
|
||||||
timestamp: Date.now(),
|
};
|
||||||
|
|
||||||
|
sendMessageToParent(message);
|
||||||
|
};
|
||||||
|
|
||||||
|
// 发送App功能调用消息
|
||||||
|
const sendAppFunctionCall = () => {
|
||||||
|
const message: Message = {
|
||||||
|
type: 1, // App功能调用
|
||||||
|
data: {
|
||||||
|
action: "showToast",
|
||||||
|
params: {
|
||||||
|
title: "来自H5的功能调用",
|
||||||
|
icon: "success",
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
sendMessageToParent(message);
|
sendMessageToParent(message);
|
||||||
@@ -201,6 +211,12 @@ const IframeDebugPage: React.FC = () => {
|
|||||||
>
|
>
|
||||||
发送测试消息
|
发送测试消息
|
||||||
</button>
|
</button>
|
||||||
|
<button
|
||||||
|
onClick={sendAppFunctionCall}
|
||||||
|
className={`${style.btn} ${style["btn-warning"]}`}
|
||||||
|
>
|
||||||
|
功能调用
|
||||||
|
</button>
|
||||||
<button
|
<button
|
||||||
onClick={clearMessages}
|
onClick={clearMessages}
|
||||||
className={`${style.btn} ${style["btn-danger"]}`}
|
className={`${style.btn} ${style["btn-danger"]}`}
|
||||||
|
|||||||
Reference in New Issue
Block a user