Przeglądaj źródła

修改 安装条

zhejiushizhuce 2 lat temu
rodzic
commit
b4a81f8c6e

+ 54 - 18
src/App.js

@@ -69,7 +69,7 @@ import {toast} from "react-toastify";
 import {useBlocker} from "react-router";
 import {useBlocker} from "react-router";
 import FontFaceObserver from 'fontfaceobserver';
 import FontFaceObserver from 'fontfaceobserver';
 import {getTurnplate} from "@features/turnplateSlice";
 import {getTurnplate} from "@features/turnplateSlice";
-import {LOCAL_ACTIVITY_C, LOCAL_WHEEL_INVITE_CODE} from "@constants/localkey";
+import {LOCAL_ACTIVITY_C, LOCAL_VISTOR_ID, LOCAL_WHEEL_INVITE_CODE} from "@constants/localkey";
 import LoadingFull from "@components/Loading/LoadingFull";
 import LoadingFull from "@components/Loading/LoadingFull";
 import {ClickAwayListener} from "@mui/base/ClickAwayListener";
 import {ClickAwayListener} from "@mui/base/ClickAwayListener";
 import useGlobalClick from "@hooks/useGlobalClick";
 import useGlobalClick from "@hooks/useGlobalClick";
@@ -77,6 +77,7 @@ import SoundHelp from "@utils/SoundManger";
 import {ROUTE_PATH} from "@constants/routes";
 import {ROUTE_PATH} from "@constants/routes";
 import {onChangeUser, onChangeUserID} from "@features/actions/mainAction";
 import {onChangeUser, onChangeUserID} from "@features/actions/mainAction";
 import {isInAppBrowser, isShowInstallBox, openUrlUseChrome} from "@utils/UAUtils";
 import {isInAppBrowser, isShowInstallBox, openUrlUseChrome} from "@utils/UAUtils";
