移动网页广告引入mraid.js使用指南

在网上找mraid相关资料,相对比较少,大多都是API介绍,概念介绍等,没有一份详细的移动端网页广告使用教程,通过本身两天的摸索,完成了开发的移动端网页版的广告加入mraid功能。git

背景:github

我开发了移动端网页展现的广告,因为产品的要求,要实现广告中的视频在用户看到的时候才会继续播放,不看的时候不会播放,而默认设置的video 的autoplay自动播放会在用户打开的状况下,即便看不到也是种播着,影响了用户看到的广告效果,便可能会下降点击率和转化率。web

而mraid具备自然的优点,mraid能够识别用户是否在看着广告,能够识别用户的点击跳转,能够出现关闭按钮点击关闭,能够缩放广告等,推荐mriad中文版教程:chrome

https://github.com/graypants/mraid_cn/blob/master/mraid_cn.mdpromise

开始app

一、在网页中首先引入mraid.js【直接引入便可,不须要在本地放mraid.js,页面在支持mraid的app中会自动注入】dom

<script src="mraid.js"></script>

二、在PC端开发完成以后,不方便测试mraid效果,推荐这个网站:http://webtester.mraid.org/异步

 

能够在线设置广告位的宽高,粘贴代码,render以后查看效果。ide

三、mraid实现视频用户浏览时播放,而且点击下载mraid跳转完整代码:测试

let v = document.getElementsByTagName("video")[0];//获取video元素
let ad_pic = document.getElementsByClassName("ad_pic")[0];//视频暂停时的图片
// 视频播放
function videoPlay() {
    let videoIsPlay = v.play();
    if (videoIsPlay !== undefined) {
        videoIsPlay.then(() => {//经过异步的方式避免报错
            ad_pic.style.display = "none";
        }).catch((err) => {
            console.log(err);
            ad_pic.style.display = "none";//默认暂停时的图片隐藏
            //视频元素能够选择静音后再播放,提示用户打开声音
            v.muted = true;
            v.play();
        });
    }
}
//图片点击播放
function cardClick(event) {
    "use strict";
    ad_pic.addEventListener(event, function () {
        videoPlay();
        v.className = '';
    }, true);
}
function adPic() {
    cardClick('tap');
    cardClick('click');
}
// mraid判断
function mraidPlay() {
    "use strict";
    if (mraid.getState() === 'loading') {
        mraid.addEventListener('ready', onSdkReady);
    } else {
        onSdkReady();
    }
    function onSdkReady() {
        if (mraid.isViewable()) {
            videoPlay();
        } else {
            mraid.addEventListener('viewableChange', function (viewable) {
                if (viewable) {
                    mraid.removeEventListener('viewableChange');
                    videoPlay();
                }
            });
        }
    }
}

在使用video.play()方法的时候,有时候会出现报错:

Uncaught (in promise) DOMException

有一篇文章写的比较好:推荐一下

四、mraid代码实现的流程:

先判断mraid状态是否为loading,若是为loading要给mraid注册ready事件,在ready事件中进行相应mraid代码执行,好比判断用户是否在浏览广告,若是不是loading状态,则说明是ready状态,直接执行mraid操做的代码。

mraid.js,全部事件发生都要在ready以后,mraid.open也须要ready以后,只要引入了mraid.js,就能够识别mraid对应的方法存在,可是事件的执行要在ready事件以后。

相关文章
相关标签/搜索