From 791eafd61b1b51e8b9d4c8eca93786c68c49938a Mon Sep 17 00:00:00 2001 From: wangshengjin <934457719@qq.com> Date: Tue, 21 Jan 2025 20:02:54 +0800 Subject: [PATCH 1/6] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Ddart=E4=B8=8Eweb?= =?UTF-8?q?=E9=80=9A=E4=BF=A1=E6=97=A0=E6=B3=95=E6=88=90=E5=8A=9F=E9=97=AE?= =?UTF-8?q?=E9=A2=98controller.postWebMessage(message:=20WebMessage(data:?= =?UTF-8?q?=20"capturePort",=20ports:=20[port2])?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/ets/components/plugin/types/WebMessageCompatExt.ets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/types/WebMessageCompatExt.ets b/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/types/WebMessageCompatExt.ets index 604f1cde..ed269e9b 100644 --- a/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/types/WebMessageCompatExt.ets +++ b/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/types/WebMessageCompatExt.ets @@ -49,7 +49,7 @@ export default class WebMessageCompatExt { let type: number = map.get("type") as number let portMapList: List> = map.get("ports") as List> let ports: List | null = null; - if (portMapList != null && !portMapList.isEmpty()) { + if (portMapList != null && portMapList.length != 0) { ports = new List(); for (let i = 0; i < portMapList.length; i++) { ports.add(WebMessagePortCompatExt.fromMap(portMapList[i])); -- Gitee From f16ac9dc3eba6e20c833d0b441851fbc5047085b Mon Sep 17 00:00:00 2001 From: wangshengjin <934457719@qq.com> Date: Wed, 22 Jan 2025 15:43:14 +0800 Subject: [PATCH 2/6] =?UTF-8?q?fix:=20js=E6=97=A0=E6=B3=95=E6=AD=A3?= =?UTF-8?q?=E5=B8=B8=E5=90=91dart=20postmessage=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ets/components/plugin/types/WebMessageCompatExt.ets | 7 ++++++- .../plugin/webview/web_message/WebMessageChannel.ets | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/types/WebMessageCompatExt.ets b/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/types/WebMessageCompatExt.ets index ed269e9b..63e382f3 100644 --- a/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/types/WebMessageCompatExt.ets +++ b/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/types/WebMessageCompatExt.ets @@ -33,12 +33,17 @@ export default class WebMessageCompatExt { public static fromMapWebMessageCompat(message: web_webview.WebMessageExt): WebMessageCompatExt { let data: Any + let type = 0 + // https://developer.android.com/reference/androidx/webkit/WebMessageCompat + // https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-webview-V13#webmessagetype10 + // 鸿蒙中getType()字符串类型返回1,而android中字符串返回0,为保持一致需要修改此处代码 if(message.getType() == web_webview.WebMessageType.ARRAY_BUFFER) { data = message.getArrayBuffer() + type = 1 } else { data = message.getString() } - return new WebMessageCompatExt(data, message.getType(), null); + return new WebMessageCompatExt(data, type, null); } public static fromMap(map: Map | null): WebMessageCompatExt | null { diff --git a/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/webview/web_message/WebMessageChannel.ets b/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/webview/web_message/WebMessageChannel.ets index c4bd1cc9..0ac68f77 100644 --- a/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/webview/web_message/WebMessageChannel.ets +++ b/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/webview/web_message/WebMessageChannel.ets @@ -79,7 +79,8 @@ export class WebMessageChannel implements Disposable { let webMessageChannel: WebMessageChannel = this; try { webMessagePort.onMessageEventExt((msg) => { - webMessageChannel.onMessage(index, message != null ? WebMessageCompatExt.fromMapWebMessageCompat(msg) : null) + let msgData:WebMessageCompatExt|null = WebMessageCompatExt.fromMapWebMessageCompat(msg) + webMessageChannel.onMessage(index, msgData) }) result.success(true); } catch (e) { -- Gitee From 3924a7a2fa46c6e6a7d84dc25550ec341abb5391 Mon Sep 17 00:00:00 2001 From: wangshengjin <934457719@qq.com> Date: Wed, 22 Jan 2025 18:25:51 +0800 Subject: [PATCH 3/6] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dapp=E7=AB=AF?= =?UTF-8?q?=E5=90=91web=E5=8F=91=E9=80=81=E6=95=B0=E6=8D=AE=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../webview/web_message/WebMessageChannel.ets | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/webview/web_message/WebMessageChannel.ets b/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/webview/web_message/WebMessageChannel.ets index 0ac68f77..b1472396 100644 --- a/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/webview/web_message/WebMessageChannel.ets +++ b/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/webview/web_message/WebMessageChannel.ets @@ -109,14 +109,23 @@ export class WebMessageChannel implements Disposable { /// 安卓端还会传入WebMessagePortCompat[]类型,目前ohos没有 if (data != null && message.getType() == web_webview.WebMessageType.ARRAY_BUFFER) { let webMessageExt: web_webview.WebMessageExt = new web_webview.WebMessageExt() - webMessageExt.setArrayBuffer(data as ArrayBuffer) webMessageExt.setType(web_webview.WebMessageType.ARRAY_BUFFER) + webMessageExt.setArrayBuffer(data as ArrayBuffer) port.postMessageEventExt(webMessageExt); } else { - let webMessageExt: web_webview.WebMessageExt = new web_webview.WebMessageExt() - webMessageExt.setString(data != null ? data.toString() : null) - webMessageExt.setType(web_webview.WebMessageType.STRING) - port.postMessageEventExt(webMessageExt); + let messData: string = ''; + if(data != null) { + if(typeof data === 'string'){ + messData = data; + } else { + try { + messData = data.toString() + } catch(e) { + console.log(e); + } + } + } + port.postMessageEvent(messData) } result.success(true); } catch (e) { -- Gitee From 358b704f4efc0f01ae4b178238180206d20d5d21 Mon Sep 17 00:00:00 2001 From: wangshengjin <934457719@qq.com> Date: Tue, 21 Jan 2025 20:02:54 +0800 Subject: [PATCH 4/6] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Ddart=E4=B8=8Eweb?= =?UTF-8?q?=E9=80=9A=E4=BF=A1=E6=97=A0=E6=B3=95=E6=88=90=E5=8A=9F=E9=97=AE?= =?UTF-8?q?=E9=A2=98controller.postWebMessage(message:=20WebMessage(data:?= =?UTF-8?q?=20"capturePort",=20ports:=20[port2])?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangshengjin <934457719@qq.com> --- .../main/ets/components/plugin/types/WebMessageCompatExt.ets | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/types/WebMessageCompatExt.ets b/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/types/WebMessageCompatExt.ets index 604f1cde..ed269e9b 100644 --- a/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/types/WebMessageCompatExt.ets +++ b/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/types/WebMessageCompatExt.ets @@ -49,7 +49,7 @@ export default class WebMessageCompatExt { let type: number = map.get("type") as number let portMapList: List> = map.get("ports") as List> let ports: List | null = null; - if (portMapList != null && !portMapList.isEmpty()) { + if (portMapList != null && portMapList.length != 0) { ports = new List(); for (let i = 0; i < portMapList.length; i++) { ports.add(WebMessagePortCompatExt.fromMap(portMapList[i])); -- Gitee From 25c26003acfb5b9676c50061633c138fdb9b49a6 Mon Sep 17 00:00:00 2001 From: wangshengjin <934457719@qq.com> Date: Wed, 22 Jan 2025 15:43:14 +0800 Subject: [PATCH 5/6] =?UTF-8?q?fix:=20js=E6=97=A0=E6=B3=95=E6=AD=A3?= =?UTF-8?q?=E5=B8=B8=E5=90=91dart=20postmessage=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangshengjin <934457719@qq.com> --- .../ets/components/plugin/types/WebMessageCompatExt.ets | 7 ++++++- .../plugin/webview/web_message/WebMessageChannel.ets | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/types/WebMessageCompatExt.ets b/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/types/WebMessageCompatExt.ets index ed269e9b..63e382f3 100644 --- a/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/types/WebMessageCompatExt.ets +++ b/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/types/WebMessageCompatExt.ets @@ -33,12 +33,17 @@ export default class WebMessageCompatExt { public static fromMapWebMessageCompat(message: web_webview.WebMessageExt): WebMessageCompatExt { let data: Any + let type = 0 + // https://developer.android.com/reference/androidx/webkit/WebMessageCompat + // https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-webview-V13#webmessagetype10 + // 鸿蒙中getType()字符串类型返回1,而android中字符串返回0,为保持一致需要修改此处代码 if(message.getType() == web_webview.WebMessageType.ARRAY_BUFFER) { data = message.getArrayBuffer() + type = 1 } else { data = message.getString() } - return new WebMessageCompatExt(data, message.getType(), null); + return new WebMessageCompatExt(data, type, null); } public static fromMap(map: Map | null): WebMessageCompatExt | null { diff --git a/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/webview/web_message/WebMessageChannel.ets b/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/webview/web_message/WebMessageChannel.ets index c4bd1cc9..0ac68f77 100644 --- a/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/webview/web_message/WebMessageChannel.ets +++ b/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/webview/web_message/WebMessageChannel.ets @@ -79,7 +79,8 @@ export class WebMessageChannel implements Disposable { let webMessageChannel: WebMessageChannel = this; try { webMessagePort.onMessageEventExt((msg) => { - webMessageChannel.onMessage(index, message != null ? WebMessageCompatExt.fromMapWebMessageCompat(msg) : null) + let msgData:WebMessageCompatExt|null = WebMessageCompatExt.fromMapWebMessageCompat(msg) + webMessageChannel.onMessage(index, msgData) }) result.success(true); } catch (e) { -- Gitee From 5adbe0054578c49370fbc2785a25f773021bc0b8 Mon Sep 17 00:00:00 2001 From: wangshengjin <934457719@qq.com> Date: Wed, 22 Jan 2025 18:25:51 +0800 Subject: [PATCH 6/6] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dapp=E7=AB=AF?= =?UTF-8?q?=E5=90=91web=E5=8F=91=E9=80=81=E6=95=B0=E6=8D=AE=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangshengjin <934457719@qq.com> --- .../webview/web_message/WebMessageChannel.ets | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/webview/web_message/WebMessageChannel.ets b/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/webview/web_message/WebMessageChannel.ets index 0ac68f77..b1472396 100644 --- a/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/webview/web_message/WebMessageChannel.ets +++ b/flutter_inappwebview_ohos/ohos/src/main/ets/components/plugin/webview/web_message/WebMessageChannel.ets @@ -109,14 +109,23 @@ export class WebMessageChannel implements Disposable { /// 安卓端还会传入WebMessagePortCompat[]类型,目前ohos没有 if (data != null && message.getType() == web_webview.WebMessageType.ARRAY_BUFFER) { let webMessageExt: web_webview.WebMessageExt = new web_webview.WebMessageExt() - webMessageExt.setArrayBuffer(data as ArrayBuffer) webMessageExt.setType(web_webview.WebMessageType.ARRAY_BUFFER) + webMessageExt.setArrayBuffer(data as ArrayBuffer) port.postMessageEventExt(webMessageExt); } else { - let webMessageExt: web_webview.WebMessageExt = new web_webview.WebMessageExt() - webMessageExt.setString(data != null ? data.toString() : null) - webMessageExt.setType(web_webview.WebMessageType.STRING) - port.postMessageEventExt(webMessageExt); + let messData: string = ''; + if(data != null) { + if(typeof data === 'string'){ + messData = data; + } else { + try { + messData = data.toString() + } catch(e) { + console.log(e); + } + } + } + port.postMessageEvent(messData) } result.success(true); } catch (e) { -- Gitee