uniap 動態(tài)啟動頁

  1. 在src路徑下新建hybrid 文件夾,結(jié)構(gòu)如下:
    微信圖片_20220628165906.png
//advertise.html
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>廣告啟動頁</title>
        <link rel="stylesheet" href="../css/advertise.css">
        <!-- uni 的 SDK -->
        <script type="text/javascript" src="../js/webView.js"></script>
    </head>
    <body>
        <div class="content">
            <div class="con">
                <img id="img" src="##">
            </div>
            <div class="btn" id="timer">
                <div id="info">跳過</div>
                <div class="circleProgress_wrapper btn">
                    <div class="wrapper right">
                        <div class="circleProgress rightcircle"></div>
                    </div>
                    <div class="wrapper left">
                        <div class="circleProgress leftcircle"></div>
                    </div>
                </div>
            </div>
        </div>
    </body>
    <script>
//僅展示圖片版
        var params = location.search.substr(1);
        console.log(location.search)
        document.getElementById("img").src = params
        document.addEventListener('UniAppJSBridgeReady', function() {
            document.querySelector('.btn').addEventListener('click', function(e) {
                if (e.isTrusted) {
                    plus.webview.currentWebview().close();
                }
            });
        });
//可以跳轉(zhuǎn)廣告鏈接版代碼
        var query = decodeURI(location.search.substring(1));
        var vars = query.split("&");//分割參數(shù)成數(shù)組
        var url = ""
        var image = ''
        vars.forEach((item, i) => { //循環(huán)遍歷拿到參數(shù)并賦值
            var pair = item.split("=");
            if (pair[0] == 'img') {
                image = pair[1]
                document.getElementById("img").src = pair[1]
            }
            if (pair[0] == 'url') {
                url = pair[1]
            }
            // console.log(item,pair,i)
        })
        console.log(url, "aaa", image, "image")
        // 點擊圖片
        document.getElementById("img").addEventListener('click', function(e) {
            location.href = url
        });
//下面代碼兩種都需要
        document.addEventListener('UniAppJSBridgeReady', function() {
            document.querySelector('.btn').addEventListener('click', function(e) {
                if (e.isTrusted) {
                    plus.webview.currentWebview().close();
                }
            });
        });
    </script>
</html>

//advertise.css
* {
    margin: 0;
    padding: 0;
}

html,
body {
    width: 100%;
    height: 100%;
}

.content {
    width: 100%;
    height: 100%;
}

.content .con {
    width: 100%;
    height: 100%;
    font-size: 0;
    display: flex;
    align-items: center;
}

#img {
    width: 100%;
    height: 100%;
}

#timer {
    display: inline-block;
    position: fixed;
    top: 40px;
    right: 10px;
}

#info {
    position: absolute;
    top: 0;
    left: 0;
    width: 36px;
    height: 36px;
    line-height: 36px;
    border-radius: 50%;
    background-color: rgba(0, 0, 0, 0.3);
    text-align: center;
    color: #FFFFFF;
    font-size: 12px;
}

.circleProgress_wrapper {
    width: 36px;
    height: 36px;
    position: relative;
}

.wrapper {
    width: 18px;
    height: 36px;
    position: absolute;
    top: 0;
    overflow: hidden;
}

.right {
    right: 0;
}

.left {
    left: 0;
}

.circleProgress {
    width: 32px;
    height: 32px;
    border: 2px solid #FFFFFF;
    border-radius: 50%;
    position: absolute;
    top: 0;
    -webkit-transform: rotate(45deg);
}

.rightcircle {
    border-top: 2px solid #03A9F4;
    border-right: 2px solid #03A9F4;
    right: 0;
    -webkit-animation: circleProgressLoad_right 4s linear;
    /*動畫停留在最后一幀*/
    animation-fill-mode: forwards;
    -moz-animation-fill-mode: forwards;
    -webkit-animation-fill-mode: forwards;
    -o-animation-fill-mode: forwards;
}

.leftcircle {
    border-bottom: 2px solid #03A9F4;
    border-left: 2px solid #03A9F4;
    left: 0;
    -webkit-animation: circleProgressLoad_left 4s linear;
    /*動畫停留在最后一幀*/
    animation-fill-mode: forwards;
    -moz-animation-fill-mode: forwards;
    -webkit-animation-fill-mode: forwards;
    -o-animation-fill-mode: forwards;
}

