specyfikacja

mobilnych form reklamowych HTML5

Specyfikacja RichMedia

Ogólne wymagania link

Założenia projektowe reklam w technologii HTML5, zarówno pełnoekranowych, jak i bannerowych, nie powinny różnić się od wytycznych projektowych mobilnych stron www czy aplikacji.

  • Responsive Web Design

    Nie istnieje jeden rozmiar, według którego należy zaprojektować reklamę - mnogość urządzeń mobilnych oraz obecność dwóch trybów wyświetlania (portrait i landscape) uniemożliwia "sztywne" zaprojektowanie reklamy. Dlatego sugerujemy użycie wytycznych projektowych Responsive Web Design w celu zoptymalizowania wyświetlania dla każdego z urządzeń mobilnych oraz zapewnienia prawidłowego odbioru reklamy.

    Rodzaj, ilość oraz ułożenie poszczególnych elementów wchodzących w skład reklamy powinno być zależne przede wszystkim od ekranu urządzenia użytkownika, zapewniając prawidłowy odbiór elementów reklamy (zbyt mały tekst jest niewidoczny na ekranie telefonu, tapnięcie na mały przycisk będzie utrudnione dla osób z większymi dłońmi).

  • Szkielet strony HTML5

    <!DOCTYPE html>
    								<html lang="pl">
    								<head>
    								<meta charset="utf-8">
    								<meta name="viewport" content="width=device-width, initial-scale=1">
    								<title>Szablon reklamy HTML5</title>
    								</head>
    								<body>
    								<!-- Treść -->
    								</body>
    								</html>
  • Meta-tag viewport

    Znacznik pozwala określić domyślne skalowanie strony na urządzeniach mobilnych oraz jak użytkownik może je zmienić. Poniższy kod określa, że plik HTML domyślnie będzie zawsze rozciągnięty do 100% szerokości urządzenia.

    <meta name="viewport" content="width=device-width, initial-scale=1">

    Dodatkową, rekomendowaną opcją jest user-scalable=no. Sprawia ona, że użytkownik traci możliwość powiększenia strony za pomocą domyślnych metod przeglądarki (np. powiększenie gestem Pinch), przez co strona (reklama) zachowuje się bardziej jak aplikacja mobilna.

    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
  • Kodowanie polskich znaków

    Poniższy kod definiuje kodowanie znaków na uniwersalny format UTF-8, co gwarantuje poprawne wyświetlanie się polskich znaków.

    <meta charset="utf-8">

Podstawowa interakcja link

Reklamy HTML5 emitowane za pośrednictwem SpicyMobile do prawidłowego działania elementów interaktywnych wymagają załączenia biblioteki Javascript oaoa.js oraz utworzenia i odpowiedniego skonfigurowania obiektu reklamy:

<script src="https://cdn.happypixel.pl/oaoa.min.js" type="text/javascript"></script>
<script>
	var nazwaReklamy = new oaoaAd( CONFIG );
</script>

gdzie CONFIG to obiekt Javascript z opcjami konfiguracyjnymi, zdefiniowanymi zgodnie z poniższą dokumentacją

  • Obsługa kliknięć

    1. HTML:

      Reklamy obsługujące kliknięcia za pośrednictwem tagu <a/>

      CONFIG.clickTag: oaoaSelector( QUERYSELECTOR )

      QUERYSELECTOR to selektor css dla elementów, którym ma zostać nadany odpowiedni atrybut href, przykładowo:

      var nazwaReklamy = new oaoaAd({
      	clickTag: oaoaSelector("a.clickTag")
      });

      Uwaga: dla elementów zostanie nadany atrybut target="_blank"

    2. Javascript:

      Reklamy obsługujące kliknięcia poprzez javascript, np. window.open

      nazwaReklamy.clickTag

      Adres url do odtwarcia jest dostępny w zmiennej .clickTag dla obiektu zdefiniowanego w nazwaReklamy, przykładowo:

      var nazwaReklamy = new oaoaAd();
      var onClick = function(){
      	window.open(nazwaReklamy.clickTag,"_blank");
      };
  • Obsługa zamykania

    1. HTML:

      Reklamy obsługujące zamykanie poprzez tapnięcie na wybrany element HTML.

      CONFIG.adClose: oaoaSelector( QUERYSELECTOR )

      QUERYSELECTOR to selektor css dla elementów, które po tapnięciu mają wywołać metodę zamykającą reklamę, przykładowo:

      var nazwaReklamy = new oaoaAd({
      	adClose: oaoaSelector(".adClose")
      });
    2. Javascript:

      Reklamy obsługujące zamknięcie bezpośrednio przez wywołanie funkcji Javascript.
      W ramach definiowanego obiektu oaoaAd ( obiektu zdefiniowanego w nazwaReklamy) dostępne są następujące metody wewnętrzne:

      • .adClose()

        zamyka reklamę; analogicznie do działania po tapnięciu dla elementów zdefiniowanych w obsłudze zamykania, przykładowo:

        var nazwaReklamy = new oaoaAd();
        var onClose = function(){
        	nazwaReklamy.adClose();
        };
        
      • .removeAutoClose()

        dezaktywuje wewnętrzne odliczanie, po którym nastąpiłoby autozamknięcie reklamy bez interakcji ze strony użytkownika

