Seite 1 von 3

Adsense für Mobile komplett ausblenden

Verfasst: 22.01.2019, 13:40
von Micha_Es
Hallo,

eine Frage, welche mich schon länger beschäftigt.

Wie schaffte ich es die Google AdSense Werbung für mobile Geräte komplett zu deaktivieren und nicht über den @media Tag?

Der Hintergrund: mit dem @media tag wird trotzdem die Verbindung aufgebaut, was ja nicht sein muss, wenn es nicht angezeigt wird.

Verfasst:
von

Verfasst: 22.01.2019, 15:17
von Hanzo2012
Checke mit JavaScript, ob es sich um ein Nicht-Mobilgerät handelt (z. B. screen.width > xxx), und nur dann fügst du das AdSense-Script mittels document.createElement("script") usw. ein.

Verfasst: 22.01.2019, 15:32
von Micha_Es
Hey Hanzo,

danke für die Antwort.

Hast du mir ein Beispiel?

Verfasst: 22.01.2019, 16:25
von Hanzo2012
Kannst du kein JavaScript?

Verfasst: 22.01.2019, 16:56
von Micha_Es
Ich kann viel, aber nicht alles :-)
Nein, ich kann kein JS

Verfasst:
von

Verfasst: 22.01.2019, 17:38
von Hanzo2012
Ich bin zwar der Meinung, dass jeder, der mit Web sein Geld verdient, auch JavaScript können sollte, aber bitteschön ...

Original-Code:

Code: Alles auswählen

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
	 style="display&#58;inline-block;width&#58;300px;height&#58;250px"
	 data-ad-client="ca-pub-xxx"
	 data-ad-slot="yyy"></ins>
<script>
&#40;adsbygoogle = window.adsbygoogle || &#91;&#93;&#41;.push&#40;&#123;&#125;&#41;;
</script>
Ersetzen durch (nicht getestet):

Code: Alles auswählen

<script type="text/javascript">
&#40;function&#40;&#41; &#123;
	if &#40;screen.width > 480&#41; &#123;
		var id = "adsense-script";
		if &#40;document.getElementById&#40;id&#41; === null&#41; &#123;
			var e = document.createElement&#40;"script"&#41;;
			e.id = id;
			e.async = false;
			e.defer = true;
			document.getElementsByTagName&#40;"head"&#41;&#91;0&#93;.appendChild&#40;e&#41;;
		&#125;
		var e = document.createElement&#40;"ins"&#41;;
		e.className = "adsbygoogle";
		e.setAttribute&#40;"style", "display&#58;inline-block;width&#58;300px;height&#58;250px"&#41;;
		e.setAttribute&#40;"data-ad-client", "ca-pub-xxx"&#41;;
		e.setAttribute&#40;"data-ad-slot", "yyy"&#41;;
		document.getElementsByTagName&#40;"body"&#41;&#91;0&#93;.appendChild&#40;e&#41;;
		&#40;adsbygoogle = window.adsbygoogle || &#91;&#93;&#41;.push&#40;&#123;&#125;&#41;;
	&#125;
&#125;&#41;&#40;&#41;;
</script>
Die passenden IDs ("xxx", "yyy") musst du natürlich noch einsetzen. Falls du Analytics einbindest, musst du das entsprechende Attribut noch setzen, aber das solltest du hinkriegen, da es exakt gleich funktioniert.
Nun werden Anzeigen nur bei einer Bildschirmbreite von mehr als 480 Pixel eingebunden, und zwar sowohl das AdSense-Skript als auch der Block an sich. Nebeneffekt meines Codes: Das AdSense-Skript wird höchstens einmal eingebunden, auch wenn du mehrere Anzeigen auf derselben Seite hast.
Die 480 Pixel scheinen die magische Grenze des Großteils der Smartphones zu sein.

Verfasst: 22.01.2019, 19:18
von staticweb
Es wäre doch sinnvoll das bereits serverseitig abzuklären.

Über die viewport Breite wirst du nicht zwischen mobile <--> desktop unterscheiden können.

Verfasst: 22.01.2019, 20:22
von Hanzo2012
staticweb hat geschrieben:Es wäre doch sinnvoll das bereits serverseitig abzuklären.

Über die viewport Breite wirst du nicht zwischen mobile <--> desktop unterscheiden können.
Hat beides seine Vor- und Nachteile.
Kommt halt drauf an, wie er bisher seine Seite an die verschiedenen Geräte anpasst. Wenn er bislang über CSS Media Queries arbeitet, dann ist clientseitig „the way to go“.

Verfasst: 23.01.2019, 10:14
von Micha_Es
Ich danke euch.

Das Verstehen kommt bei mir durch Beispiele nur so kann ich nachvollziehen, was damit gemeint war und nur so kann man auch was lernen.

Google selbst hat einmal folgendes geschrieben:
https://adsense-de.googleblog.com/2012/ ... sites.html
Bitte beachtet, dass es, gemäß der AdSense Programmrichtlinien, nicht erlaubt ist, Veränderungen am AdSense-Code vorzunehmen. Dies ist die einzige empfohlene Veränderung des Codes für Responsive Design Websites. Jegliche Änderung, die nicht dem obigen JavaScript-Code entspricht, wird als Verstoß gegen unsere Programmrichtlinien gewertet.

Von daher stellt sich mir jedes mal die Frage, was ist erlaubt und was nicht!?

@Staticweb:
wie würdest du so etwas Serverseitig abfangen?

