| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import { ref } from 'vue'
- import { useUserStore } from '@/stores/user'
-
- // 广告平台配置
- const AD_PLATFORMS = {
- WECHAT: {
- reward: adUnitId => wx.createRewardedVideoAd({ adUnitId }),
- feed: adUnitId => wx.createBannerAd({ adUnitId })
- },
- DOUYIN: {
- reward: adUnitId => tt.createRewardedVideoAd({ adUnitId }),
- feed: adUnitId => tt.createBannerAd({ adUnitId })
- },
- H5: {
- reward: adUnitId => {
- console.log('H5激励广告:', adUnitId)
- return { show: () => Promise.resolve() }
- },
- feed: adUnitId => {
- return { show: () => console.log('H5信息流广告展示') }
- }
- }
- }
-
- // 广告触发控制器
- export function useAdManager() {
- const userStore = useUserStore()
- const chapterCount = ref(0)
-
- // 获取当前平台适配器
- const getPlatformAdapter = () => {
- // #ifdef MP-WEIXIN
- return AD_PLATFORMS.WECHAT
- // #endif
- // #ifdef MP-DOUYIN
- return AD_PLATFORMS.DOUYIN
- // #endif
- return AD_PLATFORMS.H5
- }
-
- // 展示激励广告(每5章触发)
- const showRewardAd = async (chapterId) => {
- if (userStore.isVIP) return
-
- chapterCount.value++
- if (chapterCount.value % 5 !== 0) return
-
- const adapter = getPlatformAdapter()
- const ad = adapter.reward('your_ad_unit_id')
-
- try {
- await ad.show()
- logAdView(chapterId, 'reward')
- } catch (err) {
- console.error('广告展示失败:', err)
- }
- }
-
- // 展示底部信息流广告
- const showFeedAd = () => {
- if (userStore.isVIP) return null
-
- const adapter = getPlatformAdapter()
- return adapter.feed('your_feed_ad_id')
- }
-
- // 广告日志记录(对接Java接口)
- const logAdView = (chapterId, adType) => {
- uni.request({
- url: 'https://api.aiyadianzi.ltd/ad/log',
- method: 'POST',
- data: {
- userId: userStore.userId,
- chapterId,
- adType,
- platform: process.env.VUE_APP_PLATFORM
- }
- })
- }
-
- return { showRewardAd, showFeedAd }
- }
|