From fa3104757abcf3b83a437568250521dacf337d06 Mon Sep 17 00:00:00 2001 From: youngboyliu Date: Tue, 6 Jan 2026 16:36:56 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=E5=B9=BF=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- miniprogram/app.json | 13 +- miniprogram/demo.theme.json | 4 + miniprogram/image/icon_ad.png | Bin 0 -> 653 bytes miniprogram/image/icon_ad_HL.png | Bin 0 -> 688 bytes miniprogram/image/icon_ad_dark.png | Bin 0 -> 1259 bytes miniprogram/page/ad/index.js | 77 ++++++ miniprogram/page/ad/index.json | 5 + miniprogram/page/ad/index.wxml | 37 +++ miniprogram/page/ad/index.wxss | 13 + miniprogram/page/ad/resources/kind/logo.png | Bin 0 -> 3070 bytes .../page/ad/smart-ad/example1/example1.js | 31 +++ .../page/ad/smart-ad/example1/example1.json | 5 + .../page/ad/smart-ad/example1/example1.wxml | 73 +++++ .../page/ad/smart-ad/example1/example1.wxss | 252 ++++++++++++++++++ .../page/ad/smart-ad/example2/example2.js | 31 +++ .../page/ad/smart-ad/example2/example2.json | 5 + .../page/ad/smart-ad/example2/example2.wxml | 42 +++ .../page/ad/smart-ad/example2/example2.wxss | 96 +++++++ .../page/ad/smart-ad/example3/example3.js | 31 +++ .../page/ad/smart-ad/example3/example3.json | 5 + .../page/ad/smart-ad/example3/example3.wxml | 66 +++++ .../page/ad/smart-ad/example3/example3.wxss | 114 ++++++++ miniprogram/page/ad/smart-ad/smart-ad.js | 30 +++ miniprogram/page/ad/smart-ad/smart-ad.json | 5 + miniprogram/page/ad/smart-ad/smart-ad.wxml | 24 ++ miniprogram/page/ad/smart-ad/smart-ad.wxss | 23 ++ project.private.config.json | 226 ++-------------- 27 files changed, 999 insertions(+), 209 deletions(-) create mode 100644 miniprogram/image/icon_ad.png create mode 100644 miniprogram/image/icon_ad_HL.png create mode 100644 miniprogram/image/icon_ad_dark.png create mode 100644 miniprogram/page/ad/index.js create mode 100644 miniprogram/page/ad/index.json create mode 100644 miniprogram/page/ad/index.wxml create mode 100644 miniprogram/page/ad/index.wxss create mode 100644 miniprogram/page/ad/resources/kind/logo.png create mode 100644 miniprogram/page/ad/smart-ad/example1/example1.js create mode 100644 miniprogram/page/ad/smart-ad/example1/example1.json create mode 100644 miniprogram/page/ad/smart-ad/example1/example1.wxml create mode 100644 miniprogram/page/ad/smart-ad/example1/example1.wxss create mode 100644 miniprogram/page/ad/smart-ad/example2/example2.js create mode 100644 miniprogram/page/ad/smart-ad/example2/example2.json create mode 100644 miniprogram/page/ad/smart-ad/example2/example2.wxml create mode 100644 miniprogram/page/ad/smart-ad/example2/example2.wxss create mode 100644 miniprogram/page/ad/smart-ad/example3/example3.js create mode 100644 miniprogram/page/ad/smart-ad/example3/example3.json create mode 100644 miniprogram/page/ad/smart-ad/example3/example3.wxml create mode 100644 miniprogram/page/ad/smart-ad/example3/example3.wxss create mode 100644 miniprogram/page/ad/smart-ad/smart-ad.js create mode 100644 miniprogram/page/ad/smart-ad/smart-ad.json create mode 100644 miniprogram/page/ad/smart-ad/smart-ad.wxml create mode 100644 miniprogram/page/ad/smart-ad/smart-ad.wxss diff --git a/miniprogram/app.json b/miniprogram/app.json index f5dd91a7..b8496b61 100644 --- a/miniprogram/app.json +++ b/miniprogram/app.json @@ -4,7 +4,12 @@ "page/API/index", "page/cloud/index", "page/extend/index", - "page/animation/index" + "page/animation/index", + "page/ad/index", + "page/ad/smart-ad/smart-ad", + "page/ad/smart-ad/example1/example1", + "page/ad/smart-ad/example2/example2", + "page/ad/smart-ad/example3/example3" ], "usingComponents": { "mp-navigation-bar": "/component/navigation-bar/navigation-bar" @@ -484,6 +489,12 @@ "iconPath": "@iconPathCloud", "selectedIconPath": "@selectedIconPathCloud", "text": "云开发" + }, + { + "pagePath": "page/ad/index", + "iconPath": "@iconPathAd", + "selectedIconPath": "@selectedIconPathAd", + "text": "广告" } ] }, diff --git a/miniprogram/demo.theme.json b/miniprogram/demo.theme.json index 2515bafb..5b5164e5 100644 --- a/miniprogram/demo.theme.json +++ b/miniprogram/demo.theme.json @@ -15,6 +15,8 @@ "selectedIconPathAPI": "image/icon_API_HL.png", "iconPathCloud": "image/icon_cloud.png", "selectedIconPathCloud": "image/icon_cloud_HL.png", + "iconPathAd": "image/icon_ad.png", + "selectedIconPathAd": "image/icon_ad_HL.png", "backgroundTextStyle": "dark" }, @@ -34,6 +36,8 @@ "selectedIconPathAPI": "image/icon_API_HL.png", "iconPathCloud": "image/icon_cloud_dark.png", "selectedIconPathCloud": "image/icon_cloud_HL.png", + "iconPathAd": "image/icon_ad_dark.png", + "selectedIconPathAd": "image/icon_ad_HL.png", "backgroundTextStyle": "light" } diff --git a/miniprogram/image/icon_ad.png b/miniprogram/image/icon_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..301f579aefe5d6cb304da54b211b41dc87c7f386 GIT binary patch literal 653 zcmeAS@N?(olHy`uVBq!ia0vp^fgsGm1|(PYdzk?##^NA%Cx&(BWL`2bFu8lWIEGX( zzMXZ~_ppITt1QbK24(}H{563p3qr3jb$>YKAd>`}t z^G4yT*DdP=8W>m<7#KMm7??oJXI=|7`mM>mufP9q+2cLCKc9<_JRbSmbluOA-s;^M zdDC*Mf2Yctx7R(t=J|zT?|1I(|5xgEw|>m~_;%ah3%{>?H2pn)W^*~8$@jUJHipd6 zEao{jYp%teL+f8J{VBom$hDh)b?2Ra=@1Oz-DxF~RO zaHte039z!T2w4brFflQ4&f#!jWNc*d6LB#4zxnQc?)U#A@5O6zK9cu%^KL$W*7MlJ z@}%;OaZduhjtbiK-0ZAPJM=DT@9rZvt%EH3^?p7yXLec{?c`loUvtLOe%(C#zKsnJ z=lo`^jkJ$#|GIHgt@UvcuWQq9z3MDHb9<-C>Ij{_DH4*e6d4!=8`o?vUi)TERN?W6 z^t};Tsp(g{tl13T3#%JuXXOZ8{AS=6(Z@IE#smrV)18O;?@hWHx%E+>uID`A<01be ztp!-Q`SAINWl=+e1Cu)LVA!O$DoeHIT9@@P%Y19~G~ZrdrCV~xI8R?}6qXixoMO2# qtSoHp4&mu757FXWq2Lxv9fSDnOWnIeU%CO)7lWs(pUXO@geCwqkO@El literal 0 HcmV?d00001 diff --git a/miniprogram/image/icon_ad_HL.png b/miniprogram/image/icon_ad_HL.png new file mode 100644 index 0000000000000000000000000000000000000000..65c3fcb7d3db5cf3d5229676511deb9b0fe31821 GIT binary patch literal 688 zcmeAS@N?(olHy`uVBq!ia0vp^fgsGm1|(PYdzk?##^NA%Cx&(BWL`2bFlBkVIEGX( zzMW<0ci2FpRd|7cVM)$ThM@ifCwLQ{Nu?$^CA~1cG2sDA%wi$&1+f#XN>)ZVt!Wb3 zsr&csz9X77b2t3_JMZt)qia*rCFMCB7?=ba7+4e-7(vWj)d|t+W)l2;>G_*~+nmqq zTJ$3Fc;xF(HuJ??zumBXf3KJQvH$BGW>;jR)GzLQW0MkTsPo!?Z8FpAIq!}>N-i|2 zpS7Q@&o`~cf0y--KBS|vwzmuA4q)p_)Gp;wP)9FYDJ{S2CuJLaX!xR&)d*&yFCH( z_cpCyS$c(OQG=R5qlSXQ1cgoq5di^@2`&m;92_bhN&>7bEJ7-R9ZXD2oRc_Q7#SN` zJXsbsG&nS=a4F0>A2IFuq0^tA&39I9{NL5`Ir3#rWxHkPyM(=+TTPxWj_HsBwwz>bEQPP1x e!-4r~A6TvO_c~3RYGw{hf()LnelF{r5}E*h03-qc literal 0 HcmV?d00001 diff --git a/miniprogram/image/icon_ad_dark.png b/miniprogram/image/icon_ad_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..122852045d171c97b7b21ba8e9d790b032e66c49 GIT binary patch literal 1259 zcmeAS@N?(olHy`uVBq!ia0vp^fgsGm1|(PYdzk?#$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%&M6o5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8JrcYhY+)U}j}%t^fr}K--E^(yW49+@N*=dA3R!B_#z``ugSN z<$C4Ddih1^`i7R4Kr@W=jf`}GDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yc06!V;*iRM zRQ;gT;{4L0WMIUlDTAykuyQU+O)SYT3dzsUfrVl~Mt(_taYlZDf)UV33L3tN$(eZ| z5lyfbUtcTFyyB9?yyR3*7h5HuA$pmaDOP5tZk9%l=9VVLZWe}yu8x+D&X!JQhNgyw z7M9L#ZWb`TF8Rr&xv6<2Fuf@Vy^c8bf>J|n0nlcb)S}F?)D*X({9FaFudOn1yTu%* zc~HG6xZPrbQ?EYIG5VmmMT%>f5HJCOnDCSf#`@^IQ!#f zIoH?82|m{Yo`+2@o}b}Ud-`O!83bQ~+A*$pW+%;e_4|UlwRVwalD> iq@|Y?S { + this.setData({ theme }) + }) + } + + // 创建插屏广告 + if (wx.createInterstitialAd) { + interstitialAd = wx.createInterstitialAd({ + adUnitId: 'adunit-7c0acfb6438237aa' + }) + interstitialAd.onLoad(() => { + console.log('插屏广告加载成功') + }) + interstitialAd.onError((err) => { + console.error('插屏广告加载失败', err) + }) + interstitialAd.onClose(() => { + console.log('插屏广告关闭') + }) + } + }, + + onShow() { + // 显示插屏广告 + if (interstitialAd) { + interstitialAd.show().catch((err) => { + console.error('插屏广告显示失败', err) + }) + } + }, + + onItemTap(e) { + const type = e.currentTarget.dataset.type + if (type === 'smart') { + wx.navigateTo({ + url: '/page/ad/smart-ad/smart-ad' + }) + return + } + const typeMap = { + optimize: '广告调优', + hosting: '广告托管', + custom: '自主开发' + } + wx.showToast({ + title: `点击了${typeMap[type]}`, + icon: 'none' + }) + } +}) + diff --git a/miniprogram/page/ad/index.json b/miniprogram/page/ad/index.json new file mode 100644 index 00000000..d820c434 --- /dev/null +++ b/miniprogram/page/ad/index.json @@ -0,0 +1,5 @@ +{ + "navigationBarTitleText": "广告", + "renderer": "webview" +} + diff --git a/miniprogram/page/ad/index.wxml b/miniprogram/page/ad/index.wxml new file mode 100644 index 00000000..426f58ca --- /dev/null +++ b/miniprogram/page/ad/index.wxml @@ -0,0 +1,37 @@ + + + + + 微信广告是微信官方提供的广告投放平台,帮助开发者通过小程序实现流量变现。支持多种广告形式,包括 Banner 广告、激励视频广告、插屏广告、原生模板广告等。 + + + + + + 智能广告 + + + + + + 广告调优 + + + + + + 广告托管 + + + + + + 自主开发 + + + + + + + + diff --git a/miniprogram/page/ad/index.wxss b/miniprogram/page/ad/index.wxss new file mode 100644 index 00000000..ff341ef5 --- /dev/null +++ b/miniprogram/page/ad/index.wxss @@ -0,0 +1,13 @@ +@import "../../common/reset.wxss"; +@import "../common/index.wxss"; + +.index-logo { + display: block; + margin: 0 auto; +} + +.kind-list-item-hd { + display: flex; + flex-direction: row; + align-items: center; +} diff --git a/miniprogram/page/ad/resources/kind/logo.png b/miniprogram/page/ad/resources/kind/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e5345b2ea8d53f4fe25773eaca49e16b356729f3 GIT binary patch literal 3070 zcmV}CM6|x@cT6Pr?@{z{Z?{v^8U$_ zCm-ehV|@)9u+`Poa{=vppmQsAvL;GzL;qYxM#c+yd3hgb@_ItBN1hsjhb6&_nGw=wcHG%zr5 zkC|c@+v{DFtt{FVU~6h>E(O%5l&x@x5O3|KJmZi!TVlr8;x=LK>+4%i*QF-ihRp!N zsxkOF^`9t>JeUqPq5;~ba(_KcGby=-%rwGthOF#vHm+(j8ZX;j0hU3o1Q6wMK>sSB zeA8q%-xn0bW;mJq1pr+NPa!%as%eJz-7#avJY85=_y&icr8A zq&xzkKckj7bktmKc3&1Bec`V5VP(1Tt?7q&DI1T|GEGJ3wu5LYc?u|nl(-jw3y!7V?l@gaO zMyg^1hSzgeP(ZB|rdf%tudly|wflG2yVQzSw;vl{MD7{@ZdBnl1PlSGfVzcxnTilQ zG^}a2a=Nv{jtt?InMJi7npBO(t9cW=)k;CkT3K6LJ02reP64#Q;lMDo^89ic`}riz%B8-g8P z)fjdl5nacRAD;;CtMFcy2)`3N;B`CTmK(_m0m~Aw34#lah}>#pBam=LLOHEV_5lKZ z@zhCLj4luZ?zfmZYobL5q5@DaC6KO)?zH&b2Qa%S+jyB*!|vYBeQ!@sPd;@CgO)_1 z3>l^m3%ZBcVSi(xC!!mfscarQY5ZbDhuROZ`AteCfV@xLi9E@|@?f9G{Z(pWVyL>( z)6+`}3JQ(~djcsfO0+)9!4UZXc!|kd)&C;Al2YE>+&r$ewRPbT!1Jkdh7{Mqzm^#G zrJx}yHT+3J7Xu7a~rw}qWj|g##z3Oo<9mr63f6so|0;Set@Yv3q$+kDR85&s;cS% zO^=81_v z0hnj)*eXs$xdR!>AtAGWrRWr3CC9eB7}$18B8LfNtwW@2aH%??0izrz&<^8_bntL` zQ&UryA+y`4Ke`RN#c~)V-vKDSu7;sDT8Nv!C95K~mRL1YM-O(s1Q_zyIF4N`3w79` zlsrKc-;Y)-TU56C;GG&dGKcBR`7;srrQe6G!anGdB=dTMr>?YtLHkpQ(Gs@IfRR*H9@e7+k@{sscxshD64V8v%8lahH3oIKd@&qSAp3bZ-ZM#RFdEM~jA8 zkD=(>8uSsQ98~1i*D)(a?uu zhX6QVML-zMhY0&+c6N3}PEJl|SbM}Ra#H|x1+|>1W<_*b{6PM@fI6G3N;TXGNt8e7 z=XH_1BEOu*PGmKvrKP>4lA&R58hjflt3v{5`;F-V&r^)TgMwK#|uSdDL1L@=o9ZGjtOGQsY9hxZk2vHpqx|9GPb*5>dQHy$9JR z!;NAO`84ff?{eCwg!ft9!?%FtYF7lX!X(ohf#0wa;6*=1wh*h%)cxWQ2a$i;^EyTK ze4_zfG8^Op$U1s8yfN4)jJXa_i;*=L@g#+jDSdxSOG^=grz;3@lSHO%nJ%be5VP(H zDpgR0C71C^ZR^6`2Lx0R64<=LrO7%;=R!(#c)Q2c!FL)(tFx^D81u8J0vzouMToX=e2&@or zu+hZ&Hiz4)a0WN;1r$8>KA!wmJ9?1g1BATP8Mh=8aZp}_{gx+!A5LuB6PdS=q0Q2&PTNHC2T6k=qntwEg%X5-{axk zLD-{ogsGyRkZFc^F7{@t(CgA5`(MbG|MewjEisoeu);Z%M0^*4KjP=bG14>}FzzfY z8;C^K$4f3W#fHd_9z8mN|Myi+!)>8P`!}+FuVcA-6#M(l#AyK=6w=t(n9teF-JO5qeM1!H>6XokC8J_zI+fNQWdxNig=HXzEs zRedMXkN1XqT)uuE0UrS$0UrS$0UrS$0UrS$0UrS$0UrS$0UHSXA9M}E0}Ov=?f?J) M07*qoM6N<$f{eGfod5s; literal 0 HcmV?d00001 diff --git a/miniprogram/page/ad/smart-ad/example1/example1.js b/miniprogram/page/ad/smart-ad/example1/example1.js new file mode 100644 index 00000000..68f21f49 --- /dev/null +++ b/miniprogram/page/ad/smart-ad/example1/example1.js @@ -0,0 +1,31 @@ +Page({ + onShareAppMessage() { + return { + title: '示例 1 - 智能推荐广告', + path: 'page/ad/smart-ad/example1/example1' + } + }, + + data: { + theme: 'light' + }, + + onUnload() { + if (wx.offThemeChange) { + wx.offThemeChange() + } + }, + + onLoad() { + this.setData({ + theme: getApp().globalData.theme || 'light' + }) + + if (wx.onThemeChange) { + wx.onThemeChange(({ theme }) => { + this.setData({ theme }) + }) + } + } +}) + diff --git a/miniprogram/page/ad/smart-ad/example1/example1.json b/miniprogram/page/ad/smart-ad/example1/example1.json new file mode 100644 index 00000000..17c85be3 --- /dev/null +++ b/miniprogram/page/ad/smart-ad/example1/example1.json @@ -0,0 +1,5 @@ +{ + "navigationBarTitleText": "示例 1", + "renderer": "webview" +} + diff --git a/miniprogram/page/ad/smart-ad/example1/example1.wxml b/miniprogram/page/ad/smart-ad/example1/example1.wxml new file mode 100644 index 00000000..ae8a93a5 --- /dev/null +++ b/miniprogram/page/ad/smart-ad/example1/example1.wxml @@ -0,0 +1,73 @@ + + + + + + 智能广告 + 微信官方推荐的快速变现方案 + + + + + 个性插入 + 无需开发 + 实时生效 + + + + + 核心功能 + + + 免开发一键接入 + + + 最大化广告收益 + + + 基于大模型智能选择最优位置 + + + 多维度数据报表,全面掌握投放情况 + + + + + + + 快速接入 + + + 1 + 打开 MP 管理页面,点击「推广与搜索」,点击流量主 + + + + 2 + 选择智能广告 + + + + 3 + 开始变现 + + + + + + + 98% + 匹配准确率 + + + 2.5x + 转化提升 + + + 50ms + 响应速度 + + + + + diff --git a/miniprogram/page/ad/smart-ad/example1/example1.wxss b/miniprogram/page/ad/smart-ad/example1/example1.wxss new file mode 100644 index 00000000..3f7504d7 --- /dev/null +++ b/miniprogram/page/ad/smart-ad/example1/example1.wxss @@ -0,0 +1,252 @@ +@import "../../../../common/reset.wxss"; + +.page { + min-height: 100vh; + display: flex; + flex-direction: column; +} + +.container { + flex: 1; + padding: 20px 15px; + display: flex; + flex-direction: column; + min-height: 700px; +} + +.card-header { + display: flex; + flex-direction: column; + align-items: center; + margin-bottom: 16px; +} + +.card-title-group { + text-align: center; +} + +.card-main-title { + font-size: 24px; + font-weight: 700; + color: var(--weui-FG-0); + margin-bottom: 6px; +} + +.card-sub-title { + font-size: 14px; + color: var(--weui-FG-1); +} + +.card-desc { + font-size: 13px; + color: var(--weui-FG-1); + line-height: 1.6; + margin-bottom: 10px; +} + +.card-tags { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + justify-content: center; + gap: 10px; + margin-bottom: 16px; +} + +.tag { + padding: 4px 10px; + border-radius: 10px; + font-size: 11px; + font-weight: 500; +} + +.tag-primary { + background-color: rgba(102, 126, 234, 0.15); + color: #667eea; +} + +.tag-success { + background-color: rgba(76, 175, 80, 0.15); + color: #4caf50; +} + +.tag-warning { + background-color: rgba(255, 152, 0, 0.15); + color: #ff9800; +} + +.card-content { + flex: 1; + display: flex; + flex-direction: column; +} + +/* 通用区块标题 */ +.section-title { + font-size: 14px; + font-weight: 600; + color: var(--weui-FG-0); + margin-bottom: 10px; + padding-left: 8px; + border-left: 3px solid #667eea; +} + +/* 功能特点 */ +.feature-section { + margin-top: 16px; +} + +.feature-list { + background-color: rgba(255, 255, 255, 0.5); + border-radius: 8px; + padding: 12px; +} + +[data-weui-theme=dark] .feature-list { + background-color: rgba(0, 0, 0, 0.2); +} + +.feature-item { + display: flex; + align-items: center; + padding: 10px 0; +} + +.feature-item:not(:last-child) { + border-bottom: 1px dashed rgba(0, 0, 0, 0.08); +} + +[data-weui-theme=dark] .feature-item:not(:last-child) { + border-bottom-color: rgba(255, 255, 255, 0.08); +} + +.feature-text { + font-size: 13px; + color: var(--weui-FG-1); +} + +/* 适用场景 */ +.scene-section { + margin-top: 16px; +} + +.scene-grid { + display: flex; + justify-content: space-between; +} + +.scene-item { + flex: 1; + display: flex; + flex-direction: column; + align-items: center; + padding: 12px 8px; + background-color: rgba(255, 255, 255, 0.5); + border-radius: 8px; + margin: 0 4px; +} + +.scene-item:first-child { + margin-left: 0; +} + +.scene-item:last-child { + margin-right: 0; +} + +[data-weui-theme=dark] .scene-item { + background-color: rgba(0, 0, 0, 0.2); +} + +.scene-icon { + font-size: 24px; + margin-bottom: 6px; +} + +.scene-name { + font-size: 11px; + color: var(--weui-FG-1); +} + +/* 接入指南 */ +.guide-section { + margin-top: 16px; +} + +.guide-steps { + display: flex; + align-items: center; + justify-content: space-between; + background-color: rgba(255, 255, 255, 0.5); + border-radius: 8px; + padding: 16px 12px; +} + +[data-weui-theme=dark] .guide-steps { + background-color: rgba(0, 0, 0, 0.2); +} + +.guide-step { + display: flex; + flex-direction: column; + align-items: center; +} + +.guide-num { + width: 24px; + height: 24px; + border-radius: 50%; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + color: #fff; + font-size: 12px; + font-weight: 600; + display: flex; + align-items: center; + justify-content: center; + margin-bottom: 6px; +} + +.guide-text { + font-size: 10px; + color: var(--weui-FG-1); + text-align: center; + white-space: nowrap; +} + +.guide-line { + flex: 1; + height: 2px; + background: linear-gradient(90deg, #667eea 0%, #764ba2 100%); + margin: 0 4px; + margin-bottom: 20px; + opacity: 0.5; +} + +.card-footer { + display: flex; + justify-content: space-around; + padding-top: 20px; + margin-top: auto; + border-top: 1px solid rgba(0, 0, 0, 0.08); +} + +[data-weui-theme=dark] .card-footer { + border-top-color: rgba(255, 255, 255, 0.1); +} + +.card-stat { + text-align: center; +} + +.stat-value { + font-size: 18px; + font-weight: 700; + color: var(--weui-FG-0); + margin-bottom: 3px; +} + +.stat-label { + font-size: 11px; + color: var(--weui-FG-2); +} + diff --git a/miniprogram/page/ad/smart-ad/example2/example2.js b/miniprogram/page/ad/smart-ad/example2/example2.js new file mode 100644 index 00000000..02b8ed40 --- /dev/null +++ b/miniprogram/page/ad/smart-ad/example2/example2.js @@ -0,0 +1,31 @@ +Page({ + onShareAppMessage() { + return { + title: '示例 2 - 广告投放流程', + path: 'page/ad/smart-ad/example2/example2' + } + }, + + data: { + theme: 'light' + }, + + onUnload() { + if (wx.offThemeChange) { + wx.offThemeChange() + } + }, + + onLoad() { + this.setData({ + theme: getApp().globalData.theme || 'light' + }) + + if (wx.onThemeChange) { + wx.onThemeChange(({ theme }) => { + this.setData({ theme }) + }) + } + } +}) + diff --git a/miniprogram/page/ad/smart-ad/example2/example2.json b/miniprogram/page/ad/smart-ad/example2/example2.json new file mode 100644 index 00000000..fb175835 --- /dev/null +++ b/miniprogram/page/ad/smart-ad/example2/example2.json @@ -0,0 +1,5 @@ +{ + "navigationBarTitleText": "示例 2", + "renderer": "webview" +} + diff --git a/miniprogram/page/ad/smart-ad/example2/example2.wxml b/miniprogram/page/ad/smart-ad/example2/example2.wxml new file mode 100644 index 00000000..02cc0d69 --- /dev/null +++ b/miniprogram/page/ad/smart-ad/example2/example2.wxml @@ -0,0 +1,42 @@ + + + + 广告投放流程 + + + 1 + + 创建广告计划 + 设置广告目标、预算和投放时间 + + 已完成 + + + 2 + + 选择投放人群 + 根据用户画像精准定向目标受众 + + 已完成 + + + 3 + + 上传广告素材 + 支持图片、视频等多种素材格式 + + 进行中 + + + 4 + + 提交审核上线 + 审核通过后自动开始投放 + + 待处理 + + + + + + diff --git a/miniprogram/page/ad/smart-ad/example2/example2.wxss b/miniprogram/page/ad/smart-ad/example2/example2.wxss new file mode 100644 index 00000000..2e1c17ae --- /dev/null +++ b/miniprogram/page/ad/smart-ad/example2/example2.wxss @@ -0,0 +1,96 @@ +@import "../../../../common/reset.wxss"; + +.container { + padding: 20px 15px; +} + +.example-list { + background-color: var(--weui-BG-3); + border-radius: 8px; + padding: 12px; +} + +.list-header { + font-size: 15px; + font-weight: 600; + color: var(--weui-FG-0); + margin-bottom: 12px; + padding-bottom: 8px; + border-bottom: 1px solid var(--weui-FG-3); +} + +.step-list { + display: flex; + flex-direction: column; + gap: 10px; +} + +.step-item { + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + padding: 12px 10px; + background-color: var(--weui-BG-2); + border-radius: 6px; +} + +.step-number { + width: 28px; + height: 28px; + border-radius: 50%; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); + color: #fff; + font-size: 14px; + font-weight: 600; + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; +} + +.step-content { + flex: 1; + margin: 0 12px; + display: flex; + flex-direction: column; + justify-content: center; +} + +.step-title { + font-size: 14px; + font-weight: 500; + color: var(--weui-FG-0); + margin-bottom: 4px; +} + +.step-desc { + font-size: 12px; + color: var(--weui-FG-2); +} + +.step-status { + font-size: 12px; + padding: 4px 10px; + border-radius: 10px; + flex-shrink: 0; + display: flex; + align-items: center; + justify-content: center; +} + +.status-done { + background-color: rgba(76, 175, 80, 0.15); + color: #4caf50; +} + +.status-progress { + background-color: rgba(33, 150, 243, 0.15); + color: #2196f3; +} + +.status-pending { + background-color: rgba(158, 158, 158, 0.15); + color: #9e9e9e; +} + diff --git a/miniprogram/page/ad/smart-ad/example3/example3.js b/miniprogram/page/ad/smart-ad/example3/example3.js new file mode 100644 index 00000000..268b2102 --- /dev/null +++ b/miniprogram/page/ad/smart-ad/example3/example3.js @@ -0,0 +1,31 @@ +Page({ + onShareAppMessage() { + return { + title: '示例 3 - 数据概览', + path: 'page/ad/smart-ad/example3/example3' + } + }, + + data: { + theme: 'light' + }, + + onUnload() { + if (wx.offThemeChange) { + wx.offThemeChange() + } + }, + + onLoad() { + this.setData({ + theme: getApp().globalData.theme || 'light' + }) + + if (wx.onThemeChange) { + wx.onThemeChange(({ theme }) => { + this.setData({ theme }) + }) + } + } +}) + diff --git a/miniprogram/page/ad/smart-ad/example3/example3.json b/miniprogram/page/ad/smart-ad/example3/example3.json new file mode 100644 index 00000000..2864f706 --- /dev/null +++ b/miniprogram/page/ad/smart-ad/example3/example3.json @@ -0,0 +1,5 @@ +{ + "navigationBarTitleText": "示例 3", + "renderer": "webview" +} + diff --git a/miniprogram/page/ad/smart-ad/example3/example3.wxml b/miniprogram/page/ad/smart-ad/example3/example3.wxml new file mode 100644 index 00000000..9a982fcd --- /dev/null +++ b/miniprogram/page/ad/smart-ad/example3/example3.wxml @@ -0,0 +1,66 @@ + + + + + 今日数据概览 + 2026-01-06 + + + + 12,580 + 展示次数 + ↑ 15.2% + + + 1,024 + 点击次数 + ↑ 8.7% + + + 8.14% + 点击率 + ↓ 2.1% + + + ¥2,156 + 预估收益 + ↑ 12.5% + + + + 近7日收益趋势 + + + + 周一 + + + + 周二 + + + + 周三 + + + + 周四 + + + + 周五 + + + + 周六 + + + + 周日 + + + + + + + diff --git a/miniprogram/page/ad/smart-ad/example3/example3.wxss b/miniprogram/page/ad/smart-ad/example3/example3.wxss new file mode 100644 index 00000000..a8e323f9 --- /dev/null +++ b/miniprogram/page/ad/smart-ad/example3/example3.wxss @@ -0,0 +1,114 @@ +@import "../../../../common/reset.wxss"; + +.container { + padding: 20px 15px; +} + +.example-dashboard { + background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%); + border-radius: 8px; + padding: 12px; + color: #fff; +} + +.dashboard-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 12px; +} + +.dashboard-title { + font-size: 15px; + font-weight: 600; +} + +.dashboard-date { + font-size: 12px; + color: rgba(255, 255, 255, 0.6); +} + +.dashboard-grid { + display: flex; + flex-wrap: wrap; + gap: 8px; + margin-bottom: 12px; +} + +.dashboard-cell { + width: calc(50% - 4px); + background-color: rgba(255, 255, 255, 0.08); + border-radius: 6px; + padding: 10px; + box-sizing: border-box; +} + +.cell-value { + font-size: 18px; + font-weight: 700; + margin-bottom: 4px; +} + +.cell-label { + font-size: 11px; + color: rgba(255, 255, 255, 0.6); + margin-bottom: 4px; +} + +.cell-trend { + font-size: 11px; + font-weight: 500; +} + +.trend-up { + color: #4caf50; +} + +.trend-down { + color: #f44336; +} + +.dashboard-chart { + background-color: rgba(255, 255, 255, 0.05); + border-radius: 6px; + padding: 10px; +} + +.chart-title { + font-size: 13px; + margin-bottom: 10px; + color: rgba(255, 255, 255, 0.8); +} + +.chart-bars { + display: flex; + justify-content: space-between; + align-items: flex-end; + height: 80px; +} + +.bar-item { + display: flex; + flex-direction: column; + align-items: center; + flex: 1; +} + +.bar { + width: 16px; + background: linear-gradient(180deg, #667eea 0%, #764ba2 100%); + border-radius: 3px 3px 0 0; + margin-bottom: 6px; + opacity: 0.7; +} + +.bar-active { + opacity: 1; + box-shadow: 0 0 10px rgba(102, 126, 234, 0.5); +} + +.bar-label { + font-size: 10px; + color: rgba(255, 255, 255, 0.5); +} + diff --git a/miniprogram/page/ad/smart-ad/smart-ad.js b/miniprogram/page/ad/smart-ad/smart-ad.js new file mode 100644 index 00000000..924bfd04 --- /dev/null +++ b/miniprogram/page/ad/smart-ad/smart-ad.js @@ -0,0 +1,30 @@ +Page({ + onShareAppMessage() { + return { + title: '智能广告', + path: 'page/ad/smart-ad/smart-ad' + } + }, + + data: { + theme: 'light' + }, + + onUnload() { + if (wx.offThemeChange) { + wx.offThemeChange() + } + }, + + onLoad() { + this.setData({ + theme: getApp().globalData.theme || 'light' + }) + + if (wx.onThemeChange) { + wx.onThemeChange(({ theme }) => { + this.setData({ theme }) + }) + } + } +}) diff --git a/miniprogram/page/ad/smart-ad/smart-ad.json b/miniprogram/page/ad/smart-ad/smart-ad.json new file mode 100644 index 00000000..01aa459f --- /dev/null +++ b/miniprogram/page/ad/smart-ad/smart-ad.json @@ -0,0 +1,5 @@ +{ + "navigationBarTitleText": "智能广告", + "renderer": "webview" +} + diff --git a/miniprogram/page/ad/smart-ad/smart-ad.wxml b/miniprogram/page/ad/smart-ad/smart-ad.wxml new file mode 100644 index 00000000..535c0f5c --- /dev/null +++ b/miniprogram/page/ad/smart-ad/smart-ad.wxml @@ -0,0 +1,24 @@ + + + + 智能广告示例 + 以下展示了三种不同类型的智能广告接入示例,点击查看详情。 + + + + + + 示例 1 + + + + + + 示例 2 + + + + + + + diff --git a/miniprogram/page/ad/smart-ad/smart-ad.wxss b/miniprogram/page/ad/smart-ad/smart-ad.wxss new file mode 100644 index 00000000..e35e66f0 --- /dev/null +++ b/miniprogram/page/ad/smart-ad/smart-ad.wxss @@ -0,0 +1,23 @@ +@import "../../../common/reset.wxss"; +@import "../../common/index.wxss"; + +.index-title { + font-size: 18px; + font-weight: 600; + color: var(--weui-FG-0); + margin-bottom: 8px; +} + +.kind-list-item-hd { + display: flex; + flex-direction: row; + align-items: center; +} + +.kind-list-arrow { + width: 8px; + height: 8px; + border-right: 2px solid var(--weui-FG-2); + border-top: 2px solid var(--weui-FG-2); + transform: rotate(45deg); +} diff --git a/project.private.config.json b/project.private.config.json index 7858c828..4559717b 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -1,213 +1,23 @@ { - "libVersion": "3.7.6", - "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", + "libVersion": "3.13.0", + "condition": {}, + "projectname": "miniprogram-demo", "setting": { - "urlCheck": false, - "compileHotReLoad": false, - "lazyloadPlaceholderEnable": false, - "skylineRenderEnable": true + "urlCheck": true, "coverView": true, - }, - "projectname": "miniprogram-demo-master", - "condition": { - "miniprogram": { - "list": [ - { - "name": "packageChatTool/pages/activity_create/index", - "pathName": "packageChatTool/pages/activity_create/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "聊天工具-签到助手", - "pathName": "packageAPI/pages/chattool/activity_assist/activity_assist", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "packageAPI/pages/chattool/material_view/material_view", - "pathName": "packageAPI/pages/chattool/material_view/material_view", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "packageAPI/pages/chattool/material_open/material_open", - "pathName": "packageAPI/pages/chattool/material_open/material_open", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "聊天工具-活动详情", - "pathName": "packageChatTool/pages/activity_detail/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "聊天工具-创建活动", - "pathName": "packageChatTool/pages/activity_create/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "gaussian-splatting-ar", - "pathName": "packageAPI/pages/ar/gaussian-splatting/gaussian-splatting-ar", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "gaussian-splatting", - "pathName": "packageAPI/pages/ar/gaussian-splatting/gaussian-splatting", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "ar-cameraBuffer-jpg", - "pathName": "packageAPI/pages/ar/cameraBuffer-jpg/cameraBuffer-jpg", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "plane-ar-v2-options", - "pathName": "packageAPI/pages/ar/plane-ar-v2-options/plane-ar-v2-options", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "packageSkylineExamples/examples/app-bar/pages/index/index", - "pathName": "packageSkylineExamples/examples/app-bar/pages/index/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "photo-idcard-detect", - "pathName": "packageAPI/pages/ar/photo-idcard-detect/photo-idcard-detect", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "ar-plane-v2", - "pathName": "packageAPI/pages/ar/plane-ar-v2/plane-ar-v2", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "ar-v2-depth", - "pathName": "packageAPI/pages/ar/plane-ar-v2-depth/plane-ar-v2-depth", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "ar-depth-detect", - "pathName": "packageAPI/pages/ar/depth-detect/depth-detect", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "ar-3dmarker", - "pathName": "packageAPI/pages/ar/3dmarker-ar/3dmarker-ar", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "ar-photo-shoe-detect", - "pathName": "packageAPI/pages/ar/photo-shoe-detect/photo-shoe-detect", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "ar-shoe-detect", - "pathName": "packageAPI/pages/ar/shoe-detect/shoe-detect", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "ar-2dmarker", - "pathName": "packageAPI/pages/ar/2dmarker-ar/2dmarker-ar", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "page/API/pages/storage/storage", - "pathName": "page/API/pages/storage/storage", - "query": "", - "scene": null - }, - { - "name": "card_transition", - "pathName": "packageSkylineExamples/examples/card_transition/pages/list/list", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "card_transition/detail", - "pathName": "packageSkylineExamples/examples/card_transition/pages/detail/detail", - "query": "index=1&url=https%253A%252F%252Fpicsum.photos%252F300%252F400%253Frandom%253D1&content=%E6%8E%A8%E8%8D%90%20Skyline%EF%BC%8C%E4%BD%BF%E7%94%A8%E5%90%8E%E4%BD%93%E9%AA%8C%E6%B5%81%E7%95%85%E5%BE%88%E5%A4%9A~&ratio=0.75", - "launchMode": "default", - "scene": null - }, - { - "name": "page/animation/index", - "pathName": "page/animation/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "packageSkyline/pages/scroll-view/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "product-list", - "pathName": "packageSkylineExamples/examples/product-list/pages/index/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "expanded-scroll-view", - "pathName": "packageSkylineExamples/examples/expanded-scroll-view/pages/index/index", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "demo-1", - "pathName": "packageComponent/pages/view/grid-view/demo-1/demo-1", - "query": "", - "launchMode": "default", - "scene": null - }, - { - "name": "", - "pathName": "page/component/index", - "query": "", - "launchMode": "default", - "scene": null - } - ] - } + "lazyloadPlaceholderEnable": false, + "skylineRenderEnable": true, + "preloadBackgroundData": true, + "autoAudits": false, + "useApiHook": true, + "showShadowRootInWxmlPanel": true, + "useStaticServer": true, + "useLanDebug": false, + "showES6CompileOption": false, + "compileHotReLoad": true, + "checkInvalidKey": true, + "ignoreDevUnusedFiles": false, + "bigPackageSizeSupport": false, + "useIsolateContext": false } } \ No newline at end of file From 3db98d9f158283f6aa393d3dac2deea3444c6c46 Mon Sep 17 00:00:00 2001 From: youngboyliu Date: Tue, 13 Jan 2026 15:57:47 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=E5=B9=BF=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- miniprogram/app.json | 7 +- miniprogram/image/icon_ad.png | Bin 653 -> 3642 bytes miniprogram/image/icon_ad_HL.png | Bin 688 -> 3522 bytes miniprogram/image/icon_ad_dark.png | Bin 1259 -> 3637 bytes miniprogram/page/ad/index.js | 10 ++- .../home-large-card/home-large-card.js | 53 ++++++++++++++++ .../home-large-card/home-large-card.json | 5 ++ .../home-large-card/home-large-card.wxml | 56 ++++++++++++++++ .../home-large-card/home-large-card.wxss | 60 ++++++++++++++++++ .../home-small-card/home-small-card.js | 53 ++++++++++++++++ .../home-small-card/home-small-card.json | 5 ++ .../home-small-card/home-small-card.wxml | 56 ++++++++++++++++ .../home-small-card/home-small-card.wxss | 60 ++++++++++++++++++ .../page/ad/optimize-ad/optimize-ad.js | 31 +++++++++ .../page/ad/optimize-ad/optimize-ad.json | 5 ++ .../page/ad/optimize-ad/optimize-ad.wxml | 37 +++++++++++ .../page/ad/optimize-ad/optimize-ad.wxss | 24 +++++++ .../other-large-card/other-large-card.js | 53 ++++++++++++++++ .../other-large-card/other-large-card.json | 5 ++ .../other-large-card/other-large-card.wxml | 57 +++++++++++++++++ .../other-large-card/other-large-card.wxss | 59 +++++++++++++++++ .../other-small-card/other-small-card.js | 53 ++++++++++++++++ .../other-small-card/other-small-card.json | 5 ++ .../other-small-card/other-small-card.wxml | 57 +++++++++++++++++ .../other-small-card/other-small-card.wxss | 59 +++++++++++++++++ .../page/ad/smart-ad/example1/example1.wxml | 35 +++------- .../page/ad/smart-ad/example2/example2.wxml | 18 +++--- 27 files changed, 824 insertions(+), 39 deletions(-) create mode 100644 miniprogram/page/ad/optimize-ad/home-large-card/home-large-card.js create mode 100644 miniprogram/page/ad/optimize-ad/home-large-card/home-large-card.json create mode 100644 miniprogram/page/ad/optimize-ad/home-large-card/home-large-card.wxml create mode 100644 miniprogram/page/ad/optimize-ad/home-large-card/home-large-card.wxss create mode 100644 miniprogram/page/ad/optimize-ad/home-small-card/home-small-card.js create mode 100644 miniprogram/page/ad/optimize-ad/home-small-card/home-small-card.json create mode 100644 miniprogram/page/ad/optimize-ad/home-small-card/home-small-card.wxml create mode 100644 miniprogram/page/ad/optimize-ad/home-small-card/home-small-card.wxss create mode 100644 miniprogram/page/ad/optimize-ad/optimize-ad.js create mode 100644 miniprogram/page/ad/optimize-ad/optimize-ad.json create mode 100644 miniprogram/page/ad/optimize-ad/optimize-ad.wxml create mode 100644 miniprogram/page/ad/optimize-ad/optimize-ad.wxss create mode 100644 miniprogram/page/ad/optimize-ad/other-large-card/other-large-card.js create mode 100644 miniprogram/page/ad/optimize-ad/other-large-card/other-large-card.json create mode 100644 miniprogram/page/ad/optimize-ad/other-large-card/other-large-card.wxml create mode 100644 miniprogram/page/ad/optimize-ad/other-large-card/other-large-card.wxss create mode 100644 miniprogram/page/ad/optimize-ad/other-small-card/other-small-card.js create mode 100644 miniprogram/page/ad/optimize-ad/other-small-card/other-small-card.json create mode 100644 miniprogram/page/ad/optimize-ad/other-small-card/other-small-card.wxml create mode 100644 miniprogram/page/ad/optimize-ad/other-small-card/other-small-card.wxss diff --git a/miniprogram/app.json b/miniprogram/app.json index b8496b61..8ed6fd2d 100644 --- a/miniprogram/app.json +++ b/miniprogram/app.json @@ -9,7 +9,12 @@ "page/ad/smart-ad/smart-ad", "page/ad/smart-ad/example1/example1", "page/ad/smart-ad/example2/example2", - "page/ad/smart-ad/example3/example3" + "page/ad/smart-ad/example3/example3", + "page/ad/optimize-ad/optimize-ad", + "page/ad/optimize-ad/home-small-card/home-small-card", + "page/ad/optimize-ad/home-large-card/home-large-card", + "page/ad/optimize-ad/other-small-card/other-small-card", + "page/ad/optimize-ad/other-large-card/other-large-card" ], "usingComponents": { "mp-navigation-bar": "/component/navigation-bar/navigation-bar" diff --git a/miniprogram/image/icon_ad.png b/miniprogram/image/icon_ad.png index 301f579aefe5d6cb304da54b211b41dc87c7f386..78f4287a00c883752fe220a98bae4ced032d81c4 100644 GIT binary patch literal 3642 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 iYKAd>`}t z^G4yT*DdP=8W>m<7#KMm7??oJXI=|7`mM>mufP9q+2cLCKc9<_JRbSmbluOA-s;^M zdDC*Mf2Yctx7R(t=J|zT?|1I(|5xgEw|>m~_;%ah3%{>?H2pn)W^*~8$@jUJHipd6 zEao{jYp%teL+f8J{VBom$hDh)b?2Ra=@1Oz-DxF~RO zaHte039z!T2w4brFflQ4&f#!jWNc*d6LB#4zxnQc?)U#A@5O6zK9cu%^KL$W*7MlJ z@}%;OaZduhjtbiK-0ZAPJM=DT@9rZvt%EH3^?p7yXLec{?c`loUvtLOe%(C#zKsnJ z=lo`^jkJ$#|GIHgt@UvcuWQq9z3MDHb9<-C>Ij{_DH4*e6d4!=8`o?vUi)TERN?W6 z^t};Tsp(g{tl13T3#%JuXXOZ8{AS=6(Z@IE#smrV)18O;?@hWHx%E+>uID`A<01be ztp!-Q`SAINWl=+e1Cu)LVA!O$DoeHIT9@@P%Y19~G~ZrdrCV~xI8R?}6qXixoMO2# qtSoHp4&mu757FXWq2Lxv9fSDnOWnIeU%CO)7lWs(pUXO@geCwqkO@El diff --git a/miniprogram/image/icon_ad_HL.png b/miniprogram/image/icon_ad_HL.png index 65c3fcb7d3db5cf3d5229676511deb9b0fe31821..1e508ce5c271b8bd671e454f1ffe8e74457906d2 100644 GIT binary patch literal 3522 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 diff --git a/miniprogram/image/icon_ad_dark.png b/miniprogram/image/icon_ad_dark.png index 122852045d171c97b7b21ba8e9d790b032e66c49..49190ce18f59c0634d16746e0525de7d1a4ba5fa 100644 GIT binary patch literal 3637 zcmZ`+X*iT^8#Yf5#@fu7kTk}Ur9t+P@(`ks%GgGcC5g%!V&WOHFJr68Qc9K>c~L}` zne0N-Vynm!+4*>1L~p+5{r!I5kNZB4^SZ9%zK;96kNY^zE5XM4ln}oJKNlC5kcGL) zc?7%uS!f<)uW)$&5Q)!Qm>AiHq89Uoa`KchG1_7~8JV7e)p82Cl|8e})}AzBv`{wh zlPAXOx5Sn#b(ZTaB26H$5tPFmk;uou-Wd>{TLwcU!r=I97TTPch{B>Vii&hrss16r z3<;P?9@1RE(4l$1q0)czVSGIHmBz;tD89Dlz1q<

xRX8+b_taPd^BYdqY1=0xs^ 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 E3*@_ZuK)l5 literal 1259 zcmeAS@N?(olHy`uVBq!ia0vp^fgsGm1|(PYdzk?#$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%&M6o5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8JrcYhY+)U}j}%t^fr}K--E^(yW49+@N*=dA3R!B_#z``ugSN z<$C4Ddih1^`i7R4Kr@W=jf`}GDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaoz zEwNPsx)kDt+yc06!V;*iRM zRQ;gT;{4L0WMIUlDTAykuyQU+O)SYT3dzsUfrVl~Mt(_taYlZDf)UV33L3tN$(eZ| z5lyfbUtcTFyyB9?yyR3*7h5HuA$pmaDOP5tZk9%l=9VVLZWe}yu8x+D&X!JQhNgyw z7M9L#ZWb`TF8Rr&xv6<2Fuf@Vy^c8bf>J|n0nlcb)S}F?)D*X({9FaFudOn1yTu%* zc~HG6xZPrbQ?EYIG5VmmMT%>f5HJCOnDCSf#`@^IQ!#f zIoH?82|m{Yo`+2@o}b}Ud-`O!83bQ~+A*$pW+%;e_4|UlwRVwalD> iq@|Y?S { + this.setData({ theme }) + }) + } + }, + + /** + * 广告加载成功回调 + */ + onadload(e) { + console.log('广告加载成功:', e) + }, + + /** + * 广告加载失败回调 + */ + onaderror(e) { + console.log('广告加载失败:', e) + }, + + /** + * 广告视频结束回调 + */ + onvideoended(e) { + console.log('广告视频播放结束:', e) + } +}) + diff --git a/miniprogram/page/ad/optimize-ad/home-large-card/home-large-card.json b/miniprogram/page/ad/optimize-ad/home-large-card/home-large-card.json new file mode 100644 index 00000000..a2ab00d3 --- /dev/null +++ b/miniprogram/page/ad/optimize-ad/home-large-card/home-large-card.json @@ -0,0 +1,5 @@ +{ + "navigationBarTitleText": "广告调优测试-首页大卡", + "renderer": "webview" +} + diff --git a/miniprogram/page/ad/optimize-ad/home-large-card/home-large-card.wxml b/miniprogram/page/ad/optimize-ad/home-large-card/home-large-card.wxml new file mode 100644 index 00000000..7bf9b231 --- /dev/null +++ b/miniprogram/page/ad/optimize-ad/home-large-card/home-large-card.wxml @@ -0,0 +1,56 @@ + + + + + 广告调优测试-首页大卡 + + + + + + 内容区域 + + 这是一段填充内容,用于页面展示。 + + + 此页面确保只有一个广告组件,符合一个页面只有一个广告的要求。 + + + 小程序广告是微信官方推出的广告组件,支持多种广告形式。 + + + 广告调优可以帮助开发者优化广告展示效果,提升用户体验。 + + + 首页小卡广告适合在首屏位置展示,能够获得更高的曝光率。 + + + 合理的广告布局可以在不影响用户体验的前提下实现流量变现。 + + + 广告组件会根据用户特征自动匹配最合适的广告内容。 + + + 开发者可以通过回调函数监听广告的加载状态和用户交互行为。 + + + 广告收益与曝光量、点击率等多种因素相关。 + + + 建议在合适的场景下展示广告,避免过度打扰用户。 + + + 持续优化广告展示策略,可以获得更好的变现效果。 + + + 感谢您使用微信广告服务,祝您使用愉快! + + + + diff --git a/miniprogram/page/ad/optimize-ad/home-large-card/home-large-card.wxss b/miniprogram/page/ad/optimize-ad/home-large-card/home-large-card.wxss new file mode 100644 index 00000000..8cecabe8 --- /dev/null +++ b/miniprogram/page/ad/optimize-ad/home-large-card/home-large-card.wxss @@ -0,0 +1,60 @@ +/* 广告调优测试-首页大卡 */ +.container { + display: block !important; + padding: 0; + margin: 0; + background-color: #fff; + min-height: auto; + justify-content: initial; +} + +.ad-section { + margin: 0; + padding: 0; + background-color: #fff; +} + +.ad-label { + display: block; + font-size: 28rpx; + font-weight: bold; + color: #333; + padding: 20rpx; + margin: 0; + text-align: center; + background-color: #fff; +} + +.ad-unit { + width: 100%; + display: block; +} + +.content-section { + margin: 0; + padding: 20rpx; + background-color: #fff; +} + +.content-title { + display: block; + font-size: 32rpx; + font-weight: bold; + color: #333; + margin-bottom: 20rpx; + text-align: center; +} + +.content-item { + margin: 20rpx 0; + padding: 20rpx; + background-color: #fafafa; + border-radius: 8rpx; + border-left: 4rpx solid #007aff; +} + +.content-text { + font-size: 28rpx; + line-height: 1.6; + color: #666; +} diff --git a/miniprogram/page/ad/optimize-ad/home-small-card/home-small-card.js b/miniprogram/page/ad/optimize-ad/home-small-card/home-small-card.js new file mode 100644 index 00000000..ca3bbba5 --- /dev/null +++ b/miniprogram/page/ad/optimize-ad/home-small-card/home-small-card.js @@ -0,0 +1,53 @@ +// 广告调优测试-首页小卡 +Page({ + data: { + theme: 'light' + }, + + onShareAppMessage() { + return { + title: '广告调优测试-首页小卡', + path: 'page/ad/optimize-ad/home-small-card/home-small-card' + } + }, + + onUnload() { + if (wx.offThemeChange) { + wx.offThemeChange() + } + }, + + onLoad(options) { + this.setData({ + theme: getApp().globalData.theme || 'light' + }) + + if (wx.onThemeChange) { + wx.onThemeChange(({ theme }) => { + this.setData({ theme }) + }) + } + }, + + /** + * 广告加载成功回调 + */ + onadload(e) { + console.log('广告加载成功:', e) + }, + + /** + * 广告加载失败回调 + */ + onaderror(e) { + console.log('广告加载失败:', e) + }, + + /** + * 广告视频结束回调 + */ + onvideoended(e) { + console.log('广告视频播放结束:', e) + } +}) + diff --git a/miniprogram/page/ad/optimize-ad/home-small-card/home-small-card.json b/miniprogram/page/ad/optimize-ad/home-small-card/home-small-card.json new file mode 100644 index 00000000..64531f65 --- /dev/null +++ b/miniprogram/page/ad/optimize-ad/home-small-card/home-small-card.json @@ -0,0 +1,5 @@ +{ + "navigationBarTitleText": "广告调优测试-首页小卡", + "renderer": "webview" +} + diff --git a/miniprogram/page/ad/optimize-ad/home-small-card/home-small-card.wxml b/miniprogram/page/ad/optimize-ad/home-small-card/home-small-card.wxml new file mode 100644 index 00000000..0b609ad3 --- /dev/null +++ b/miniprogram/page/ad/optimize-ad/home-small-card/home-small-card.wxml @@ -0,0 +1,56 @@ + + + + + 广告由小卡免开发切为大卡 + + + + + + 内容区域 + + 这是一段填充内容,用于页面展示。 + + + 此页面确保只有一个广告组件,符合一个页面只有一个广告的要求。 + + + 小程序广告是微信官方推出的广告组件,支持多种广告形式。 + + + 广告调优可以帮助开发者优化广告展示效果,提升用户体验。 + + + 首页小卡广告适合在首屏位置展示,能够获得更高的曝光率。 + + + 合理的广告布局可以在不影响用户体验的前提下实现流量变现。 + + + 广告组件会根据用户特征自动匹配最合适的广告内容。 + + + 开发者可以通过回调函数监听广告的加载状态和用户交互行为。 + + + 广告收益与曝光量、点击率等多种因素相关。 + + + 建议在合适的场景下展示广告,避免过度打扰用户。 + + + 持续优化广告展示策略,可以获得更好的变现效果。 + + + 感谢您使用微信广告服务,祝您使用愉快! + + + + diff --git a/miniprogram/page/ad/optimize-ad/home-small-card/home-small-card.wxss b/miniprogram/page/ad/optimize-ad/home-small-card/home-small-card.wxss new file mode 100644 index 00000000..216c2718 --- /dev/null +++ b/miniprogram/page/ad/optimize-ad/home-small-card/home-small-card.wxss @@ -0,0 +1,60 @@ +/* 广告调优测试-首页小卡 */ +.container { + display: block !important; + padding: 0; + margin: 0; + background-color: #fff; + min-height: auto; + justify-content: initial; +} + +.ad-section { + margin: 0; + padding: 0; + background-color: #fff; +} + +.ad-label { + display: block; + font-size: 28rpx; + font-weight: bold; + color: #333; + padding: 20rpx; + margin: 0; + text-align: center; + background-color: #fff; +} + +.ad-unit { + width: 100%; + display: block; +} + +.content-section { + margin: 0; + padding: 20rpx; + background-color: #fff; +} + +.content-title { + display: block; + font-size: 32rpx; + font-weight: bold; + color: #333; + margin-bottom: 20rpx; + text-align: center; +} + +.content-item { + margin: 20rpx 0; + padding: 20rpx; + background-color: #fafafa; + border-radius: 8rpx; + border-left: 4rpx solid #007aff; +} + +.content-text { + font-size: 28rpx; + line-height: 1.6; + color: #666; +} diff --git a/miniprogram/page/ad/optimize-ad/optimize-ad.js b/miniprogram/page/ad/optimize-ad/optimize-ad.js new file mode 100644 index 00000000..3a1120de --- /dev/null +++ b/miniprogram/page/ad/optimize-ad/optimize-ad.js @@ -0,0 +1,31 @@ +Page({ + onShareAppMessage() { + return { + title: '广告调优', + path: 'page/ad/optimize-ad/optimize-ad' + } + }, + + data: { + theme: 'light' + }, + + onUnload() { + if (wx.offThemeChange) { + wx.offThemeChange() + } + }, + + onLoad() { + this.setData({ + theme: getApp().globalData.theme || 'light' + }) + + if (wx.onThemeChange) { + wx.onThemeChange(({ theme }) => { + this.setData({ theme }) + }) + } + } +}) + diff --git a/miniprogram/page/ad/optimize-ad/optimize-ad.json b/miniprogram/page/ad/optimize-ad/optimize-ad.json new file mode 100644 index 00000000..24935fa9 --- /dev/null +++ b/miniprogram/page/ad/optimize-ad/optimize-ad.json @@ -0,0 +1,5 @@ +{ + "navigationBarTitleText": "广告调优", + "renderer": "webview" +} + diff --git a/miniprogram/page/ad/optimize-ad/optimize-ad.wxml b/miniprogram/page/ad/optimize-ad/optimize-ad.wxml new file mode 100644 index 00000000..9b8c2937 --- /dev/null +++ b/miniprogram/page/ad/optimize-ad/optimize-ad.wxml @@ -0,0 +1,37 @@ + + + + 广告调优示例 + 以下展示了四种不同类型的广告调优测试示例,点击查看详情。 + + + + + + 首页小卡 + + + + + + 首页大卡 + + + + + + 非首页小卡 + + + + + + 非首页大卡 + + + + + + + + diff --git a/miniprogram/page/ad/optimize-ad/optimize-ad.wxss b/miniprogram/page/ad/optimize-ad/optimize-ad.wxss new file mode 100644 index 00000000..1df89d13 --- /dev/null +++ b/miniprogram/page/ad/optimize-ad/optimize-ad.wxss @@ -0,0 +1,24 @@ +@import "../../../common/reset.wxss"; +@import "../../common/index.wxss"; + +.index-title { + font-size: 18px; + font-weight: 600; + color: var(--weui-FG-0); + margin-bottom: 8px; +} + +.kind-list-item-hd { + display: flex; + flex-direction: row; + align-items: center; +} + +.kind-list-arrow { + width: 8px; + height: 8px; + border-right: 2px solid var(--weui-FG-2); + border-top: 2px solid var(--weui-FG-2); + transform: rotate(45deg); +} + diff --git a/miniprogram/page/ad/optimize-ad/other-large-card/other-large-card.js b/miniprogram/page/ad/optimize-ad/other-large-card/other-large-card.js new file mode 100644 index 00000000..11fbce11 --- /dev/null +++ b/miniprogram/page/ad/optimize-ad/other-large-card/other-large-card.js @@ -0,0 +1,53 @@ +// 广告调优测试-非首页大卡 +Page({ + data: { + theme: 'light' + }, + + onShareAppMessage() { + return { + title: '广告调优测试-非首页大卡', + path: 'page/ad/optimize-ad/other-large-card/other-large-card' + } + }, + + onUnload() { + if (wx.offThemeChange) { + wx.offThemeChange() + } + }, + + onLoad(options) { + this.setData({ + theme: getApp().globalData.theme || 'light' + }) + + if (wx.onThemeChange) { + wx.onThemeChange(({ theme }) => { + this.setData({ theme }) + }) + } + }, + + /** + * 广告加载成功回调 + */ + onadload(e) { + console.log('广告加载成功:', e) + }, + + /** + * 广告加载失败回调 + */ + onaderror(e) { + console.log('广告加载失败:', e) + }, + + /** + * 广告视频结束回调 + */ + onvideoended(e) { + console.log('广告视频播放结束:', e) + } +}) + diff --git a/miniprogram/page/ad/optimize-ad/other-large-card/other-large-card.json b/miniprogram/page/ad/optimize-ad/other-large-card/other-large-card.json new file mode 100644 index 00000000..188926f4 --- /dev/null +++ b/miniprogram/page/ad/optimize-ad/other-large-card/other-large-card.json @@ -0,0 +1,5 @@ +{ + "navigationBarTitleText": "广告调优测试-非首页大卡", + "renderer": "webview" +} + diff --git a/miniprogram/page/ad/optimize-ad/other-large-card/other-large-card.wxml b/miniprogram/page/ad/optimize-ad/other-large-card/other-large-card.wxml new file mode 100644 index 00000000..c619d30e --- /dev/null +++ b/miniprogram/page/ad/optimize-ad/other-large-card/other-large-card.wxml @@ -0,0 +1,57 @@ + + + + + 页面内容区域 + + 这是首屏展示的内容,广告在下方非首屏位置。 + + + 用户需要向下滚动才能看到广告内容。 + + + 这里是一些填充文本,用于占据首屏空间。 + + + 继续添加更多内容,确保广告被推到非首屏。 + + + 丰富的内容展示,提供良好的用户体验。 + + + 更多精彩内容等你发现,向下滚动查看更多。 + + + 这是第七段填充内容,继续占据屏幕空间。 + + + 第八段内容,确保广告完全在非首屏位置。 + + + 第九段内容,页面内容丰富多样。 + + + 第十段内容,广告即将出现在下方。 + + + + + + 广告调优测试-非首页大卡 + + + + + + + 页面底部内容,感谢您的浏览。 + + + + diff --git a/miniprogram/page/ad/optimize-ad/other-large-card/other-large-card.wxss b/miniprogram/page/ad/optimize-ad/other-large-card/other-large-card.wxss new file mode 100644 index 00000000..21a62921 --- /dev/null +++ b/miniprogram/page/ad/optimize-ad/other-large-card/other-large-card.wxss @@ -0,0 +1,59 @@ +/* 广告调优测试-非首页大卡 */ +.container { + padding: 0; + background-color: #f5f5f5; +} + +.ad-section { + margin: 20rpx 0; + padding: 0; + background-color: #fff; + box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.1); +} + +.ad-label { + display: block; + font-size: 28rpx; + font-weight: bold; + color: #333; + padding: 20rpx; + margin-bottom: 0; + text-align: center; + background-color: #fff; +} + +.ad-unit { + width: 100vw; + min-height: 200rpx; + background-color: #f0f0f0; +} + +.content-section { + margin: 20rpx 0; + padding: 20rpx; + background-color: #fff; +} + +.content-title { + display: block; + font-size: 32rpx; + font-weight: bold; + color: #333; + margin-bottom: 20rpx; + text-align: center; +} + +.content-item { + margin: 20rpx 0; + padding: 20rpx; + background-color: #fafafa; + border-radius: 8rpx; + border-left: 4rpx solid #007aff; +} + +.content-text { + font-size: 28rpx; + line-height: 1.6; + color: #666; +} + diff --git a/miniprogram/page/ad/optimize-ad/other-small-card/other-small-card.js b/miniprogram/page/ad/optimize-ad/other-small-card/other-small-card.js new file mode 100644 index 00000000..13e72ceb --- /dev/null +++ b/miniprogram/page/ad/optimize-ad/other-small-card/other-small-card.js @@ -0,0 +1,53 @@ +// 广告调优测试-非首页小卡 +Page({ + data: { + theme: 'light' + }, + + onShareAppMessage() { + return { + title: '广告调优测试-非首页小卡', + path: 'page/ad/optimize-ad/other-small-card/other-small-card' + } + }, + + onUnload() { + if (wx.offThemeChange) { + wx.offThemeChange() + } + }, + + onLoad(options) { + this.setData({ + theme: getApp().globalData.theme || 'light' + }) + + if (wx.onThemeChange) { + wx.onThemeChange(({ theme }) => { + this.setData({ theme }) + }) + } + }, + + /** + * 广告加载成功回调 + */ + onadload(e) { + console.log('广告加载成功:', e) + }, + + /** + * 广告加载失败回调 + */ + onaderror(e) { + console.log('广告加载失败:', e) + }, + + /** + * 广告视频结束回调 + */ + onvideoended(e) { + console.log('广告视频播放结束:', e) + } +}) + diff --git a/miniprogram/page/ad/optimize-ad/other-small-card/other-small-card.json b/miniprogram/page/ad/optimize-ad/other-small-card/other-small-card.json new file mode 100644 index 00000000..9a984aab --- /dev/null +++ b/miniprogram/page/ad/optimize-ad/other-small-card/other-small-card.json @@ -0,0 +1,5 @@ +{ + "navigationBarTitleText": "广告调优测试-非首页小卡", + "renderer": "webview" +} + diff --git a/miniprogram/page/ad/optimize-ad/other-small-card/other-small-card.wxml b/miniprogram/page/ad/optimize-ad/other-small-card/other-small-card.wxml new file mode 100644 index 00000000..d7ba7689 --- /dev/null +++ b/miniprogram/page/ad/optimize-ad/other-small-card/other-small-card.wxml @@ -0,0 +1,57 @@ + + + + + 页面内容区域 + + 这是首屏展示的内容,广告在下方非首屏位置。 + + + 用户需要向下滚动才能看到广告内容。 + + + 这里是一些填充文本,用于占据首屏空间。 + + + 继续添加更多内容,确保广告被推到非首屏。 + + + 丰富的内容展示,提供良好的用户体验。 + + + 更多精彩内容等你发现,向下滚动查看更多。 + + + 这是第七段填充内容,继续占据屏幕空间。 + + + 第八段内容,确保广告完全在非首屏位置。 + + + 第九段内容,页面内容丰富多样。 + + + 第十段内容,广告即将出现在下方。 + + + + + + 广告调优测试-非首页小卡 + + + + + + + 页面底部内容,感谢您的浏览。 + + + + diff --git a/miniprogram/page/ad/optimize-ad/other-small-card/other-small-card.wxss b/miniprogram/page/ad/optimize-ad/other-small-card/other-small-card.wxss new file mode 100644 index 00000000..dd2280ce --- /dev/null +++ b/miniprogram/page/ad/optimize-ad/other-small-card/other-small-card.wxss @@ -0,0 +1,59 @@ +/* 广告调优测试-非首页小卡 */ +.container { + padding: 0; + background-color: #f5f5f5; +} + +.ad-section { + margin: 20rpx 0; + padding: 0; + background-color: #fff; + box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.1); +} + +.ad-label { + display: block; + font-size: 28rpx; + font-weight: bold; + color: #333; + padding: 20rpx; + margin-bottom: 0; + text-align: center; + background-color: #fff; +} + +.ad-unit { + width: 100vw; + min-height: 200rpx; + background-color: #f0f0f0; +} + +.content-section { + margin: 20rpx 0; + padding: 20rpx; + background-color: #fff; +} + +.content-title { + display: block; + font-size: 32rpx; + font-weight: bold; + color: #333; + margin-bottom: 20rpx; + text-align: center; +} + +.content-item { + margin: 20rpx 0; + padding: 20rpx; + background-color: #fafafa; + border-radius: 8rpx; + border-left: 4rpx solid #007aff; +} + +.content-text { + font-size: 28rpx; + line-height: 1.6; + color: #666; +} + diff --git a/miniprogram/page/ad/smart-ad/example1/example1.wxml b/miniprogram/page/ad/smart-ad/example1/example1.wxml index ae8a93a5..0cd646de 100644 --- a/miniprogram/page/ad/smart-ad/example1/example1.wxml +++ b/miniprogram/page/ad/smart-ad/example1/example1.wxml @@ -9,9 +9,9 @@ - 个性插入 - 无需开发 - 实时生效 + 智能分析 + 实时预览 + 0代码 @@ -19,16 +19,13 @@ 核心功能 - 免开发一键接入 + 智能插入推荐 - 最大化广告收益 + 实时预览编辑 - 基于大模型智能选择最优位置 - - - 多维度数据报表,全面掌握投放情况 + 免开发上线 @@ -39,35 +36,21 @@ 1 - 打开 MP 管理页面,点击「推广与搜索」,点击流量主 + 登录【微信公众平台 -> 流量主 -> 广告管理 -> 广告位管理】 2 - 选择智能广告 + 选择【智能接入】模式 3 - 开始变现 + 【创建智能广告】 - - - 98% - 匹配准确率 - - - 2.5x - 转化提升 - - - 50ms - 响应速度 - - diff --git a/miniprogram/page/ad/smart-ad/example2/example2.wxml b/miniprogram/page/ad/smart-ad/example2/example2.wxml index 02cc0d69..788507ff 100644 --- a/miniprogram/page/ad/smart-ad/example2/example2.wxml +++ b/miniprogram/page/ad/smart-ad/example2/example2.wxml @@ -1,37 +1,37 @@ - 广告投放流程 + 智能广告接入流程 1 - 创建广告计划 - 设置广告目标、预算和投放时间 + 入口指引 + 微信公众平台→流量主→广告管理→广告位管理→选择“智能接入”模式→点击“创建智能广告”。 已完成 2 - 选择投放人群 - 根据用户画像精准定向目标受众 + 扫码预览 + 微信扫码预览,确认广告插入的位置、时机与样式。 已完成 3 - 上传广告素材 - 支持图片、视频等多种素材格式 + 调整与标记 + 若需调整,可点击“编辑类型与位置”;标记“使用/不使用”后,仍需返回后台最终确认是否上线。 进行中 4 - 提交审核上线 - 审核通过后自动开始投放 + 确认上线 + 手机预览完成后,在管理后台点击“下一步”确认广告位并上线。 待处理