@-webkit-keyframes circleProgressLoad_right {
    0% {
        border-top: 2px solid #03A9F4;
        border-right: 2px solid #03A9F4;
        -webkit-transform: rotate(45deg);
    }

    50% {
        border-top: 2px solid #03A9F4;
        border-right: 2px solid #03A9F4;
        border-left: 2px solid #FFFFFF;
        border-bottom: 2px solid #FFFFFF;
        -webkit-transform: rotate(225deg);
    }

    100% {
        border-left: 2px solid #FFFFFF;
        border-bottom: 2px solid #FFFFFF;
        -webkit-transform: rotate(225deg);
    }
}

@-webkit-keyframes circleProgressLoad_left {
    0% {
        border-bottom: 2px solid #03A9F4;
        border-left: 2px solid #03A9F4;
        -webkit-transform: rotate(45deg);
    }

    50% {
        border-bottom: 2px solid #03A9F4;
        border-left: 2px solid #03A9F4;
        border-top: 2px solid #FFFFFF;
        border-right: 2px solid #FFFFFF;
        -webkit-transform: rotate(45deg);
    }

    100% {
        border-top: 2px solid #FFFFFF;
        border-right: 2px solid #FFFFFF;
        -webkit-transform: rotate(225deg);
    }
}

wevView.js

!function(e,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):e.uni=i()}(this,function(){"use strict";var e={},o=[],s=/uni-app/i.test(navigator.userAgent),i=function(e,i){if(0===o.length&&s){var n=plus.webview.currentWebview();if(!n)throw new Error("plus.webview.currentWebview() is undefined");var t=n.parent();if(!t)throw new Error("plus.webview.currentWebview().parent() is undefined");o.push(t.id)}var a={options:{timestamp:+new Date},name:e,arg:i};if(s){var r=JSON.stringify(a);plus.webview.getLaunchWebview().evalJS('UniPlusBridge.subscribeHandler("WEB_INVOKE_APPSERVICE",'+r+","+JSON.stringify(o)+");")}else window.parent.postMessage({type:"WEB_INVOKE_APPSERVICE",data:a,pageId:""},"*")};e.navigateTo=function(){var e=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).url;i("navigateTo",{url:encodeURI(e)})},e.navigateBack=function(){var e=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).delta;i("navigateBack",{delta:parseInt(e)||1})},e.switchTab=function(){var e=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).url;i("switchTab",{url:encodeURI(e)})},e.reLaunch=function(){var e=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).url;i("reLaunch",{url:encodeURI(e)})},e.redirectTo=function(){var e=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).url;i("redirectTo",{url:encodeURI(e)})},e.getEnv=function(e){e(s?{plus:!0}:{h5:!0})},e.postMessage=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};i("postMessage",e.data||{})};var n={};"undefined"!=typeof wx&&wx.miniProgram&&(n.navigateTo=wx.miniProgram.navigateTo,n.navigateBack=wx.miniProgram.navigateBack,n.switchTab=wx.miniProgram.switchTab,n.reLaunch=wx.miniProgram.reLaunch,n.redirectTo=wx.miniProgram.redirectTo,n.postMessage=wx.miniProgram.postMessage,n.getEnv=wx.miniProgram.getEnv);var t={};-1<navigator.userAgent.indexOf("AlipayClient")&&"undefined"!=typeof my&&(t.navigateTo=my.navigateTo,t.navigateBack=my.navigateBack,t.switchTab=my.switchTab,t.reLaunch=my.reLaunch,t.redirectTo=my.redirectTo,t.postMessage=my.postMessage,t.getEnv=my.getEnv);var a={};"undefined"!=typeof swan&&swan.webView&&(a.navigateTo=swan.webView.navigateTo,a.navigateBack=swan.webView.navigateBack,a.switchTab=swan.webView.switchTab,a.reLaunch=swan.webView.reLaunch,a.redirectTo=swan.webView.redirectTo,a.postMessage=swan.webView.postMessage,a.getEnv=swan.webView.getEnv);var r={};"undefined"!=typeof tt&&tt.miniProgram&&(r.navigateTo=tt.miniProgram.navigateTo,r.redirectTo=tt.miniProgram.redirectTo,r.reLaunch=tt.miniProgram.reLaunch,r.switchTab=tt.miniProgram.switchTab,r.navigateBack=tt.miniProgram.navigateBack);var d=navigator.userAgent,c=/uni-app/i.test(d),g=/micromessenger/i.test(d),w=/AlipayClient/.test(d),u=/swan/i.test(d),v=/toutiaomicroapp/i.test(d),m={},p=function(){window.UniAppJSBridge=!0,document.dispatchEvent(new CustomEvent("UniAppJSBridgeReady",{bubbles:!0,cancelable:!0}))};return c?(m=e,window.plus&&/complete|loaded|interactive/.test(document.readyState)?p():document.addEventListener("plusready",p)):g?(m=n,window.WeixinJSBridge&&WeixinJSBridge.invoke?p():document.addEventListener("WeixinJSBridgeReady",p)):(m=w?t:u?a:v?r:e,document.addEventListener("DOMContentLoaded",p)),m});
  1. App.vue中 onLaunch調(diào)用
    async onLaunch() {
//通過接口請求動態(tài)的圖片,再通過url傳給html頁面
            // #ifdef APP-PLUS
            uni.request({
                url: `${this.globalData.BASE_URL}/addons/shopro/user_center/get_kaipin`,
                method: 'GET',
                data: '',
                header: {},
                success(res) {
                    const {
                        code,
                        data
                    } = res.data
                    if (code == 1) {
                        let pageid = data.image
                        plus.navigator.closeSplashscreen();
                        var w = plus.webview.open(
                  //如果僅展示圖片就這樣跳轉(zhuǎn)
                            `hybrid/html/advertise/advertise.html?${pageid}`,
                  //跳轉(zhuǎn)廣告鏈接版 ,除這兩句不同,其他代碼都一樣
                `hybrid/html/advertise/advertise.html?img=${pageid}&url=${url}`,
                            '本地地址', {
                                top: 0,
                                bottom: 0,
                                zindex: 999
                            },
                            'fade-in',
                            500
                        );
                        //設(shè)置定時器硼被,4s后關(guān)閉啟動廣告頁
                        setTimeout(function() {
                            plus.webview.close(w);
                        }, 4000);
                    }
                },
            })
            // #endif
}

