1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/MMAChinaSDK-MMAViewabilitySDK_iOS

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
(iOS)README.md 8.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 08:15 3a1386c
  1. Нажмите «Отслеживать»

Отслеживание кликов осуществляется путём вызова следующего кода, где параметр — это адрес отслеживания от третьей стороны:

[[MobileTracking sharedInstance] click:@"http://example.com/xxxxxx"];
  1. При входе в фоновый режим

Используется для сохранения текущих данных отслеживания, чтобы они не были потеряны. Рекомендуется размещать в методе applicationDidEnterBackground класса AppDelegate.

[[MobileTracking sharedInstance] didEnterBackground];
  1. При выходе на передний план

Повторно считывает данные из кэша. Используется для обеспечения своевременной отправки текущих данных отслеживания. Рекомендуется размещать в методе applicationWillEnterForeground класса AppDelegate.

[[MobileTracking sharedInstance] didEnterForeground];
  1. При завершении работы приложения

Сохраняет текущие данные отслеживания, чтобы предотвратить их потерю.

[[MobileTracking sharedInstance] willTerminate];
  1. Включение журнала отладки

Рекомендуется включать во время тестирования.

[[MobileTracking sharedInstance] enableLog:YES];

Шаг 3: Проверка и отладка

Тестирование SDK включает два аспекта:

  1. Проверка полноты параметров и правильности составления URL.
  2. Соответствие количества запросов и возможностей отслеживания третьей стороной.

Для завершения тестирования необходимо связаться с третьей стороной, отвечающей за отслеживание.

Приложение:

Подключение к странице материалов веб-просмотра (вариант 2)

Использование: применяется метод без внедрения, требуется предварительно внедрить фрагмент кода JS SDK. SDK по умолчанию активно отслеживает состояние элементов BTR на странице рекламы, если вы хотите точно отслеживать определённый рекламный материал, просто добавьте класс umid-element к соответствующему тегу элемента.