+import WInstallBox from "@widgets/WInstallBox";
 const App = () => {
 const App = () => {
     const dispatch = useDispatch();
     const dispatch = useDispatch();
     const fetchStatus=useSelector(getFetchStatus);
     const fetchStatus=useSelector(getFetchStatus);
@@ -139,6 +140,11 @@ const App = () => {
         // else{
         // else{
         //     localStorageSet(LOCAL_ACTIVITY_C,"");
         //     localStorageSet(LOCAL_ACTIVITY_C,"");
         // }
         // }
+        let bfp=getUrlParam("bfp");
+        if (bfp!=null&&bfp!==""){
+            localStorageSet(LOCAL_VISTOR_ID,bfp);
+            global.BFP=bfp;
+        }
     }
     }
     const reProgressierInstallBanner=()=>{
     const reProgressierInstallBanner=()=>{
         if (window.NewProgressierInstallBanner!=null)return;
         if (window.NewProgressierInstallBanner!=null)return;
@@ -194,6 +200,7 @@ const App = () => {
     const appInitData=()=>{
     const appInitData=()=>{
         // scroll to top on route change
         // scroll to top on route change
         checkInviteCode();
         checkInviteCode();
+        checkOpenInstallBox();
         loadFont();
         loadFont();
         //请求routes
         //请求routes
         startReqRoutes();
         startReqRoutes();
@@ -231,6 +238,23 @@ const App = () => {
     const onCloseHallWheel=()=>{
     const onCloseHallWheel=()=>{
         checkOpenCheckin();
         checkOpenCheckin();
     }
     }
+    const checkOpenInstallBox=()=>{
+        if (global.installed===1)return;
+        global.installed=1;
+        let time=200;
+        // global.showBindPhone();
+        // time=1000;
+        setTimeout(async ()=>{
+            // if (window.progressier==null)return ;
+            // if (window.progressier.detection.isStandalone())return;
+            // window.progressier.flow.init("install",true)
+            if (!isShowInstallBox())return;
+            if (isInAppBrowser()){
+                openUrlUseChrome();
+            }
+            global.showInstallBox();
+        },time);
+    }
     //app Effect
     //app Effect
     //初始化
     //初始化
     useEffect(() => {
     useEffect(() => {
@@ -287,23 +311,23 @@ const App = () => {
     },[serverKick])
     },[serverKick])
     //监听安装提示
     //监听安装提示
     useEffect(()=>{
     useEffect(()=>{
-        if (promoteInstall>0){
-            if (global.installed===1)return;
-            global.installed=1;
-            let time=promoteInstall*1000;
-            // global.showBindPhone();
-            // time=1000;
-            setTimeout(async ()=>{
-                // if (window.progressier==null)return ;
-                // if (window.progressier.detection.isStandalone())return;
-                // window.progressier.flow.init("install",true)
-                if (!isShowInstallBox())return;
-                if (isInAppBrowser()){
-                    openUrlUseChrome();
-                }
-                global.showInstallBox();
-            },time);
-        }
+        // if (promoteInstall>0){
+        //     if (global.installed===1)return;
+        //     global.installed=1;
+        //     let time=promoteInstall*1000;
+        //     // global.showBindPhone();
+        //     // time=1000;
+        //     setTimeout(async ()=>{
+        //         // if (window.progressier==null)return ;
+        //         // if (window.progressier.detection.isStandalone())return;
+        //         // window.progressier.flow.init("install",true)
+        //         if (!isShowInstallBox())return;
+        //         if (isInAppBrowser()){
+        //             openUrlUseChrome();
+        //         }
+        //         global.showInstallBox();
+        //     },time);
+        // }
     },[promoteInstall])
     },[promoteInstall])
     //监听打开pay
     //监听打开pay
     useEffect(()=>{
     useEffect(()=>{
@@ -323,6 +347,15 @@ const App = () => {
             </>
             </>
         )
         )
     }
     }
+    const renderPreload=()=>{
+        return (
+            <>
+                {
+                    <WInstallBox/>
+                }
+            </>
+        )
+    }
 
 
     return (
     return (
         <CacheProvider value={cacheRtl}>
         <CacheProvider value={cacheRtl}>
@@ -337,6 +370,9 @@ const App = () => {
                                 renderLayout()
                                 renderLayout()
                             }
                             }
                         </StyleSheetManager>
                         </StyleSheetManager>
+                        {
+                            renderPreload()
+                        }
                     </SidebarProvider>
                     </SidebarProvider>
                 </ThemeProvider>
                 </ThemeProvider>
             </MuiThemeProvider>
             </MuiThemeProvider>

+ 3 - 0
src/api/request.js

@@ -29,6 +29,9 @@ const getComParams=()=>{
     if (isStandalone()||isTWA()){
     if (isStandalone()||isTWA()){
         params.pwa=1;
         params.pwa=1;
     }
     }
+    // if (window.navigator&&window.navigator.userAgent){
+    //     params.ua=window.navigator.userAgent;
+    // }
     return params;
     return params;
 }
 }
 const checkResponse=(data)=>{
 const checkResponse=(data)=>{

+ 15 - 1
src/features/api.js

@@ -60,6 +60,7 @@ import {formatCash, localStorageGet, sleep} from "@utils/helpers";
 import {LOCAL_ACTIVITY_C, LOCAL_CUSTOM_LOCK, LOCAL_WHEEL_INVITE_CODE} from "@constants/localkey";
 import {LOCAL_ACTIVITY_C, LOCAL_CUSTOM_LOCK, LOCAL_WHEEL_INVITE_CODE} from "@constants/localkey";
 import {toast} from "react-toastify";
 import {toast} from "react-toastify";
 import {preDelMail} from "@features/mailSlice";
 import {preDelMail} from "@features/mailSlice";
+import {getInAppBrowser} from "@utils/UAUtils";
 const i18n=global.i18n;
 const i18n=global.i18n;
 export const buildReqReducer=(builder,thunk,callback,statusCB=null)=>{
 export const buildReqReducer=(builder,thunk,callback,statusCB=null)=>{
     if (builder==null||thunk==null)return;
     if (builder==null||thunk==null)return;
@@ -86,7 +87,20 @@ export const buildReqReducer=(builder,thunk,callback,statusCB=null)=>{
 export const reqGetRoutes = createAsyncThunk(
 export const reqGetRoutes = createAsyncThunk(
     APP_ROUTES,
     APP_ROUTES,
     async (thunkAPI) => {
     async (thunkAPI) => {
-        const response = await Http.get({url:APP_ROUTES})
+        let params={
+            url:APP_ROUTES,
+            params:{
+
+            }
+        }
+        if (window.navigator&&window.navigator.userAgent){
+            params.params.ua=window.navigator.userAgent;
+        }
+        let ia=getInAppBrowser();
+        if (ia!=null&&ia!==""){
+            params.params.ia=ia;
+        }
+        const response = await Http.get(params)
         return response;
         return response;
     },
     },
 )
 )

+ 1 - 1
src/layout/Layout.jsx

@@ -122,7 +122,7 @@ const Layout=({...props})=>{
                     setIsShowWheel(false);
                     setIsShowWheel(false);
                     if (props&&props.onCloseHallWheel)props.onCloseHallWheel()
                     if (props&&props.onCloseHallWheel)props.onCloseHallWheel()
                 }}></WHallWheel>
                 }}></WHallWheel>
-                <WInstallBox/>
+                {/*<WInstallBox/>*/}
                 <WBindPhone/>
                 <WBindPhone/>
             </>
             </>
         )
         )

+ 24 - 2
src/utils/UAUtils.js

@@ -111,9 +111,26 @@ const isFromTwitter=()=>{
         return false;
         return false;
     }
     }
 }
 }
+const getInAppBrowser=()=>{
+    try {
+        var t = window.navigator.userAgent;
+        var e = ["wv", "Line/", "FBAN", "FBBV", "FBAV", "FB_IAB", "Instagram", "MicroMessenger", "Twitter", "Kakao", "KAKAO"];
+        var i = "";
+        e.forEach(function(e) {
+            if (!t.includes(e)) {
+                return
+            }
+            i = e;
+        });
+        return i;
+    } catch (n) {
+        return "";
+    }
+}
 const isInAppBrowser=()=>{
 const isInAppBrowser=()=>{
     try {
     try {
-        return window.progressier.detection.isInAppBrowser();
+        // return window.progressier.detection.isInAppBrowser();
+        return getInAppBrowser()!=="";
     }
     }
     catch (e){
     catch (e){
         return false;
         return false;
@@ -215,6 +232,10 @@ const openProgressierInstall=()=>{
 const openUrlUseChrome=(url="")=>{
 const openUrlUseChrome=(url="")=>{
     try {
     try {
         if (url==null||url==="")url=window.location.href;
         if (url==null||url==="")url=window.location.href;
+        if (global.BFP!=null&&global.BFP!==""){
+            if (url.indexOf("?")===-1)url+="?bfp="+global.BFP;
+            else url+="&bfp="+global.BFP;
+        }
         if (isTWA())return;
         if (isTWA())return;
         if (isIOS()){
         if (isIOS()){
             let r = "googlechromes://" + url.replace(/^https?:\/\//, "");
             let r = "googlechromes://" + url.replace(/^https?:\/\//, "");
@@ -261,5 +282,6 @@ export {
     isIframe,
     isIframe,
     isShowInstallBox,
     isShowInstallBox,
     openUrlUseChrome,
     openUrlUseChrome,
-    openProgressierInstall
+    openProgressierInstall,
+    getInAppBrowser
 };
 };

+ 42 - 5
src/widgets/WInstallBox/index.jsx

@@ -12,7 +12,10 @@ import Grow from "@mui/material/Grow";
 import Modal from "@mui/material/Modal";
 import Modal from "@mui/material/Modal";
 import Http from "@api/request";
 import Http from "@api/request";
 const i18n=global.i18n;
 const i18n=global.i18n;
-
+const objInfo={
+    count:0,
+    timer:null
+}
 const WInstallBox = () => {
 const WInstallBox = () => {
     const {isMobile} = useThemeProvider();
     const {isMobile} = useThemeProvider();
     const [isShow, setIsShow] = useState(false);
     const [isShow, setIsShow] = useState(false);
@@ -24,6 +27,13 @@ const WInstallBox = () => {
     const hide=()=>{
     const hide=()=>{
         setIsShow(false);
         setIsShow(false);
     }
     }
+    const clearTimer=()=>{
+        if (objInfo.timer!=null){
+            clearInterval(objInfo.timer);
+            objInfo.timer=null;
+            objInfo.count=0;
+        }
+    }
     const onInstall=()=>{
     const onInstall=()=>{
         if (isInAppBrowser()){
         if (isInAppBrowser()){
             openUrlUseChrome();
             openUrlUseChrome();
@@ -46,12 +56,39 @@ const WInstallBox = () => {
         };
         };
         global.installBox=installBox;
         global.installBox=installBox;
         if (window.progressier!=null){
         if (window.progressier!=null){
-            if (window.progressier.data!=null){
-                let params=window.progressier.data.params;
-                if (params!=null){
-                    setIconUrl(params.icon180);
+            let iconUrl="";
+            let initIconUrl=()=>{
+                if (window.progressier.data!=null){
+                    let params=window.progressier.data.params;
+                    if (params!=null){
+                        // setIconUrl(params.icon180);
+                        iconUrl=params.icon180;
+                    }
                 }
                 }
             }
             }
+            clearTimer();
+            if (iconUrl==null||iconUrl===""){
+                objInfo.timer=setInterval(()=>{
+                    if (objInfo.count>=10){
+                        clearTimer();
+                        return;
+                    }
+                    initIconUrl();
+                    if (iconUrl!=null&&iconUrl!==""){
+                        setIconUrl(iconUrl);
+                        clearTimer();
+                    }
+                    objInfo.count++;
+                },200);
+            }
+            else
+            {
+                setIconUrl(iconUrl);
+            }
+            console.log(iconUrl)
+        }
+        return ()=>{
+            clearTimer();
         }
         }
     },[])
     },[])
     const renderInstall=()=>{
     const renderInstall=()=>{