Zaawansowana interakcja link

  • DeviceMotion

    Niektóre przeglądarki blokują dostęp do zdarzenia DeviceMotion dla reklam, tj. stron wyświetlanych w iframe. By ominąć tę niedogodność przygotowaliśmy dedykowane rozwiązanie, zastępujące bezpośredni dostęp do eventu.

    wzorcowy kod:

    var nazwaReklamy = new oaoaAd({
    	onInit: function(){
    		this.deviceMotion = new oaoaDeviceMotion({
    			// funkcja wywoływana każdorazowo po wywołaniu eventu DeviceMotion
    			onChange: function(eventData){
    				// dowolny kod
    			},
    			// funkcja wywoływana dla customowego zdarzenia Shake
    			shake_threshold : 10, // siła konieczna do uruchomienia funkcji onShake
    			shake_timeout : 1000; // czas, co jaki zostanie wywołana funkcja onShake, jeżeli warunek z shake_threshold jest spełniony
    			onShake: function(eventData){
    				// dowolny kod
    			}
    		});
    	}
    });

    gdzie eventData zawiera dane dla zdarzenia:

    eventData = {
    	x : Math.round(event.accelerationIncludingGravity.x),
    	y : Math.round(event.accelerationIncludingGravity.y),
    	z : Math.round(event.accelerationIncludingGravity.z),
    	t: (new Date()).getTime()
    }

    Uwaga: w ramach jednej reklamy powinien istnieć tylko jeden obiekt oaoaAd

  • DeviceOrientation

    Niektóre przeglądarki blokują dostęp do zdarzenia DeviceOrientation dla reklam, tj. stron wyświetlanych w iframe. By ominąć tę niedogodność przygotowaliśmy dedykowane rozwiązanie, zastępujące bezpośredni dostęp do eventu.

    wzorcowy kod:

    var nazwaReklamy = new oaoaAd({
    	onInit: function(){
    		this.deviceOrientation = new oaoaDeviceOrientation({
    			// funkcja wywoływana każdorazowo po wywołaniu eventu DeviceOrientation
    			onChange: function(eventData){
    				// dowolny kod
    			}
    		});
    	}
    });

    gdzie eventData zawiera dane dla zdarzenia:

    eventData = {
    	alpha : num, // event.alpha
    	beta : num, // event.beta
    	gamma : num, // event.gamma
    	x : num, // liczba stopni położenia telefonu w poziomie
    	y : this.y-60 // liczba stopni położenia telefonu w pionie
    }

    Uwaga: w ramach jednej reklamy powinien istnieć tylko jeden obiekt oaoaAd

Dodatkowe informacje link

  • Interface dotykowy

    Brak obecności kursora myszy i specyfiki jego zachowania wymusza odmienny sposób projektowania interakcji z reklamą. Użytkownik nie jest w stanie sprawdzić, czy dany element jest klikalny (kursor "łapki"), zatem elementy, które po tapnięciu przekierują na inną stronę powinny być wyraźnie oznaczone tak, by dana akcja i jej konsekwencje były klarowne.

    Dodatkowo reklama powinna rozróżniać poszczególne gesty oraz intencje użytkownika. Gest Swipe wykonany na linku nie powinien być równoznaczny z kliknięciem/tapnięciem i nie powinien otwierać URL-a z linku.

    Jeżeli reklama wymaga od użytkownika wykonania bardziej skomplikowanego gestu (np. Pinch), to powinno być to w bardzo klarowny sposób zakomunikowane w ramach samej treści reklamy. Użytkownik nie może domyślać się, co ma zrobić.