Пример кода:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <!-- js sdk 代码放入 head 元素内 -->
    <script>
    !function(){"use strict";var e=function(e){return JSON.stringify(e)},t=function(e){var t=e.getBoundingClientRect();return 0==t.width||0==t.height};var n,i,s=function(){return(s=Object.assign||function(e){for(var t,n=1,i=arguments.length;n<i;n++)for(var s in t=arguments[n])Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s]);return e}).apply(this,arguments)},o=[],r=new window.Map,a=function(e){var t;navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)?window.webkit.messageHandlers.__mz_Monitor.postMessage(e):((t=navigator.userAgent).indexOf("Android")>-1||t.indexOf("Adr")>-1)&&window.__mz_Monitor.mz_push(e)};!function(e){e.JavaScript="javaScript",e.Image="image",e.Video="video",e.AUDIO="audio",e.HTML="html"}(n||(n={})),!function(e){e.Impression="impression",e.ImpressionError="impressionError",e.WindowUnload="unload",e.Click="click",e.DisplayChange="displayChange",e.Start="start",e.FirstQuartile="firstQuartile",e.Midpoint="midpoint",e.ThirdQuartile="thirdQuartile",e.Complete="complete",e.Pause="pause",e.Resume="resume",e.BufferStart="bufferStart",e.BufferFinish="bufferFinish"}(i||(i={}));var d=function(){function e(e){this.advertisementType=n.Image,this.el=e,this.onError=this.onError.bind(this),this.onLoad=this.onLoad.bind(this),this.bindEvent(),this.checkVisible()}return e.prototype.checkVisible=function(){this.el.complete&&(t(this.el)?this.onError():this.imageComplete())},e.prototype.imageComplete=function(){var e=new Image;e.src=this.el.src,e.onload=this.onLoad,e.onerror=this.onError},e.prototype.bindEvent=function(){this.el.addEventListener("error",this.onError),this.el.addEventListener("load",this.onLoad)},e.prototype.send=function(e){d(s(s({},e),{advertisementType:this.advertisementType}))},e.prototype.onImpression=function(){this.send({eventType:i.Impression,ImpressionType:"beginToRender",isRender:"1"})},e.prototype.onError=function(){this.send({eventType:i.ImpressionError,ImpressionType:"beginToRender",isRender:"0"})},e.prototype.onLoad=function(){this.onImpression()},e.prototype.onClick=function(){},e.prototype.destroyed=function(){this.el.removeEventListener("error",this.onError),this.el.removeEventListener("load",this.onLoad),this.el=null},e}(),h=function(){function e(e){this.advertisementType=n.AUDIO,this.quartileEvents={"1q":!1,"2q":!1,"3q":!1,"4q":!1},this.isFirst=!1,this.isFullscreen=!1,this.el=e,this.isFirst=!0,this.onPlay=this.onPlay.bind(this),this.onPause=this.onPause.bind(this),this.onWaiting=this.onWaiting.bind(this),this.onTimeupdate=this.onTimeupdate.bind(this),this.onWebkitendfullscreen=this.onWebkitendfullscreen.bind(this),this.onWebkitbeginfullscreen=this.onWebkitbeginfullscreen.bind(this),this.bindEvent(),this.checkElement()}
``` Вот перевод текста на русский язык:

e.prototype.checkElement = function() { t(this.el)? this.beforeImpression(!1): this.beforeImpression(!0) }, e.prototype.bindEvent = function() { this.el.addEventListener("play", this.onPlay), this.el.addEventListener("pause", this.onPause), this.el.addEventListener("waiting", this.onWaiting), this.el.addEventListener("timeupdate", this.onTimeupdate), this.el.addEventListener("webkitendfullscreen", this.onWebkitendfullscreen), this.el.addEventListener("webkitbeginfullscreen", this.onWebkitbeginfullscreen) }, e.prototype.onPlay = function() { this.isFirst? this.isFirst=!1: this.send({EventType: i.Resume}) }, e.prototype.onPause = function() { this.send({eventType: i.Pause}) }, e.prototype.onWaiting = function() {}, e.prototype.onTimeupdate = function() {}, e.prototype.onVolumechange = function() {}, e.prototype.onWebkitendfullscreen = function() { this.isFullscreen=!1 }, e.prototype.onWebkitbeginfullscreen = function() { this.isFullscreen=!0 }, e.prototype.send = function(e) { d(s(s({}, e), {advertisementType: this.advertisementType, quartileEvents: this.quartileEvents})) }, e.prototype.beforeImpression = function(e) { this.send({EventType: i.Impression, ImpressionType:"beginToRender", isRender: e?"1":"0"}) }, e.prototype.destroyed = function() { this.el.removeEventListener("play", this.onPlay), this.el.removeEventListener("pause", this.onPause), this.el.removeEventListener("waiting", this.onWaiting), this.el.removeEventListener("timeupdate", this.onTimeupdate), this.el.removeEventListener("webkitendfullscreen", this.onWebkitendfullscreen), this.el.removeEventListener("webkitbeginfullscreen", this.onWebkitbeginfullscreen), this.el=null }, e}(), l=function() { function e() { this.advertisementType=n.HTML, document.body.innerText.length>0? this.send({isRender:"1"}): this.send({isRender:"0"}) } return e.prototype.send=function(e){ d(s(s({},e),{advertisementType:this.advertisementType,ImpressionType:"beginToRender"})) }, e }(); var p, c, f=function(){ var e, t=document.body.querySelector(".umid-element"); if (t) return (e=t).tagName&&"video"===e.tagName.toLowerCase()? new u(t): function(e){return e.tagName&&"img"===e.tagName.toLowerCase()(t)? new h(t): new l; var n=document.body.querySelector("video"); if(n)return new u(n); var i=document.body.querySelectorAll("img"); if(i.length){ var s=function(e){for(var t=0,n=null,i=0;i<e.length;i++){var s=e[i],o=s.offsetWidth*s.offsetHeight;o>=t&&(t=o,n=s)}return n}(i); return new h(s) }return new l }; function m(){f()} if (document.body) m(); else { var v=(p=function(){m()},c=!1,function(){c||(c=!0,p.apply(this,arguments))}); window.addEventListener("load",v), document.addEventListener("DOMContentLoaded",v) }}, u=function(){}, h=function(){};


Обратите внимание, что в тексте запроса есть фрагменты кода, которые не удалось перевести из-за отсутствия контекста.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/MMAChinaSDK-MMAViewabilitySDK_iOS.git
git@api.gitlife.ru:oschina-mirror/MMAChinaSDK-MMAViewabilitySDK_iOS.git
oschina-mirror
MMAChinaSDK-MMAViewabilitySDK_iOS
MMAChinaSDK-MMAViewabilitySDK_iOS
master