相應(yīng)配置

微信圖片_20220628170639.png

微信圖片_20220628170643.png

聲明: 代碼來自網(wǎng)上,綜合搜索,解決了問題,特此記錄一下,侵刪

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凛膏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子捏检,更是在濱河造成了極大的恐慌烂翰,老刑警劉巖娄蔼,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件色徘,死亡現(xiàn)場離奇詭異业岁,居然都是意外死亡,警方通過查閱死者的電腦和手機君躺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門峭判,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人棕叫,你說我怎么就攤上這事林螃。” “怎么了俺泣?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵疗认,是天一觀的道長。 經(jīng)常有香客問我伏钠,道長横漏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任熟掂,我火速辦了婚禮缎浇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赴肚。我一直安慰自己素跺,他們只是感情好,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布誉券。 她就那樣靜靜地躺著指厌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪踊跟。 梳的紋絲不亂的頭發(fā)上踩验,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機與錄音琴锭,去河邊找鬼晰甚。 笑死,一個胖子當著我的面吹牛决帖,可吹牛的內(nèi)容都是我干的厕九。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼地回,長吁一口氣:“原來是場噩夢啊……” “哼扁远!你這毒婦竟也來了俊鱼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤畅买,失蹤者是張志新(化名)和其女友劉穎并闲,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谷羞,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡帝火,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了湃缎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片犀填。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖嗓违,靈堂內(nèi)的尸體忽然破棺而出九巡,到底是詐尸還是另有隱情,我是刑警寧澤蹂季,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布冕广,位于F島的核電站,受9級特大地震影響偿洁,放射性物質(zhì)發(fā)生泄漏撒汉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一父能、第九天 我趴在偏房一處隱蔽的房頂上張望神凑。 院中可真熱鬧,春花似錦何吝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至坡慌,卻和暖如春黔酥,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背洪橘。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工跪者, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人熄求。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓渣玲,卻偏偏與公主長得像,于是被迫代替她去往敵國和親弟晚。 傳聞我的和親對象是個殘疾皇子忘衍,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344