Verfasst: 23.01.2019, 10:57
von Hanzo2012
Woanders wurde mal geschrieben (von Google), dass man sehr wohl Änderungen machen darf, solange sie nicht das Verhalten oder das Aussehen der Werbeanzeigen verändern. Das hier geht völlig in Ordnung. Ich nutze seit vielen Jahren einen stark modifizierten Code. Es gab nie Probleme damit, die Service-Mitarbeiter von AdSense haben das auch gesehen.
Serverseitig musst du den User Agent String analysieren. Da nimmst du am besten eine Library, die das für dich macht und regelmäßig aktualisiert wird (es kommen ja ständig neue Smartphones raus und neue Browser-Apps). Kann aber sein, dass ein Gerät dann serverseitig als Mobilgerät erkannt wird und clientseitig (CSS Media Query) nicht, oder umgekehrt.

Verfasst: 23.01.2019, 11:32
von Micha_Es
Mir geht es ja auch nicht um 100 Prozent Abdeckung, sondern vielmehr die gängigsten Varianten abzufangen, damit die Werbung nicht geladen wird und unnötigen Traffic verursacht. Von daher ist die Clientseitige Lösung keine schlechte Variante.

Wenn einer sein Fenster auf dem Desktop unter die 400er verkleinert und die Werbung nicht angezeigt bekommt, ist mir das "wurscht" :-)

Verfasst: 23.01.2019, 13:06
von top
Micha_Es hat geschrieben:...

Wenn einer sein Fenster auf dem Desktop unter die 400er verkleinert und die Werbung nicht angezeigt bekommt, ist mir das "wurscht" :-)
Bei einer Grenze von 400 hast du aber dann wieder Werbung auf dem Streichelbrettchen, wenn jemand im Querformat surft.

Verfasst: 25.01.2019, 12:31
von supervisior
Hanzo2012 hat geschrieben:Ich bin zwar der Meinung, dass jeder, der mit Web sein Geld verdient, auch JavaScript können sollte, aber bitteschön ...

Original-Code:

Code: Alles auswählen

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle"
	 style="display&#58;inline-block;width&#58;300px;height&#58;250px"
	 data-ad-client="ca-pub-xxx"
	 data-ad-slot="yyy"></ins>
<script>
&#40;adsbygoogle = window.adsbygoogle || &#91;&#93;&#41;.push&#40;&#123;&#125;&#41;;
</script>
Ersetzen durch (nicht getestet):

Code: Alles auswählen

<script type="text/javascript">
&#40;function&#40;&#41; &#123;
	if &#40;screen.width > 480&#41; &#123;
		var id = "adsense-script";
		if &#40;document.getElementById&#40;id&#41; === null&#41; &#123;
			var e = document.createElement&#40;"script"&#41;;
			e.id = id;
			e.async = false;
			e.defer = true;
			document.getElementsByTagName&#40;"head"&#41;&#91;0&#93;.appendChild&#40;e&#41;;
		&#125;
		var e = document.createElement&#40;"ins"&#41;;
		e.className = "adsbygoogle";
		e.setAttribute&#40;"style", "display&#58;inline-block;width&#58;300px;height&#58;250px"&#41;;
		e.setAttribute&#40;"data-ad-client", "ca-pub-xxx"&#41;;
		e.setAttribute&#40;"data-ad-slot", "yyy"&#41;;
		document.getElementsByTagName&#40;"body"&#41;&#91;0&#93;.appendChild&#40;e&#41;;
		&#40;adsbygoogle = window.adsbygoogle || &#91;&#93;&#41;.push&#40;&#123;&#125;&#41;;
	&#125;
&#125;&#41;&#40;&#41;;
</script>
Die passenden IDs ("xxx", "yyy") musst du natürlich noch einsetzen. Falls du Analytics einbindest, musst du das entsprechende Attribut noch setzen, aber das solltest du hinkriegen, da es exakt gleich funktioniert.
Nun werden Anzeigen nur bei einer Bildschirmbreite von mehr als 480 Pixel eingebunden, und zwar sowohl das AdSense-Skript als auch der Block an sich. Nebeneffekt meines Codes: Das AdSense-Skript wird höchstens einmal eingebunden, auch wenn du mehrere Anzeigen auf derselben Seite hast.
Die 480 Pixel scheinen die magische Grenze des Großteils der Smartphones zu sein.
Ist zwar auch eine Lösung, aber das geht viel einfacher und effektiver mit PHP. Dafür muss man noch nicht mal was großartig programmieren, sondern nur eine Klasse einbinden. Ich verwende seit Jahren https://mobiledetect.net/. Ist kostenlos, lässt sich in so gut wie jede Anwendung spielend einfach einbauen und wird fortlaufend aktualisiert. Darüberhinaus kann man dann nicht nur zwischen Desktop PCs, Smartphones und Tablets unterscheiden, sondern wenn nötig sogar runter bis auf ein bestimmtes Modell.

Das lässt sich dann für alles verwenden und nicht nur für Adsense und das reduziert den ansonsten anfallenden Overhead an PHP, HTML, Javascript, CSS und auch alles andere um ein Vielfaches.

Verfasst: 25.01.2019, 12:52
von Hanzo2012
Kenne die Library. Einfacher als JavaScript ist das aber nicht. „Meine“ Lösung erfordert einfach nur Copy&Paste. Vielleicht benutzt seine Seite ja gar kein PHP oder sie benutzt irgendein Framework/CMS, wo es nicht so einfach ist eigenen Code einzubauen.

Verfasst: 25.01.2019, 13:25
von supervisior
Wo ist das Problem? Wenn es sich darauf beschränkt für mobile Geräte Adsense zu deaktivieren, genügt eine einfache if isMobile Abfrage. That's it. Null Overhead und einfacher gehts nun wirklich nicht.

Es gibt für diese Library Unmengen an Erweiterungen für gänge CMS, sodass man noch nicht mal den Code anfassen muss.