diff --git a/ckApp/manifest.json b/ckApp/manifest.json index 53224d98..bb255e1e 100644 --- a/ckApp/manifest.json +++ b/ckApp/manifest.json @@ -41,7 +41,9 @@ ] }, /* ios打包配置 */ - "ios" : {}, + "ios" : { + "dSYMs" : false + }, /* SDK配置 */ "sdkConfigs" : {} } diff --git a/ckApp/pages.json b/ckApp/pages.json index e61b6eea..570407ef 100644 --- a/ckApp/pages.json +++ b/ckApp/pages.json @@ -1,5 +1,5 @@ { - "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages + "pages": [ { "path": "pages/index/index", "style": { diff --git a/ckApp/pages/index/index.vue b/ckApp/pages/index/index.vue index 8fc18ea2..7d0341d2 100644 --- a/ckApp/pages/index/index.vue +++ b/ckApp/pages/index/index.vue @@ -1,40 +1,10 @@ - - + \ No newline at end of file diff --git a/ckApp/utils/common.js b/ckApp/utils/common.js index 2bdcef31..f50cc5c5 100644 --- a/ckApp/utils/common.js +++ b/ckApp/utils/common.js @@ -22,7 +22,7 @@ export function getTopSafeAreaHeightAsync() { return; } - resolve(res.statusBarHeight || 0); + resolve(`${res.statusBarHeight*2 || 0}px`); } catch (error) { reject(error); diff --git a/ckApp/utils/config.js b/ckApp/utils/config.js deleted file mode 100644 index e69de29b..00000000 diff --git a/nkebao/src/components/NavCommon/index.tsx b/nkebao/src/components/NavCommon/index.tsx index 2cc6ff5a..0ee5ec1b 100644 --- a/nkebao/src/components/NavCommon/index.tsx +++ b/nkebao/src/components/NavCommon/index.tsx @@ -1,8 +1,8 @@ -import React from "react"; +import React, { useEffect, useState } from "react"; import { NavBar } from "antd-mobile"; import { ArrowLeftOutlined } from "@ant-design/icons"; import { useNavigate } from "react-router-dom"; - +import { getSafeAreaHeight } from "@/utils/common"; interface NavCommonProps { title: string; backFn?: () => void; @@ -17,8 +17,18 @@ const NavCommon: React.FC = ({ left, }) => { const navigate = useNavigate(); + const [paddingTop, setPaddingTop] = useState("0px"); + useEffect(() => { + setPaddingTop(getSafeAreaHeight() + "px"); + }, []); + return ( -
+
{ const [receivedMessages, setReceivedMessages] = useState([]); const [messageId, setMessageId] = useState(0); const [inputMessage, setInputMessage] = useState(""); + const [connectStatus, setConnectStatus] = useState(false); // 解析 URL 参数中的消息 const parseUrlMessage = () => { @@ -63,6 +71,10 @@ const IframeDebugPage: React.FC = () => { const handleReceivedMessage = (message: Message) => { const messageText = `[${new Date().toLocaleTimeString()}] 收到: ${JSON.stringify(message)}`; setReceivedMessages(prev => [...prev, messageText]); + console.log("message.type", message.type); + if ([TYPE_EMUE.CONNECT].includes(message.type)) { + setConnectStatus(true); + } }; // 向 App 发送消息 @@ -94,7 +106,7 @@ const IframeDebugPage: React.FC = () => { setMessageId(newMessageId); const message: Message = { - type: 0, // 数据交互 + type: TYPE_EMUE.DATA, // 数据交互 data: { id: newMessageId, content: inputMessage, @@ -113,7 +125,7 @@ const IframeDebugPage: React.FC = () => { setMessageId(newMessageId); const message: Message = { - type: 0, // 数据交互 + type: TYPE_EMUE.DATA, // 数据交互 data: { id: newMessageId, action: "ping", @@ -148,7 +160,23 @@ const IframeDebugPage: React.FC = () => { }; return ( - }> + + ) : ( + + 连接中... + + + ) + } + /> + } + >
diff --git a/nkebao/src/pages/iframe/init.tsx b/nkebao/src/pages/iframe/init.tsx index a935c6ce..b49e01db 100644 --- a/nkebao/src/pages/iframe/init.tsx +++ b/nkebao/src/pages/iframe/init.tsx @@ -2,8 +2,9 @@ import React, { useState, useEffect } from "react"; import style from "./index.module.scss"; import Layout from "@/components/Layout/Layout"; import NavCommon from "@/components/NavCommon"; -import { LoadingOutlined, CheckCircleOutlined } from "@ant-design/icons"; import { Input } from "antd"; +import { useNavigate } from "react-router-dom"; + // 声明全局的 uni 对象 declare global { interface Window { @@ -26,8 +27,7 @@ const IframeDebugPage: React.FC = () => { const [receivedMessages, setReceivedMessages] = useState([]); const [messageId, setMessageId] = useState(0); const [inputMessage, setInputMessage] = useState(""); - const [connectStatus, setConnectStatus] = useState(false); - + const navigate = useNavigate(); // 解析 URL 参数中的消息 const parseUrlMessage = () => { const search = window.location.search.substring(1); @@ -72,8 +72,9 @@ const IframeDebugPage: React.FC = () => { const messageText = `[${new Date().toLocaleTimeString()}] 收到: ${JSON.stringify(message)}`; setReceivedMessages(prev => [...prev, messageText]); console.log("message.type", message.type); - if ([TYPE_EMUE.CONNECT].includes(message.type)) { - setConnectStatus(true); + if ([TYPE_EMUE.CONFIG].includes(message.type)) { + localStorage.setItem("paddingTop", message.data.paddingTop); + navigate("/"); } }; @@ -160,23 +161,7 @@ const IframeDebugPage: React.FC = () => { }; return ( - - ) : ( - - 连接中... - - - ) - } - /> - } - > + }>
diff --git a/nkebao/src/pages/login/login.module.scss b/nkebao/src/pages/login/login.module.scss index 28a3a722..7574341f 100644 --- a/nkebao/src/pages/login/login.module.scss +++ b/nkebao/src/pages/login/login.module.scss @@ -116,10 +116,6 @@ margin: 0; } -.form-container { - margin-bottom: 20px; -} - // 标签页样式 .tab-container { display: flex; diff --git a/nkebao/src/pages/login/login.tsx b/nkebao/src/pages/login/login.tsx index c1b52807..1bc13773 100644 --- a/nkebao/src/pages/login/login.tsx +++ b/nkebao/src/pages/login/login.tsx @@ -9,6 +9,8 @@ import { import { useUserStore } from "@/store/module/user"; import { loginWithPassword, loginWithCode, sendVerificationCode } from "./api"; import style from "./login.module.scss"; +import Layout from "@/components/Layout/Layout"; +import NavCommon from "@/components/NavCommon"; const Login: React.FC = () => { const [form] = Form.useForm(); @@ -137,9 +139,11 @@ const Login: React.FC = () => { const handleAppleLogin = () => { Toast.show({ content: "Apple登录功能开发中", position: "top" }); }; - + const paddingTop = localStorage.getItem("paddingTop") || "44px"; return (
+
+
{/* 背景装饰 */}
diff --git a/nkebao/src/utils/common.ts b/nkebao/src/utils/common.ts index 2dd200f8..a71c3f87 100644 --- a/nkebao/src/utils/common.ts +++ b/nkebao/src/utils/common.ts @@ -35,3 +35,36 @@ export const comfirm = ( }); }); }; + +export function getSafeAreaHeight() { + // 1. 优先使用 CSS 环境变量 + if (CSS.supports("padding-top", "env(safe-area-inset-top)")) { + const safeAreaTop = getComputedStyle( + document.documentElement, + ).getPropertyValue("env(safe-area-inset-top)"); + const height = parseInt(safeAreaTop) || 0; + if (height > 0) return height; + } + + // 2. 设备检测 + const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent); + const isAndroid = /Android/.test(navigator.userAgent); + + if (isIOS) { + // iOS 设备 + const isIPhoneX = window.screen.height >= 812; + return isIPhoneX ? 44 : 20; + } else if (isAndroid) { + // Android 设备 + return 24; + } + + // 3. 默认值 + return 0; +} +// 设置全局 CSS 变量 +export function initSafeArea() { + const root = document.documentElement; + const height = getSafeAreaHeight(); + root.style.setProperty("--safe-area-top", `${height}px`); +}