1<!doctype html> 2<html lang="de" itemscope itemtype="http://schema.org/WebPage"> 3<head> 4 <meta charset="UTF-8" /> 5 <title>ÃWA â Ãsterreichische Webanalyse</title> 6 7 <link rel="apple-touch-icon" sizes="180x180" href="https://oewa.at/wp-content/themes/oewa/img/branding/apple-touch-icon.png"> 8 <link rel="icon" type="image/png" sizes="32x32" href="https://oewa.at/wp-content/themes/oewa/img/branding/favicon-32x32.png"> 9 <link rel="icon" type="image/png" sizes="16x16" href="https://oewa.at/wp-content/themes/oewa/img/branding/favicon-16x16.png"> 10 <link rel="manifest" href="https://oewa.at/wp-content/themes/oewa/img/branding/site.webmanifest" crossorigin="use-credentials"> 11 <link rel="mask-icon" href="https://oewa.at/wp-content/themes/oewa/img/branding/safari-pinned-tab.svg" color="#333da1"> 12 <link rel="shortcut icon" href="https://oewa.at/wp-content/themes/oewa/img/branding/favicon.ico"> 13 <meta name="msapplication-TileColor" content="#00aba9"> 14 <meta name="msapplication-config" content="https://oewa.at/wp-content/themes/oewa/img/branding/browserconfig.xml"> 15 <meta name="theme-color" content="#ffffff"> 16 <meta name="viewport" content="width=device-width, initial-scale=1"> 17 <meta property="og:type" content="website" /> 18 <meta property="og:url" content="https://oewa.at/tech-support/messung-hybrider-apps/" /> <link rel="canonical" href="https://oewa.at/tech-support/messung-hybrider-apps/" /> 19 <meta itemprop="name" content="ÃWA â Ãsterreichische Webanalyse"> 20 <meta property="og:title" content="ÃWA â Ãsterreichische Webanalyse" /> 21 <meta property="og:site_name" content="ÃWA â Ãsterreichische Webanalyse" /> 22 23 <meta itemprop="description" content="Die österreichische Webanalyse ist seit über zwei Jahrzehnten DIE Währung am österreichischen Onlinemarkt. Die ÃWA ist neutral und ermittelt objektiv." /> 24 <meta property="og:description" content="Die österreichische Webanalyse ist seit über zwei Jahrzehnten DIE Währung am österreichischen Onlinemarkt. Die ÃWA ist neutral und ermittelt objektiv." /> 25 <meta name="description" content="Die österreichische Webanalyse ist seit über zwei Jahrzehnten DIE Währung am österreichischen Onlinemarkt. Die ÃWA ist neutral und ermittelt objektiv." /> 26 27 <meta itemprop="image" content="https://oewa.at/wp-content/themes/oewa/img/branding/social-media-preview.jpg" /> 28 <meta property="og:image" content="https://oewa.at/wp-content/themes/oewa/img/branding/social-media-preview.jpg" /> 29 <meta name='robots' content='max-image-preview:large' /> 30<style id="wp-img-auto-sizes-contain-inline-css"> 31img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 32/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 33</style> 34<style id="classic-theme-styles-inline-css"> 35/*! This file is auto-generated */ 36.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} 37/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 38</style> 39 40<style id="global-styles-inline-css"> 41:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
410) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
41.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} 42/*# sourceURL=global-styles-inline-css */ 43</style> 44 45<link rel='stylesheet' id='main-css' href='https://oewa.at/wp-content/themes/oewa/css/main.css?ver=7.1.2' media='all' /> 46<link rel='stylesheet' id='default-css' href='https://oewa.at/wp-content/themes/oewa/css/default.min.css?ver=7.1.2' media='all' /> 47<link rel='stylesheet' id='slick-css' href='https://oewa.at/wp-content/themes/oewa/css/slick.min.css?ver=7.1.2' media='all' /> 48<link rel="canonical" href="https://oewa.at/tech-support/messung-hybrider-apps/" /> 49<meta name="generator" content="komplizinnen">
49<script type="module" src="https://oewa.at/wp-content/plugins/komplizinnen-mitglieder/build/assets/global-Bl7u5wiz.js"></script>
49<link rel="stylesheet" href="https://oewa.at/wp-content/plugins/komplizinnen-mitglieder/build/assets/global-5qr5oMDr.css"><style id="wp-custom-css"> 50.wp-block-button__link { 51 background-color: unset!important; 52 padding: 0; 53 border-radius: 0; 54 color: inherit!important; 55} 56</style> 57 58<style id="wp-block-button-inline-css"> 59.wp-block-button__link{align-content:center;box-sizing:border-box;cursor:pointer;display:inline-block;height:100%;text-align:center;word-break:break-word}.wp-block-button__link.aligncenter{text-align:center}.wp-block-button__link.alignright{text-align:right}:where(.wp-block-button__link){border-radius:9999px;box-shadow:none;padding:calc(.667em + 2px) calc(1.333em + 2px);text-decoration:none}.wp-block-button[style*=text-decoration] .wp-block-button__link{text-decoration:inherit}.wp-block-buttons>.wp-block-button.has-custom-width{max-width:none}.wp-block-buttons>.wp-block-button.has-custom-width .wp-block-button__link{width:100%}.wp-block-buttons>.wp-block-button.has-custom-font-size .wp-block-button__link{font-size:inherit}.wp-block-buttons>.wp-block-button[class*=wp-block-button__width]{width:calc(var(--wp--block-button--width)*1% - var(--wp--style--block-gap, .5em)*(1 - var(--wp--block-button--width)/100))}.wp-block-buttons>.wp-block-button.wp-block-button__width-25{width:calc(25% - var(--wp--style--block-gap, .5em)*.75)}.wp-block-buttons>.wp-block-button.wp-block-button__width-50{width:calc(50% - var(--wp--style--block-gap, .5em)*.5)}.wp-block-buttons>.wp-block-button.wp-block-button__width-75{width:calc(75% - var(--wp--style--block-gap, .5em)*.25)}.wp-block-buttons>.wp-block-button.wp-block-button__width-100{flex-basis:100%;width:100%}.wp-block-buttons.is-vertical>.wp-block-button[class*=wp-block-button__width]{width:calc(var(--wp--block-button--width)*1%)}.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-25{width:25%}.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-50{width:50%}.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-75{width:75%}.wp-block-button.is-style-squared,.wp-block-button__link.wp-block-button.is-style-squared{border-radius:0}.wp-block-button.no-border-radius,.wp-block-button__link.no-border-radius{border-radius:0!important}:root :where(.wp-block-button .wp-block-button__link.is-style-outline),:root :where(.wp-block-button.is-style-outline>.wp-block-button__link){border:2px solid;padding:.667em 1.333em}:root :where(.wp-block-button .wp-block-button__link.is-style-outline:not(.has-text-color)),:root :where(.wp-block-button.is-style-outline>.wp-block-button__link:not(.has-text-color)){color:currentColor}:root :where(.wp-block-button .wp-block-button__link.is-style-outline:not(.has-background)),:root :where(.wp-block-button.is-style-outline>.wp-block-button__link:not(.has-background)){background-color:transparent;background-image:none} 60/*# sourceURL=https://oewa.at/wp-includes/blocks/button/style.min.css */ 61</style> 62<style id="wp-block-paragraph-inline-css"> 63.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}:root :where(p.has-background){padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg} 64/*# sourceURL=https://oewa.at/wp-includes/blocks/paragraph/style.min.css */ 65</style> 66<style id="wp-block-buttons-inline-css"> 67.wp-block-buttons{box-sizing:border-box}.wp-block-buttons.is-vertical{flex-direction:column}.wp-block-buttons.is-vertical>.wp-block-button:last-child{margin-bottom:0}.wp-block-buttons>.wp-block-button{display:inline-block;margin:0}.wp-block-buttons.is-content-justification-left{justify-content:flex-start}.wp-block-buttons.is-content-justification-left.is-vertical{align-items:flex-start}.wp-block-buttons.is-content-justification-center{justify-content:center}.wp-block-buttons.is-content-justification-center.is-vertical{align-items:center}.wp-block-buttons.is-content-justification-right{justify-content:flex-end}.wp-block-buttons.is-content-justification-right.is-vertical{align-items:flex-end}.wp-block-buttons.is-content-justification-space-between{justify-content:space-between}.wp-block-buttons.aligncenter{text-align:center}.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block-button.aligncenter{margin-left:auto;margin-right:auto;width:100%}.wp-block-buttons[style*=text-decoration] .wp-block-button,.wp-block-buttons[style*=text-decoration] .wp-block-button__link{text-decoration:inherit}.wp-block-buttons.has-custom-font-size .wp-block-button__link{font-size:inherit}.wp-block-buttons .wp-block-button__link{width:100%}.wp-block-button.aligncenter{text-align:center}
68/*# sourceURL=https://oewa.at/wp-includes/blocks/buttons/style.min.css */ 69</style> 70 71</head> 72<body class="wp-singular page-template-default page page-id-2692 page-child parent-pageid-463 wp-theme-oewa page-messung-hybrider-apps"> 73<a href="#main-content" class="skip-to-content">Zum Inhalt springen</a> 74<div class="wrapper"> 75<header> 76 <div id="top-menu"><div class="menu-top-menue-container"><ul class="menu" aria-label="Frequently Asked Questions und Kontaktlinks"><li id="menu-item-40" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-40"><a href="https://oewa.at/faq/" title="Frequently Asked Questions">FAQ</a></li> 77<li id="menu-item-39" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-39"><a href="https://oewa.at/kontakt/">Kontakt</a></li> 78<li class="menu-item-auth-login menu-item menu-item-type-custom menu-item-object-custom menu-item-auth-user menu-item-has-children" id="kom-user-menu"> 79 <a href="https://oewa.at/mitglied-login/"><span>Mitglied-Login</span></a> 80 <ul class="sub-menu" aria-label="Mitglied-Login Untermenü"> 81 <li> 82 <a href="https://oewa.at/mitglied-login/">Mitgliedbereich</a> 83 </li> 84 <li> 85 <a href="https://portal.infonline.de" target="_blank" rel="noopener noreferrer">INFOnline Suite</a> 86 </li> 87 <li> 88 <a href="https://dashboard.oewa.at/home" target="_blank" rel="noopener noreferrer">Dashboard</a> 89 </li> 90 </ul> 91 </li></ul></div></div> 92 <div id="menu-logo-container"> 93 <div id="logo"> 94 <a href="https://oewa.at" title="ÃWA â Ãsterreichische Webanalyse"> 95 <img src="https://oewa.at/wp-content/themes/oewa/img/svg/oewa-logo.svg" class="dark" width="180" height="60" alt="ÃWA â Ãsterreichische Webanalyse" /> 96 </a> 97 </div> 98 99 <div id="mobile-container"> 100 <div id="burger"> 101 <div class="burger-box"> 102 <a class="burger-inner" href="#" aria-label="Menü öffnen" role="button"></a> 103 </div> 104 </div> 105 </div> 106 107 <nav id="header-menu"> 108 <div id="menu" class="menu"><div class="menu-main-menue-container"><ul class="menu" aria-label="Hauptnavigation"><li id="menu-item-54" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-54"><a href="#" aria-haspopup="true">Studie</a> 109<ul class="sub-menu"> 110 <li id="menu-item-55" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-55"><a target="_blank" href="https://oewa.at/ausweisung/">ÃWA Kennzahlen</a></li> 111 <li id="menu-item-820" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-820"><a href="https://oewa.at/studie/browserstatistik/">Browserstatistik</a></li> 112 <li id="menu-item-1900" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1900"><a href="https://oewa.at/studie/quartalsschnitte/">Quartals-/Jahresschnitte</a></li> 113 <li id="menu-item-1878" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1878"><a href="https://oewa.at/studie/planungsausweisung/">Planungsausweisung</a></li> 114 <li id="menu-item-997" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-997"><a href="https://oewa.at/studie/archiv/">Archiv</a></li> 115 <li id="menu-item-87" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-87"><a href="https://oewa.at/studie/methode/">Methode</a></li> 116 <li id="menu-item-426" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-426"><a href="https://oewa.at/studie/veroeffentlichung/">VeröffentÂlichung</a></li> 117 <li id="menu-item-430" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-430"><a href="https://oewa.at/studie/mitgliederbereich/">Mitgliederbereich</a></li> 118</ul> 119</li> 120<li id="menu-item-63" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-63"><a href="#" aria-haspopup="true">Service</a> 121<ul class="sub-menu"> 122 <li id="menu-item-441" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-441"><a href="https://oewa.at/service/mitglied-werden/">Mitglied werden</a></li> 123 <li id="menu-item-449" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-449"><a href="https://oewa.at/service/statuten-richtlinien/">Statuten / Richtlinien</a></li> 124 <li id="menu-item-452" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-452"><a href="https://oewa.at/service/preise/">Preise</a></li> 125 <li id="menu-item-1966" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1966"><a href="https://oewa.at/service/termine-veranstaltungen/">Termine / Veranstaltungen</a></li> 126 <li id="menu-item-623" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-623"><a href="https://oewa.at/service/glossar/">Glossar</a></li> 127</ul> 128</li> 129<li id="menu-item-69" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-ancestor current-menu-parent menu-item-has-children menu-item-69"><a href="#" aria-haspopup="true">Tech-Support</a> 130<ul class="sub-menu"> 131 <li id="menu-item-487" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-487"><a href="https://oewa.at/tech-support/implementierung-web/">
131Implementierung Web</a></li> 132 <li id="menu-item-3295" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3295"><a href="https://oewa.at/tech-support/infonline-measurement-manager-integration-ueber-google-tag-manager/">INFOnline Measurement Manager Integration über Google Tag Manager</a></li> 133 <li id="menu-item-2670" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2670"><a href="https://oewa.at/tech-support/implementierung-android-consentfreie-messung/">Implementierung Android â Consentfreie Messung</a></li> 134 <li id="menu-item-2671" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2671"><a href="https://oewa.at/tech-support/implementierung-android-consentpflichtige-messung/">Implementierung Android â Consentpflichtige Messung</a></li> 135 <li id="menu-item-2672" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2672"><a href="https://oewa.at/tech-support/implementierung-ios-consentfreie-messung/">Implementierung iOS â Consentfreie Messung</a></li> 136 <li id="menu-item-2673" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2673"><a href="https://oewa.at/tech-support/implementierung-ios-consentpflichtige-messung/">Implementierung iOS â Consentpflichtige Messung</a></li> 137 <li id="menu-item-2699" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-2692 current_page_item menu-item-2699"><a href="https://oewa.at/tech-support/messung-hybrider-apps/" aria-current="page">Messung hybrider Apps</a></li> 138 <li id="menu-item-2668" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2668"><a href="https://oewa.at/tech-support/implementierungsanleitung-tcf-2-x/">Implementierungsanleitung TCF 2.x</a></li> 139 <li id="menu-item-2669" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2669"><a href="https://oewa.at/tech-support/app-messung-allgemeines/">APP-Messung Allgemeines</a></li> 140 <li id="menu-item-2675" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2675"><a href="https://oewa.at/tech-support/serviceplattform/">Serviceplattform</a></li> 141 <li id="menu-item-2676" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2676"><a href="https://oewa.at/tech-support/myaudit-toolguide/">myAudit Toolguide</a></li> 142 <li id="menu-item-481" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-481"><a href="https://oewa.at/tech-support/kontakt/">Tech-Support Kontakt</a></li> 143</ul> 144</li> 145<li id="menu-item-77" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-77"><a href="#" aria-haspopup="true">Ãber uns</a> 146<ul class="sub-menu"> 147 <li id="menu-item-198" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-198"><a href="https://oewa.at/ueber-uns/organisation/">Organisation</a></li> 148 <li id="menu-item-205" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-205"><a href="https://oewa.at/ueber-uns/leistungen/">Leistungen</a></li> 149 <li id="menu-item-187" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-187"><a href="https://oewa.at/ueber-uns/gremien/">Gremien</a></li> 150 <li id="menu-item-629" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-629"><a href="https://oewa.at/mitglieder/">Mitglieder</a></li> 151 <li id="menu-item-519" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-519"><a href="https://oewa.at/ueber-uns/geschaeftsstelle/">Geschäftsstelle</a></li> 152 <li id="menu-item-399" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-399"><a href="https://oewa.at/ueber-uns/presse-news/">Presse & News</a></li> 153</ul> 154</li> 155</ul></div> <div class="topmenu-mobile"><div class="menu-top-menue-container"><ul id="menu-top-menue-1" class="menu"><li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-40"><a href="https://oewa.at/faq/" title="Frequently Asked Questions">FAQ</a></li> 156<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-39"><a href="https://oewa.at/kontakt/">Kontakt</a></li> 157<li class="menu-item-auth-login menu-item menu-item-type-custom menu-item-object-custom menu-item-auth-user menu-item-has-children" id="kom-user-menu"> 158 <a href="https://oewa.at/mitglied-login/"><span>Mitglied-Login</span></a> 159 <ul class="sub-menu" aria-label="Mitglied-Login Untermenü"> 160 <li> 161 <a href="https://oewa.at/mitglied-login/">Mitgliedbereich</a> 162 </li> 163 <li> 164 <a href="https://portal.infonline.de" target="_blank" rel="noopener noreferrer">INFOnline Suite</a> 165 </li> 166 <li> 167 <a href="https://dashboard.oewa.at/home" target="_blank" rel="noopener noreferrer">Dashboard</a> 168 </li> 169 </ul> 170 </li></ul></div></div></div> 171 </nav> 172 173 </div> 174</header> 175 176 <div class="content"> 177 <main class="main" id="main-content"> 178 <h1 id="">Messung hybrider Apps</h1><h2 id="">1 Getting started hybride Messung</h2><div class="infobox" ><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/425-exclamation-mark-bubble-outline-edited.json" 179 target= ".infobox" 180 trigger="hover" 181 colors="primary:#034575,secondary:#034575"
182 style="width:65px;height:65px;"> 183 </lord-icon><div><p>Bitte prüfen Sie vor der Integration des Measurement Mangers, ob auf diese Webseiten hybrid zugegriffen wird. Für die korrekte Erfassung des App-Traffics muss die Integration der consentfreien SDK in Ihrer App zeitgleich mit der Aktivierung des Measurement Managers erfolgen. Dies kann zu einer Ãberzählung der hinterlegten Angebotskennung des Webviews führen.</p> 184<p>Wird die <strong>consentpflichtige Messung (Webview) direkt über den Measurement Manager ausgespielt, so ist es zwingend erforderlich auch die consentfreie Library (IOMbLibrary, ab Version 1.1.0) zu implementieren und initialisieren.</strong> Bei einer abweichenden Umsetzung können keine hybriden Requests aus dem consentpflichtigen Webview erfasst werden.</p> 185<p>Achten Sie des Weiteren darauf, dass Ihre neue App-Version – mit integrierter IOMbLibrary – vor der Aktivierung der consentpflichtigen Messung im Measurement Manager auf Ihrer Webseite eine hohe Update-Quote bei Ihren Nutzern aufweist.</p> 186</div></div> 187<p>Nachfolgendes Schaubild zeigt eine Ãbersicht mobiler Nutzung:</p> 188<img class="body-image" src="https://oewa.at/wp-content/uploads/2023/07/Bild1_hybride_apps.jpg" alt="" /> 189<h2 id="">2 Kategorienpfade bei hybriden Apps</h2><h3 id="">2.1 Messung hybrider Apps</h3><p>ÃWA bietet mit der Messung von mobilen Applikationen auch die Möglichkeit an, hybride Apps zu messen. Die Definition der hybriden App nach ÃWA Richtlinien besagt, dass Apps, die einen nativen App-Teil haben, aber für ihren Content auch auf eine oder mehrere mobile enabled Website(s) zugreifen (âhybride Appsâ), bei der Zuordnung und Ausweisung mit ihrer gesamten Nutzung einheitlich als App behandelt werden.</p> 190<p>Das <strong>INFOnline Measurement-</strong> bzw. <strong>ÃWA-Messsystem</strong> setzt diese Richtlinie um, indem der im WebView einer hybriden App erzeugte Traffic einer mobile enabled Website (MEW) zur Laufzeit bei der Erzeugung der Mess-Requests nicht der Angebotskennung, sondern der Angebotskennung der App zugeordnet wird. MEW-Traffic, der nicht aus einer hybriden App, sondern über einen mobilen Standard-Browser erzeugt wird, wird nach wie vor regulär der Web-Angebotskennung zugeordnet.</p> 191<h4 id="">Sonderfall native App mit hybrider Messtechnologie</h4><ul> 192<li>Hierbei handelt es sich um eine hybride App, deren Web-Content nicht von extern erreichbar ist.</li> 193<li>Ein Merkmal von MEWs ist, dass sie unter einer eigenen öffentlich zugänglichen URL Content anbieten, der für die Browser mobiler Endgeräte optimiert ist.</li> 194<li>In der Praxis gibt es eine Sonderform der hybriden App. Diese Apps haben einen nativen App-Anteil und nutzen zusätzlich mobil optimierten Web-Content, der allerdings nicht eigenständig aus der MEW angeboten wird. Dieser Web-Content basiert auf der gleichen Technologie wie MEWs, ist jedoch auÃerhalb der hybriden App nicht zu erreichen. Diese Art von Apps wird in der Folge als native App mit hybrider Messtechnologie bezeichnet.</li> 195</ul> 196<h3 id="">2.2 Kategorienpfade bei hybriden Apps</h3><h4 id="">Ausgangslage</h4><p>Hybride Apps setzen sich inhaltlich aus zwei Komponenten zusammen:</p> 197<ul> 198<li>Komponente 1 bildet der native App-Rahmen</li> 199<li>Komponente 2 bilden die Inhalte, die über den in die App integrierten WebView von einer mobile enabled Website (MEW) geladen werden</li> 200</ul> 201<h4 id="">Folgende Voraussetzungen müssen für die Messung hybrider Apps gegeben sein: </h4><ul> 202<li>Nutzen Sie den Measurement Manager als Basis zur Nutzung im Bereich Desktop / MEW</li> 203<li>Die App hat eine eigene Angebotskennung (in der Folge als AngebotskennungApp bezeichnet). Für Inhalte, die über den nativen App-Rahmen dargestellt werden, werden Kategorienpfade vergeben. Diese Kategorienpfade sind im INFOnline Measurement der AngebotskennungApp zugeordnet.</li> 204<li>Die Integration der hybriden App-Messung, wie sie in den Integration Guides der ÃWA zur App-Messung beschrieben wird.</li> 205</ul> 206<p><strong>Falls Sie den Measurement Manager nicht einsetzen können, melden Sie sich bitte beim ÃWA-Customer Service.</strong></p> 207<h3 id="">2.3 Zuordnung des MEW-Anteils der hybriden App-Nutzung zur App (technisch) </h3><p>Nach den ÃWA -Vorgaben ist der Nutzungsanteil einer hybriden App, der im WebView durch Aufruf einer MEW entsteht, der App zuzuordnen. Die technische Umsetzung dieser Vorgabe ist im consentpflichtigen System wie folgt realisiert:</p> 208<ul> 209<li>Messung des nativen App-Anteils: Alle Nutzungsvorgänge, die innerhalb des nativen App-Anteils gemessen werden, werden unter der AngebotskennungApp ans consentpflichtige System gemeldet. Jene Nutzungsvorgänge, die eine mobile Impression darstellen, werden mit einem vom App-Anbieter festgelegten und zuzuordnenden Kategorienpfad versehen.</li> 210<li>
210Messung des MEW-Anteils: Wird innerhalb der App der WebView aufgerufen, um eine MEW darzustellen, sind die Abläufe in der Messung wie folgt: 211<ul> 212<li>Die aufgerufene MEW-Webseite beinhaltet einen Skript-Tag mit der <strong>AngebotskennungWebInhalt</strong></li> 213<li>Das über den INFOnline Measurement-Tag aufgerufene Skript iom.h erkennt eigenständig, dass der Aufruf in einem WebView einer hybriden App stattfindet. Es schreibt automatisch die Angebotskennung für den Messaufruf auf AngebotskennungApp um</li> 214<li>Gleichzeitig wird der Kategorienpfad, der den Inhalt klassifiziert, um einen Präfix ergänzt. Dieser lautet: ___hyb___ <strong>AngebotskennungWebInhalt</strong> ___</li> 215</ul> 216</li> 217</ul> 218<p>Nachfolgende Tabelle stellt an einem Beispiel den ursprünglichen MEW-Request und den in der hybriden Messung dynamisch angepassten Aufruf einander gegenüber:</p> 219<ul> 220<li><strong>Wert</strong>: Kategorienpfad (âcp:â)</li> 221<li><strong>MEW-Request (integriert in MEW-Quelltext):</strong> AngebotskennungWebInhalt</li> 222<li><strong>Dynamisch zur Laufzeit angepasster hybrid-App-Request:</strong> AngebotskennungApp</li> 223</ul> 224<ul> 225<li><strong>Wert:</strong> Angebotskennung (âst:â):</li> 226<li><strong>MEW-Request (integriert in MEW-Quelltext):</strong> [SKTG]/[PAGEID]<br /> 227Beispiel: RedCont/Sport/Tennis/USOpen</li> 228<li><strong>Dynamisch zur Laufzeit angepasster hybrid-App-Request:</strong> ___hyb___AngebotskennungWEBInhalt___ RedCont/Sport/Tennis/USOpen</li> 229</ul> 230<div class="infobox" ><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/425-exclamation-mark-bubble-outline-edited.json" 231 target= ".infobox" 232 trigger="hover" 233 colors="primary:#034575,secondary:#034575" 234 style="width:65px;height:65px;"> 235 </lord-icon><div><p>Das Präfix der Kennzeichnung nimmt 20 Zeichen in Anspruch. Um die Eindeutigkeit der Kategorienpfad-Ableitungen unterhalb der App-Kennungen zu gewährleisten, darf der Kategorienpfad in der MEW nicht länger als 234 Zeichen sein.</p> 236</div></div> 237<h3 id="">2.4 Kategorienpfade bei nativen Apps mit hybrider Messtechnologie</h3><h4 id="">Ausgangslage</h4><p>Native Apps mit hybrider Messtechnologie setzen sich analog zum Aufbau der hybriden Apps inhaltlich aus zwei Komponenten zusammen: Komponente 1 bildet der native App-Rahmen und Komponente 2 stellen die Inhalte dar, die über den in die App integrierten WebView geladen werden. Im Unterschied zu hybriden Apps ist die Quelle der Webinhalte nicht öffentlich, sondern ausschlieÃlich aus der nativen App mit hybrider Messtechnologie erreichbar.</p> 238<p>Folgende Voraussetzungen für die Messung von nativen Apps mit hybrider Messtechnologie müssen erfüllt sein:</p> 239<ul> 240<li>Die App hat eine eigene Angebotskennung (in der Folge als AngebotskennungApp bezeichnet). Für Inhalte, die über den nativen App-Rahmen dargestellt werden, werden Kategorienpfade vergeben. Diese Kategorienpfade sind im INFOnline Measurement-System der AngebotskennungApp</li> 241<li>Die über den WebView eingebundenen Web-Inhalte sind mit INFOnline Measurement Manager vertaggt. Im INFOnline Measurement Manager wird die Angebotskennung der Webseite verwendet, welche die Inhalte nutzt (in der Folge als <strong>AngebotskennungWebInhalt</strong> bezeichnet).</li> 242</ul> 243<h4 id="">Zuordnung des MEW-Anteils der hybriden App-Nutzung zur App (technisch) </h4><p>Nach den ÃWA -Vorgaben ist der Nutzungsanteil einer hybriden App, der im WebView durch den Aufruf einer MEW entsteht, der App zuzuordnen. Die technische Umsetzung dieser Vorgabe ist im INFOnline Measurement-System wie folgt realisiert:</p> 244<ul> 245<li>Messung des nativen App-Anteils: Alle Nutzungsvorgänge, die innerhalb des nativen App-Anteils gemessen werden, werden unter der AngebotskennungApp ans INFOnline Measurement gemeldet. Jene Nutzungsvorgänge, die eine mobile Impression darstellen, werden mit einem vom App-Anbieter festgelegten und zuzuordnenden Kategorienpfad versehen.</li> 246<li>Messung des Anteils der Webinhalte: Wird innerhalb der App der WebView aufgerufen, um Webinhalte darzustellen, sind die Abläufe in der Messung wie folgt: 247<ul> 248<li>Die aufgerufenen Webinhalte beinhalten einen INFOnline Measurement-Tag 2.0 mit der <strong>AngebotskennungWebInhalt</strong></li> 249<li>Das über den Tag aufgerufene Skript erkennt iom.h eigenständig, dass der Aufruf in einem WebView einer hybriden App stattfindet. Es schreibt automatisch die Angebotskennung für den Messaufruf auf AngebotskennungApp um</li> 250<li>Gleichzeitig wird der Kategorienpfad, der den Inhalt klassifiziert, um einen Präfix ergänzt. Dieser lautet: ___hyb2___AngebotskennungWebInhalt___</li> 251</ul> 252</li> 253</ul> 254<p>Nachfolgende Tabelle stellt an einem Beispiel den ursprünglichen Webinhalt-Request und den in der hybriden Messung dynamisch angepassten Aufruf einander gegenüber:</p> 255<ul> 256<li><strong>Wert</strong>: Kategorienpfad (âcp:â)</li> 257<li><strong>Webview-Request (integriert in Quelltext des Webinhaltes):</strong> AngebotskennungWebInhalt</li> 258<li><strong>Dynamisch zur Laufzeit angepasster hybrid-App-Request:</strong> AngebotskennungApp</li> 259</ul> 260<p> </p> 261<ul> 262<li><strong>Wert</strong>: Angebotskennung (âst:â):</li> 263<li><strong>Webview-Request (integriert in Quelltext des Webinhaltes):</strong> [SKTG]/[PAGEID]<br />
264Beispiel: RedCont/Sport/Tennis/USOpen</li> 265<li><strong>Dynamisch zur Laufzeit angepasster hybrid-App-Request:</strong> ___hyb___AngebotskennungWEBInhalt___ RedCont/Sport/Tennis/USOpen</li> 266</ul> 267<div class="infobox" ><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/425-exclamation-mark-bubble-outline-edited.json" 268 target= ".infobox" 269 trigger="hover" 270 colors="primary:#034575,secondary:#034575" 271 style="width:65px;height:65px;"> 272 </lord-icon><div><p>Das Präfix der Kennzeichnung nimmt 21 Zeichen in Anspruch. Um die Eindeutigkeit der Kategorienpfad-Ableitungen unterhalb der App-Kennungen zu gewährleisten, darf der Kategorienpfad innerhalb des Webinhaltes nicht länger als 233 Zeichen sein. Sollten die Kategorienpfade der Webinhalte länger als 233 Zeichen sein, werden sie vom System automatisch abgeschnitten. Dies hat zur Folge, dass zwei oder mehr Kategorienpfade, die sich erst nach dem 233. Zeichen unterscheiden, im Mess-System zu einem Kategorienpfad zusammengefasst werden, so dass die Inhalte u.U. nicht korrekt zugeordnet werden können.</p> 273</div></div> 274<h2 id="">3 iOS - Parallele Messung INFOnline Measurement & ÃWA-Messung</h2><p>Die IOMbLib iOS unterstützt den parallelen Betrieb von Sessions der folgenden Mess-Systeme:</p> 275<ul> 276<li>Zensusmessung (DE) (IOMb in der IOMb Library iOS)</li> 277<li>consentfreie Messung (AT) (IOMb ÃWA in der IOMb Library iOS)</li> 278<li>pseudonyme Messung (DE) (SZM in der IOLib iOS)</li> 279<li>consentpflichtige Messung (AT) (ÃWA in der IOLib iOS)</li> 280</ul> 281<p>Im Folgenden soll gezeigt werden, wie die parallele Messung gleichzeitig betrieben werden kann.<br /> 282Voraussetzung dafür ist eine Integration der folgenden Bibliotheken in Ihrem iOS App Projekt:</p> 283<ul> 284<li>IOMbLibrary iOS</li> 285<li>IOLib iOS</li> 286</ul> 287<p><strong>Xcode</strong>: Erstellung SessionConfiguration Objekte für IOMb (DE), IOMb ÃWA (AT), SZM (DE) und ÃWA (AT) sowie Initialisierung aller Sessions</p> 288<div class="code-container"><pre><code id="copy6abe33aad32cb" role="code">func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: 289 [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 290 291 startIOMbSession() 292 startIOMbOEWASession() 293 startIOMpSession() 294 startOEWASession() 295 return true 296} 297private func startIOMbSession() { 298 guard let url = URL(string: "https://data-ef4e2c0163.example.com") else { return } 299 let configuration = IOMBSessionConfiguration(offerIdentifier: "Angebotskennung", baseURL: url) 300 IOMBSession.defaultSession(for: .iomb).start(with: configuration) 301} 302 303private func startIOMbOEWASession() { 304 guard let url = URL(string: "https://data-ef4e2c0163.example.com") else { return } 305 let configuration = IOMBSessionConfiguration(offerIdentifier: "Angebotskennung", baseURL: url) 306 IOMBSession.defaultSession(for: .iomb_at).start(with: configuration) 307} 308 309private func startIOMpSession() { 310 IOLSession.defaultSession(for: IOLSessionType.SZM).start(withOfferIdentifier: "Angebotskennung", privacyType: IOLPrivacyType.LIN) 311} 312 313private func startOEWASession() { 314 IOLSession.defaultSession(for: IOLSessionType.OEWA).start(withOfferIdentifier: "Angebotskennung", privacyType: IOLPrivacyType.LIN) 315} 316 317</code></pre><div role="button" aria-label="Kopiere den Code" class="btncopy" data-clipboard-target="#copy6abe33aad32cb"><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/242-copy-morph-outline-edited.json" 318 target= "" 319 trigger="hover" 320 colors="primary:#034575,secondary:#034575" 321 style="width:40px;height:40px;"> 322 </lord-icon><div class="tooltiptext" role="alert">kopiert!</div></div></div><p><strong>Xcode</strong>: Events in IOMb (DE) müssen separat von Events in den übrigen Messsystemen initialisiert und geloggt werden. Hier z.B. der Aufruf eines Views:</p> 323<div class="code-container"><pre><code id="copy6abe33aad334c" role="code"> let iombEvent = IOMBViewEvent(type: .appeared, category: "Home", comment: nil) 324 IOMBSession.defaultSession(for: .iomb).logEvent(iombEvent) 325 IOMBSession.defaultSession(for: .iomb_at).logEvent(iombEvent) 326 327 let iolEvent = IOLViewEvent(type: .appeared, category: "Home", comment: nil) 328 IOLSession.defaultSession(for: .SZM).logEvent(iolEvent) 329 IOLSession.defaultSession(for: .OEWA).logEvent(iolEvent) 330</code></pre><div role="button" aria-label="Kopiere den Code" class="btncopy" data-clipboard-target="#copy6abe33aad334c"><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/242-copy-morph-outline-edited.json" 331 target= "" 332 trigger="hover" 333 colors="primary:#034575,secondary:#034575" 334 style="width:40px;height:40px;"> 335 </lord-icon><div class="tooltiptext" role="alert">kopiert!</div></div></div><h3 id="">3.1 Wichtig bei paralleler Hybrid-Messung!</h3><p>Wichtig zu beachten bei paralleler Hybrid-Messung <strong>INFOnline Measurement</strong> & <strong>ÃWA-Messung</strong>!<br /> 336Für eine parallele hybride Messung von <strong>INFOnline Measurement</strong> (DE) & <strong>ÃWA-Messung</strong> (AT) muss die Klasse <em>IOLWKWebView</em> verwendet und damit <em>configureWebViewForIOMbHybridMeasure</em> aufgerufen werden:</p> 337<div class="code-container"><pre><code id="copy6abe33aad33f0" role="code">let webView = IOLWKWebView() 338webView.configureWebViewForIOMbHybridMeasure()</code></pre><div role="button" aria-label="Kopiere den Code" class="btncopy" data-clipboard-target="#copy6abe33aad33f0"><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/242-copy-morph-outline-edited.json" 339 target= "" 340 trigger="hover" 341 colors="primary:#034575,secondary:#034575" 342 style="width:40px;height:40px;"> 343 </lord-icon><div class="tooltiptext" role="alert">kopiert!</div></div></div><p>Falls zusätzlich oder alternativ noch das Messsystem IOMb ÃWA (AT) verwendet werden soll, muss für den o.g. WebView noch eine weitere Funktion configureWebViewForIOMbOEWAHybridMeasure aufgerufen werden.</p> 344<div class="code-container"><pre><code id="copy6abe33aad3450" role="code">let webView = IOLWKWebView() 345webView.configureWebViewForIOMbOEWAHybridMeasure()</code></pre><div role="button" aria-label="Kopiere den Code" class="btncopy" data-clipboard-target="#copy6abe33aad3450"><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/242-copy-morph-outline-edited.json" 346 target= "" 347 trigger="hover" 348 colors="primary:#034575,secondary:#034575" 349 style="width:40px;height:40px;"> 350 </lord-icon><div class="tooltiptext" role="alert">kopiert!</div></div></div><h2 id="">4 iOS - consentfreie Hybrid-Messung</h2><p>Die consentfreie Library (IOMbLibrary) ist in der Lage, die Nutzung von Hybrid-Apps zu messen, d.h. auch Nutzeraktionen innerhalb mobiler Inhalte, welche in sog. WebViews dargestellt werden, können erfasst und mit den Messdaten des nativen App-Rahmens zusammengeführt werden.</p> 351<p>Voraussetzung hierfür ist, dass der Measurement Manager in die über den WebView aufgerufene Webseiten integriert wurde.</p> 352<p>AuÃerdem muss der von der IOMbLibrary bereitgestellte WebView verwendet werden, um die beiden MessdatensaÌtze aus der App-Messung zusammenzuführen. Die App und die aus der App aufgerufenen MEWs müssen unter
352schiedliche, von der ÃWA vergebene Angebotskennungen verwenden.</p> 353<div class="infobox" ><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/425-exclamation-mark-bubble-outline-edited.json" 354 target= ".infobox" 355 trigger="hover" 356 colors="primary:#034575,secondary:#034575" 357 style="width:65px;height:65px;"> 358 </lord-icon><div><p>Hybride Apps beziehen den externen Web-Content i.d.R. von Websites, die fuÌr die Nutzung von mobilen EndgeraÌten optimiert sind. Diese Websites werden in diesem Dokument als MEW (=mobile enabled Website) bezeichnet. Sollte Ihre hybride App Content aus einer stationaÌren Website (optimiert fuÌr die Nutzung von PCs und Notebooks) beziehen, gelten alle Bedingungen, die hier beschrieben sind.</p> 359</div></div> 360<p>Um die Messung von Hybrid-Apps zu ermoÌglichen, sollen Webseiten in der App durch einen speziellen WebView aufgerufen werden.</p> 361<p>Hierzu soll bei jeder Initialisierung eines WebViews im Source Code ein <strong>IOMBWKWebView</strong> anstelle eines Standard <strong>WKWebView</strong> erzeugt werden. AnschlieÃend kann der View wie ein regulaÌrer <strong>WKWebView</strong> behandelt werden. Ein <strong>IOMBWKWebView</strong> leitet direkt vom <strong>WKWebView</strong> ab, bietet nach auÃen keinerlei neue APIs und verhaÌlt sich somit vollkommen transparent.</p> 362<h2 id="">5 iOS â consentpflichtige Hybrid-Messung</h2><p>Die IOLib ist in der Lage, die Nutzung von Hybrid-Apps zu messen, d.h. auch Nutzeraktionen innerhalb mobiler Inhalte, welche in sog. WebViews dargestellt werden, können erfasst und mit den Messdaten des nativen App-Rahmens zusammengeführt werden.</p> 363<p>Voraussetzung hierfür ist, dass die über den WebView aufgerufenen Webseiten ebenfalls mit dem Skript-Tag für mobile enabled Websites vertaggt sind. AuÃerdem muss der von der IOLib bereitgestellte WebView verwendet werden, um die beiden Messdatensätze aus der App-Messung und aus der MEW-Messung zusammenzuführen. Die App und die aus der App aufgerufenen MEWs müssen unterschiedliche, von der ÃWA vergebene Angebotskennungen verwenden.</p> 364<div class="infobox" ><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/425-exclamation-mark-bubble-outline-edited.json" 365 target= ".infobox" 366 trigger="hover" 367 colors="primary:#034575,secondary:#034575" 368 style="width:65px;height:65px;"> 369 </lord-icon><div><p>Hybride Apps beziehen den externen Web-Content i.d.R. von Websites, die für die Nutzung von mobilen Endgeräten optimiert sind. Diese Websites werden in diesem Dokument als MEW (=mobile enabled Website) bezeichnet. Sollte Ihre hybride App Content aus einer stationären Website (optimiert für die Nutzung von PCs und Notebooks) beziehen, gelten alle Bedingungen, die im Dokument ÃWA Guide Implementierung Web beschrieben sind.</p> 370</div></div> 371<p>Um die Messung von Hybrid-Apps zu ermöglichen, müssen Webseiten in der App durch einen speziellen WebView aufgerufen werden. Hierzu muss bei jeder Initialisierung eines WebViews im Source Code ein <strong>IOLWKWebView</strong> anstelle eines Standard <strong>WKWebView</strong> erzeugt werden.</p> 372<p>AnschlieÃend kann der View wie ein regulärer <strong>WKWebView</strong> behandelt werden. Ein <strong>IOLWKWebView</strong> leitet direkt vom <strong>WKWebView</strong> ab, bietet nach auÃen keinerlei neue APIs und verhält sich somit vollkommen transparent.</p> 373<div class="infobox" ><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/425-exclamation-mark-bubble-outline-edited.json" 374 target= ".infobox" 375 trigger="hover" 376 colors="primary:#034575,secondary:#034575" 377 style="width:65px;height:65px;"> 378 </lord-icon><div><p>Bitte prüfen Sie vor der Integration des Measurement Mangers, ob auf diese Webseiten hybrid zugegriffen wird. Für die korrekte Erfassung des App-Traffics muss die Integration der consentfreien SDK
378in Ihrer App zeitgleich mit der Aktivierung des Measurement Managers erfolgen.</p> 379<p>Wird die consentpflichtige Messung (Webview) direkt über den Measurement Manager ausgespielt, so ist es zwingend erforderlich auch die consentfreie Library (IOMb, ab Version 1.1.0) zu implementieren und initialisieren. Bei einer abweichenden Umsetzung können keine hybriden Requests aus dem consentpflichtige Webview erfasst werden.</p> 380<p>Achten Sie des Weiteren darauf, dass Ihre neue App-Version – mit integrierter IOMbLibrary – vor der Aktivierung der consentpflichtigen Messung im Measurement Manager auf Ihrer Webseite eine hohe Update-Quote bei Ihren Nutzern aufweist.</p> 381</div></div> 382<h2 id="">6 Android - Parallele Messung INFOnline Measurement & ÃWA-Messung</h2><p>Die IOMbLib Android unterstützt den parallelen Betrieb von Sessions der folgenden Mess-Systeme:</p> 383<ul> 384<li>Zensusmessung (DE) (IOMb in der IOMb Library Android)</li> 385<li>consentfreie Messung (AT) (IOMb ÃWA in der IOMb Library Android)</li> 386<li>pseudonyme Messung (DE) (SZM in der IOLib Android)</li> 387<li>consentpflichtige Messung (AT) (ÃWA in der IOLib Android)</li> 388</ul> 389<p>Im Folgenden soll gezeigt werden, wie die Messungen gleichzeitig betrieben werden koÌnnen.</p> 390<p>Voraussetzung dafür ist eine Integration der folgenden Bibliotheken in ihr Android App Projekt:</p> 391<ul> 392<li>IOMbLibrary Android</li> 393<li>IOLibrary Android</li> 394</ul> 395<p><strong>Session Init:</strong> Erstellung von Session Setup/Konfiguration für IOMb (DE), IOMb ÃWA (AT), SZM (DE) und ÃWA (AT) sowie Initialisierung aller Sessions</p> 396<div class="code-container"><pre><code id="copy6abe33aad3727" role="code">override fun onCreate() { 397 super.onCreate() 398 399startIOMbSession() 400startIOMbOEWASession() 401 startIOMpSession() 402 startOEWASession() 403 404} 405 406fun startIOMbSession() { 407 408 val setup = IOMBSetup( 409 offerIdentifier = "Angebotskennug", // Angebotskennung 410 baseUrl = "https://data-ef4e2c0163.example.com"). // Relay Basis URL 411 412 var IOMB_SESSION = de.infonline.lib.iomb.IOMB.create(setup).subscribe { it -> 413 IOMB_SESSION = it 414 } 415 416} 417 418fun startIOMbOEWASession() { 419 420 val setup = IOMBATSetup( 421 offerIdentifier = "Angebotskennug", // Angebotskennung 422 baseUrl = "https://data-ef4e2c0163.example.com"). // Relay Basis URL 423 424 var IOMB_AT_SESSION = de.infonline.lib.iomb.IOMB.create(setup).subscribe { it -> 425 IOMB_AT_SESSION = it 426 } 427 428} 429 430fun startIOMpSession() { 431 432 // Get Default Session 433 val sessionSZM = de.infonline.lib.IOLSession.getSessionForType(IOLSessionType.SZM) 434 435 // Session initialisieren 436 sessionSZM.initIOLSession( 437 this, // Application Context 438 "OfferIdentifier-SZM", // Angebotskennung 439 BuildConfig.DEBUG, // Debug Mode on/off 440 IOLSessionPrivacySetting.LIN) // Privacy Setting 441 442} 443 444fun startOEWASession() { 445 446 // Get Default Session 447 val sessionOEWA = de.infonline.lib.IOLSession.getSessionForType(IOLSessionType.OEWA) 448 449 // Session initialisieren 450 sessionOEWA.initIOLSession( 451 this, // Application Context 452 "OfferIdentifier-OEWA", // Angebotskennung 453 BuildConfig.DEBUG, // Debug Mode on/off 454 IOLSessionPrivacySetting.LIN) // Privacy Setting 455}</code></pre><div role="button" aria-label="Kopiere den Code" class="btncopy" data-clipboard-target="#copy6abe33aad3727"><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/242-copy-morph-outline-edited.json" 456 target= "" 457 trigger="hover" 458 colors="primary:#034575,secondary:#034575" 459 style="width:40px;height:40px;"> 460 </lord-icon><div class="tooltiptext" role="alert">kopiert!</div></div></div><p><strong>Event Logging:</strong> Events koÌnnen in allen Messsystemen parallel geloggt werden, z.B. der Aufruf eines Views:</p> 461<div class="code-container"><pre><code id="copy6abe33aad378b" role="code">val event = IOLViewEvent(type = IOLViewEvent.IOLViewEventType.Appeared, 462 category = "MainScreen") 463 464 IOMB_SESSION.logEvent(event) 465 IOMB_AT_SESSION.logEvent(event) 466 sessionSZM.logEvent(event) 467 sessionOEWA.logEvent(event)</code></pre><div role="button" aria-label="Kopiere den Code" class="btncopy" data-clipboard-target="#copy6abe33aad378b"><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/242-copy-morph-outline-edited.json" 468 target= "" 469 trigger="hover" 470 colors="primary:#034575,secondary:#034575" 471 style="width:40px;height:40px;"> 472 </lord-icon><div class="tooltiptext" role="alert">kopiert!</div></div></div><h3 id="">6.1 Wichtig bei paralleler Hybrid-Messung!</h3><p>Wichtig zu beachten bei paralleler Hybrid-Messung <strong>INFOnline Measurement & ÃWA-Messung</strong>!</p> 473<p>Als Basis für eine parallele hybride Messung von <strong>INFOnline Measurement</strong> (DE) & <strong>ÃWA-Messung</strong>
473 (AT) dient weiterhin die Klasse IOLWebView (wie bisher im Rahmen der IOMp/ÃWA Messung über die INFOnline Library Android integriert).</p> 474<p>Um zusätzlich die IOMb (DE) Hybrid-Messung zu aktivieren, muss ein Objekt des Typs <em>IOMBHybridBridge</em> erstellt und darauf die Methode <em>configureWebViewForIOMbHybridMeasurement</em> aufgerufen werden.</p> 475<p>Dieser wird die <em>IOLWebView</em>-Instanz als Parameter übergeben:</p> 476<div class="code-container"><pre><code id="copy6abe33aad3831" role="code">val iombHybridBridge = IOMBHybridBridge() 477val iolWebView = findViewById(R.id.iol_webview) 478 479iombHybridBridge.configureWebViewForIOMbHybridMeasurement(iolWebView)</code></pre><div role="button" aria-label="Kopiere den Code" class="btncopy" data-clipboard-target="#copy6abe33aad3831"><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/242-copy-morph-outline-edited.json" 480 target= "" 481 trigger="hover" 482 colors="primary:#034575,secondary:#034575" 483 style="width:40px;height:40px;"> 484 </lord-icon><div class="tooltiptext" role="alert">kopiert!</div></div></div><p>Falls zusätzlich oder alternativ noch das Mess-System IOMb ÃWA (AT) verwendet werden soll, muss ein Objekt des Typs IOMbOEWAHybridBridge und darauf die Methode configureWebViewForIOMbOEWAHybridMeasure aufgerufen werden. Dieser wird die Instanz des o.g. WebView übergeben.</p> 485<div class="code-container"><pre><code id="copy6abe33aad3890" role="code">val iombHybridBridge = IOMBOEWAHybridBridge() 486val iolWebView = findViewById(R.id.iol_webview) 487 488iombHybridBridge.configureWebViewForIOMbOEWAHybridMeasurement(iolWebView)</code></pre><div role="button" aria-label="Kopiere den Code" class="btncopy" data-clipboard-target="#copy6abe33aad3890"><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/242-copy-morph-outline-edited.json" 489 target= "" 490 trigger="hover" 491 colors="primary:#034575,secondary:#034575" 492 style="width:40px;height:40px;"> 493 </lord-icon><div class="tooltiptext" role="alert">kopiert!</div></div></div><h2 id="">7 Android â consentfreie Hybrid-Messung</h2><p>Die IOMbLibrary ist in der Lage, die Nutzung von Hybrid-Apps zu messen, d.h. auch Nutzeraktionen innerhalb mobiler Inhalte, welche in sog. WebViews dargestellt werden, koÌnnen erfasst und mit den Messdaten des nativen App-Rahmens zusammengefuÌhrt werden.</p> 494<div class="infobox" ><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/425-exclamation-mark-bubble-outline-edited.json" 495 target= ".infobox" 496 trigger="hover" 497 colors="primary:#034575,secondary:#034575" 498 style="width:65px;height:65px;"> 499 </lord-icon><div><p>Voraussetzung hierfuÌr ist, dass der Measurement Manager in die über den WebView aufgerufene Webseiten integriert wurde.</p> 500</div></div> 501<p>AuÃerdem muss der von der IOMbLibrary bereitgestellte WebView verwendet werden, um die beiden MessdatensaÌtze aus der App-Messung und aus der MEW-Messung zusammenzufuÌhren. Die App und die aus der App aufgerufenen MEWs muÌssen unterschiedliche, von der ÃWA vergebene Angebotskennungen verwenden.</p> 502<div class="infobox" ><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/425-exclamation-mark-bubble-outline-edited.json" 503 target= ".infobox" 504 trigger="hover" 505 colors="primary:#034575,secondary:#034575" 506 style="width:65px;height:65px;"> 507 </lord-icon><div><p>Hybride Apps beziehen den externen Web-Content i.d.R. von Websites, die fuÌr die Nutzung von mobilen EndgeraÌten optimiert sind. Diese Websites werden in diesem Dokument als MEW (=mobile enabled Website) bezeichnet. Sollte Ihre hybride App Content aus einer stationaÌren Website (optimiert fuÌr die Nutzung von PCs und Notebooks) beziehen, gelten alle Bedingungen, die hier beschrieben sind.</p> 508</div></div> 509<p>Um die Messung von Hybrid-Apps zu ermoÌglichen, muÌssen Webseiten in der App durch einen speziellen WebView aufgerufen werden.</p> 510<p>Hierzu muss bei jeder Initialisierung eines WebViews im Source Code ein <strong>IOLWebView</strong> anstelle eines Standard <strong>WebView</strong> erzeugt werden. AnschlieÃend kann der View wie ein regulaÌrer <strong>WebView</strong> behandelt werden. Ein <strong>IOLWebView</strong> leitet direkt vom <strong>WebView</strong> ab, bietet nach auÃen keinerlei neue APIs und verhaÌlt sich somit vollkommen transparent.</p> 511<h2 id="">8 Android â consentpflichtige Hybrid-Messung</h2><p>Die IOLib ist in der Lage die Nutzung von Hybrid Apps zu messen, d.h. auch Nutzeraktionen innerhalb mobiler Inhalte, welche in sog. WebViews dargestellt werden, können erfasst und mit den Messdaten des nativen App-Rahmens zusammengeführt werden.</p> 512<p>Voraussetzung hierfür ist, dass die über den WebView aufgerufenen Webseiten ebenfalls mit dem Skript-Tag für mobile enabled Websites vertaggt sind. Au
512Ãerdem muss der von der IOLib bereitgestellter WebView verwendet werden, um die beiden Messdatensätze aus der App-Messung und der MEW Messung zusammenzuführen. Die App und die aus der App aufgerufenen MEWs müssen unterschiedliche, von der ÃWA vergebene Angebotskennungen verwenden.</p> 513<div class="infobox" ><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/425-exclamation-mark-bubble-outline-edited.json" 514 target= ".infobox" 515 trigger="hover" 516 colors="primary:#034575,secondary:#034575" 517 style="width:65px;height:65px;"> 518 </lord-icon><div><p>Hybride Apps beziehen den externen Web-Content i.d.R. von Websites, die für die Nutzung von mobilen Endgeräten optimiert sind. Diese Websites werden in diesem Dokument als MEW (=mobile enabled Website) bezeichnet. Sollte Ihre hybride App Content aus einer stationären Website (optimiert für die Nutzung von PCs und Notebooks) beziehen, gelten alle Bedingungen, die im Dokument ÃWA Guide Implementierung Web beschrieben sind.</p> 519</div></div> 520<p>Um die Messung von Hybrid-Apps zu ermöglichen, müssen Webseiten in der App durch einen speziellen WebView, den <strong>de.infonline.lib.IOLWebView</strong>, aufgerufen werden.</p> 521<p>AnschlieÃend kann der View wie ein regulärer <strong>android.webkit.WebView</strong> behandelt werden. Der <strong>de.infonline.lib.IOLWebView</strong> leitet direkt vom android.webkit.WebView ab, bietet nach auÃen keinerlei neue APIs und verhält sich somit vollkommen transparent.</p> 522<div class="infobox" ><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/425-exclamation-mark-bubble-outline-edited.json" 523 target= ".infobox" 524 trigger="hover" 525 colors="primary:#034575,secondary:#034575" 526 style="width:65px;height:65px;"> 527 </lord-icon><div><p>Bitte prüfen Sie vor der Integration des Measurement Mangers, ob auf diese Webseiten hybrid zugegriffen wird. Für die korrekte Erfassung des App-Traffics muss die Integration der consentfreien SDK in Ihrer App zeitgleich mit der Aktivierung des Measurement Managers erfolgen.</p> 528<p>Wird die <strong>consentpflichtige Messung (Webview) direkt über den Measurement Manager ausgespielt, so ist es zwingend erforderlich auch die consentfreie Library (IOMbLibrary, ab Version 1.1.0) zu implementieren und initialisieren.</strong> Bei einer abweichenden Umsetzung können keine hybriden Requests aus dem consentpflichtigen Webview erfasst werden.</p> 529<p>Achten Sie des Weiteren darauf, dass Ihre neue App-Version – mit integrierter IOMbLibrary – vor der Aktivierung der consentpflichtigen Messung im Measurement Manager auf Ihrer Webseite eine hohe Update-Quote bei Ihren Nutzern aufweist.</p> 530</div></div> 531<p>Hier ein Beispiel, um einen IOLWebView in einem XML-Layout zu erzeugen:</p> 532<div class="code-container"><pre><code id="copy6abe33aad3b71" role="code"><de.infonline.lib.IOLWebView 533 android:id="@+id/webview" 534 android:layout_width="match_parent" 535 android:layout_height="match_parent" /> 536 537</code></pre><div role="button" aria-label="Kopiere den Code" class="btncopy" data-clipboard-target="#copy6abe33aad3b71"><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/242-copy-morph-outline-edited.json" 538 target= "" 539 trigger="hover" 540 colors="primary:#034575,secondary:#034575" 541 style="width:40px;height:40px;"> 542 </lord-icon><div class="tooltiptext" role="alert">kopiert!</div></div></div><div class="infobox" ><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/425-exclamation-mark-bubble-outline-edited.json" 543 target= ".infobox" 544 trigger="hover" 545 colors="primary:#034575,secondary:#034575"
546 style="width:65px;height:65px;"> 547 </lord-icon><div><p>Der IOLWebView aktiviert automatisch JavaScript und DOM-Storage. Der IOLWebView funktioniert nur korrekt, wenn diese Einstellungen nicht geändert werden.</p> 548</div></div> 549<h2 id="">9 Alternativlösung für die consentpflichtige hybride Messung</h2><p>Das vorliegende Dokument beschreibt eine Sonderform der Integration der Messung hybrider Apps in Umgebungen, in denen die Nutzung der nativen IOLibs (consentpflichtige Messung) nicht durchgängig erfolgen kann. Das Dokument beschreibt plattformübergreifend ausschlieÃlich die Spezifikationen der Alternativlösung der Integration der Messung hybrider Apps.</p> 550<p>Alle weiteren Informationen entnehmen Sie den Inhalten im Bereich „Hybride Messung“.</p> 551<h3 id="">9.1 Gültig für MEWs und stationäre Websites</h3><p>Hybride Apps beziehen den externen Web-Content i.d.R. von Websites, die für die Nutzung von mobilen Endgeräten optimiert sind. Diese Websites werden in diesem Dokument als MEW (=mobile enabled Website) bezeichnet. Sollte Ihre hybride App Content aus einer stationären Website (optimiert für die Nutzung von PCs und Notebooks) beziehen, gelten alle Bedingungen, die im Dokument für die MEWs beschrieben sind, gleichlautend für die stationäre Website.</p> 552<h3 id="">9.2 Messung hybrider Apps (Standardlösung) </h3><p>Die Library für die consentpflichtige Messung ist in der Lage, die Nutzung von Hybrid Apps zu messen, d.h. auch Nutzeraktionen innerhalb mobiler Inhalte, welche in sog. WebViews dargestellt werden, können erfasst und mit den Messdaten des nativen Apps-Rahmens zusammengeführt werden.</p> 553<p>Voraussetzung für die Zusammenführung der Nutzungsmessung aus App-Rahmen und der Web-Messung ist, dass die über den WebView aufgerufenen Webseiten ebenfalls mit dem Measurement Manager für mobile-enabled Websites vertaggt sind. Die App und die aus der App aufgerufenen MEWs müssen unterschiedliche, von der ÃWA vergebene Angebotskennungen verwenden. Eine weitere Voraussetzung ist, dass der Aufruf des WebView aus dem App-Code angepasst und über die IOLWebView-Klasse aufgerufen wird, um die App-Identifikationsmerkmale (derzeit vor allem Client ID und Angebotskennung der App) im WebView bereitzustellen. In den plattformspezifischen Integration Guides wird beschrieben, wie die Nutzungsmessung hybrider Apps unter durchgängiger Nutzung der nativen consentpflichtigen Libraries realisiert werden kann (Standard-Lösung).</p> 554<h3 id="">9.3 Alternativlösung zur Messung hybrider Apps</h3><p>Neben der nativen Programmierung von Apps stehen in der Praxis weitere Optionen zur Verfügung eine App zu entwickeln. So unter
554stützen z.B. Entwicklungsframeworks wie PhoneGap oder Titanium die plattformübergreifende Entwicklung mit einem hohen Anteil an Web-Inhalten. Gleichzeitig beschränken diese Plattformen die Einfluss-Möglichkeiten im Bereich des nativen App-Codes, indem sie z.B. die Anpassung des WebView-Aufrufs untersagen. Dies führt dazu, dass die hybrid-Messung nach dem Standard-Verfahren unter Verwendung der consentpflichtigen Libraries nicht vollständig möglich ist. Im nachfolgenden Dokument wird beschrieben, wie die Messung hybrider Apps ohne Verwendung des von der consentpflichtigen Library bereitgestellten, angepassten WebView-Aufrufs (IOLWebView) realisiert werden kann (Alternativlösung).</p> 555<h3 id="">9.4 Integration Alternativlösung</h3><h4 id="">Unterschiede Integration Standard / Alternativlösung</h4><p>Die Alternativlösung der Integration der Messung hybrider Apps beruht auf dem beschriebenen Verfahren, bei dem</p> 556<ul> 557<li>die <em>App-Identifikationsmerkmale</em> aus dem App-Rahmen in den WebView übertragen</li> 558<li>und dort beim Aufruf des Measurement ManagerTags mit an das pseudonyme System übermittelt wird</li> 559</ul> 560<p>Damit ist es möglich, die Nutzeraktionen im App-Rahmen mit denen der MEW Nutzung zu einem Nutzungsvorgang zusammenzuführen.<br /> 561Im Vergleich zur Standardlösung weicht die Alternativlösung zur Integration in einem Punkt ab:</p> 562<ul> 563<li>die Ãbergabe der App-Identifikationsmerkmale aus dem App-Rahmen in den WebView erfolgt manuell (Standard-Lösung: erfolgt automatisch über den Aufruf des IOLWebView)</li> 564</ul> 565<h4 id="">Voraussetzungen</h4><p>Für die Messung der Nutzung hybrider Apps nach dem alternativen Verfahren müssen folgende Voraussetzungen erfüllt sein:</p> 566<ul> 567<li>die plattformspezifische consentpflichtige Library (ab Version 2.4.0 Android / 2.5.0 iOS) muss in den App-Rahmen integriert sein und beim Start der App initialisiert werden.</li> 568<li>die im WebView aufgerufenen Inhalte müssen mit der Version des Measurement Managers für mobile enabled Websites (MEW) vertaggt sein, welcher die hybride Messung unterstützt</li> 569<li>die Parameterübergabe zwischen dem App-Rahmen und dem eingesetzten WebView erfolgen</li> 570</ul> 571<p>Die Nutzung der consentpflichtige Library (ab Version 2.4.0 Android / 2.5.0 iOS) im App-Rahmen ist obligatorisch, da</p> 572<ul> 573<li>über die consentpflichtige Library Klassifizierungsmerkmale der App gebildet und für die Einordnung des Nutzungsvorgangs an das consentpflichtige System übermittelt werden</li> 574<li>die Library automatische Start-Stopp Events der App übermittelt, die für die Interpretation des Nutzungsvorganges relevant sind</li> 575<li>die App-Identifikationsmerkmale werden nach den Vorgaben der consentpflichtigen Messung gebildet und für die weitere Verwendung bereitgestellt</li> 576</ul> 577<h3 id="">9.5 Technische Integration</h3><h4 id="">Consentpflichtige Library</h4><p>Die Implementierung der plattformspezifischen pseudonyme Library muss nach den Vorgaben des zugehörigen Integration Guides erfolgen. Die Library muss beim Start der App initialisiert werden. Es muss mindestens die Version 2.4.0 der consentpflichtige Library eingesetzt werden.</p> 578<h4 id="">Ermittlung der App-Identifikationsmerkmale</h4><p>Für die Ermittlung der App-Identifikationsmerkale stellt die pseudonyme Library eine dedizierte Getter-Funktion zur Verfügung, die aus dem Code der App aufgerufen werden kann. Das Ergebnis ist ein JSON-String, welcher in einer geeigneten String-Variable zu speichern und beim Aufruf der setMultiIdentifier-Methode zu verwenden ist. Das Ergebnis von getMultiIdentifier() ist ein JSON-Object als String, dessen Anführungszeichen escaped sind.</p> 579<p>Beispiele für den Aufruf der Methode:</p> 580<p><strong>iOS:</strong></p> 581<div class="code-container"><pre><code id="copy6abe33aad3fdf" role="code">[IOLWKWebView multiIdentifierString];</code></pre><div role="button" aria-label="Kopiere den Code" class="btncopy" data-clipboard-target="#copy6abe33aad3fdf"><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/242-copy-morph-outline-edited.json" 582 target= "" 583 trigger="hover" 584 colors="primary:#034575,secondary:#034575" 585 style="width:40px;height:40px;"> 586 </lord-icon><div class="tooltiptext" role="alert">kopiert!</div></div></div><p>Der <em>SFSafariViewController</em> kann für die pseudonyme Messung nicht verwendet werden, da die
586ser keine Möglichkeit zur JavaScript-Injection bietet!</p> 587<p><strong>Android:</strong></p> 588<div class="code-container"><pre><code id="copy6abe33aad4048" role="code">IOLSession.getSessionForType(IOLSessionType.SZM).requestMultiIdentifier 589(IOLSession.MultiIdentifierCallback multiIdentifierCallback); 590</code></pre><div role="button" aria-label="Kopiere den Code" class="btncopy" data-clipboard-target="#copy6abe33aad4048"><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/242-copy-morph-outline-edited.json" 591 target= "" 592 trigger="hover" 593 colors="primary:#034575,secondary:#034575" 594 style="width:40px;height:40px;"> 595 </lord-icon><div class="tooltiptext" role="alert">kopiert!</div></div></div><p>Das MultiIdentifierCallback ist ein Interface, welches über die Methode onMultiIdentifier(String identifier) den „MultiIdentifier“ zurückgibt, sobald dieser verfügbar ist. Gemäà Google Richtlinien muss die Erhebung des AdvertisingIdentifiers asynchron erfolgen. Bei Android muss man zusätzlich sicherstellen, dass JavaScript und DOM-Storage aktiviert sind, was in einem Standard WebView nicht zwingend der Fall ist:</p> 596<div class="code-container"><pre><code id="copy6abe33aad40ac" role="code">webView.getSettings().setJavaScriptEnabled(true); 597webView.getSettings().setDomStorageEnabled(true);</code></pre><div role="button" aria-label="Kopiere den Code" class="btncopy" data-clipboard-target="#copy6abe33aad40ac"><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/242-copy-morph-outline-edited.json" 598 target= "" 599 trigger="hover" 600 colors="primary:#034575,secondary:#034575" 601 style="width:40px;height:40px;"> 602 </lord-icon><div class="tooltiptext" role="alert">kopiert!</div></div></div><div class="infobox" ><lord-icon class="lord-icon" src="https://oewa.at/wp-content/themes/oewa/img/icons/425-exclamation-mark-bubble-outline-edited.json" 603 target= ".infobox" 604 trigger="hover" 605 colors="primary:#034575,secondary:#034575" 606 style="width:65px;height:65px;"> 607 </lord-icon><div><p>Es ist darauf zu achten, dass vor dem Aufruf dieser Methoden eine Session der jeweiligen pseudonyme Library initialisiert wurde! Ãbergabe der App-Identifikationsmerkmale in die <em>WebView</em> Nutzung.</p> 608</div></div> 609<p>Für die Ãbergabe der App-Identifikationsmerkmale aus dem App-Rahmen in die WebView Nutzung stellt INFOnline die JavaScript-Funktion iom.setMultiIdentifier(identifier:string) bereit. identifier:string bezeichnet die String-Variable, in die das Ergebnis des Funktionsaufrufes gespeichert wurde. Diese Funktion muss bei jedem Aufruf einer URL im WebView aufgerufen werden.</p> 610 </main> 611 <aside> 612 </aside> <div class="clear"></div> 613 </div> 614<footer class="footer"> 615 <div class="footer-content"> 616 <div class="left"> 617 <div id="footer1"> 618 <a href="https://oewa.at"><img width="118" height="39" src="https://oewa.at/wp-content/themes/oewa/img/svg/oewa-logo-invers.svg" alt="ÃWA â Ãsterreichische Webanalyse"></a> 619 620 </div> 621 <div id="footer2"> 622 <div class="foote1 footer-block"><h2 class="h4" style="color: white;">ÃWA Newsletter</h2></div><div class="foote1 footer-block"> 623<p class="wp-block-paragraph">Der schnellste Weg zu den aktuellen Zahlen.</p> 624</div><div class="foote1 footer-block"> 625<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex"> 626<div class="wp-block-button"><a class="wp-block-button__link wp-element-button" href="/newsletter">Zum Newsletter anmelden</a></div> 627</div> 628</div> </div> 629 </div> 630 <div class="right"> 631 <a href="#" id="totop" aria-label="Nach oben scrollen" class="scroll-top"></a> 632 <div id="footer3"> 633 <div class="footer2 footer-block"><div class="menu-footer-menue-container"><ul id="menu-footer-menue" class="menu" aria-label="Footer-Navigation Rechtliches"><li id="menu-item-3255" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3255"><a href="https://oewa.at/sitemap/">Sitemap</a></li> 634<li id="menu-item-47" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-47"><a href="https://oewa.at/datenschutz/">Datenschutz</a></li> 635<li id="menu-item-46" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-46"><a href="https://oewa.at/impressum/">Impressum</a></li> 636</ul></div> <div class="clear"></div></div> </div> 637 </div> 638 </div> 639</footer> 640</div> 641<!-- script> 642 var loadCSSFiles = function() { 643 var links = ["https://oewa.at/wp-content/themes/oewa/css/main.css", "https://oewa.at/wp-content/themes/oewa/css/default.min.css", "https://oewa.at/wp-content/themes/oewa/css/slick.min.css"], 644 headElement = document.getElementsByTagName("head")[0], 645 linkElement, i; 646 for (i = 0; i < links.length; i++) { 647 linkElement = document.createElement("link"); 648 linkElement.rel = "stylesheet"; 649 linkElement.href = links[i]; 650 headElement.appendChild(linkElement); 651 } 652 }; 653 654 var raf = requestAnimationFrame || mozRequestAnimationFrame || webkitRequestAnimationFrame || msRequestAnimationFrame; 655 if (raf) { 656 raf(loadCSSFiles); 657 } else { 658 window.addEventListener("load", loadCSSFiles); 659 } 660</script --> 661
662<script src="https://oewa.at/wp-content/themes/oewa/js/jquery.min.js" defer></script>
vendor: 2 bytes, line 662
662
663<script src="https://oewa.at/wp-content/themes/oewa/js/jquery.lazy.min.js" defer></script>
vendor: 2 bytes, line 663
663
664<script src="https://oewa.at/wp-content/themes/oewa/js/lord-icon.min.js" defer></script>
vendor: 2 bytes, line 664
664
665<script src="https://oewa.at/wp-content/themes/oewa/js/slick.min.js" defer></script>
vendor: 2 bytes, line 665
665
666<script src="https://oewa.at/wp-content/themes/oewa/js/highlight.min.js" defer></script>
vendor: 2 bytes, line 666
666
667<script src="https://oewa.at/wp-content/themes/oewa/js/clipboard.min.js" defer></script>
vendor: 2 bytes, line 667
667
668<script src="https://oewa.at/wp-content/themes/oewa/js/main.min.js" defer></script>
vendor: 2 bytes, line 668
668
669<script type="speculationrules"> 670{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/oewa/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 671</script>
vendor: 1 bytes, line 671
671
672<script> 673(function($){ 674 if (typeof acf === 'undefined') return; 675 676 var keys = ["field_69495f961847e","field_694955772c39c"]; 677 678 // Ensure minDate is applied + fallback disable before minDate 679 acf.add_filter('date_picker_args', function(args, $field){ 680 var key = $field.data('key'); 681 if (!key || keys.indexOf(key) === -1) return args; 682 683 var ts = $field.closest('.acf-field').data('kom-min-ts'); 684 ts = parseInt(ts, 10); 685 if (!ts) return args; 686 687 var min = new Date(ts); 688 min.setHours(0,0,0,0); 689 690 args.minDate = min; 691 692 var original = args.beforeShowDay; 693 args.beforeShowDay = function(date){ 694 var d = new Date(date.getTime()); 695 d.setHours(0,0,0,0); 696 697 var ok = (d.getTime() >= min.getTime()); 698 699 if (typeof original === 'function') { 700 var res = original(date); 701 ok = ok && res[0]; 702 return [ok, res[1] || '', ok ? (res[2] || '') : 'Zu früh']; 703 } 704 return [ok, '', ok ? '' : 'Zu früh']; 705 }; 706 707 return args; 708 }); 709 710 // If empty, force-select the most recent possible date (the earliest allowed date) 711 acf.add_action('ready append', function($el){ 712 keys.forEach(function(key){ 713 var $field = acf.getField(key, $el); 714 if (!$field) return; 715 716 var $input = $field.$input(); 717 if (!$input || !$input.length) return; 718 719 // Only set if empty 720 if ($input.val()) return; 721 722 var ts = $field.$el.closest('.acf-field').data('kom-min-ts'); 723 ts = parseInt(ts, 10); 724 if (!ts) return; 725 726 var min = new Date(ts); 727 min.setHours(0,0,0,0); 728 729 // Set both the visible datepicker date and the stored Ymd value 730 try { 731 $input.datepicker('setDate', min); 732 } catch (e) {} 733 734 var yyyy = min.getFullYear().toString(); 735 var mm = (min.getMonth() + 1).toString().padStart(2, '0'); 736 var dd = min.getDate().toString().padStart(2, '0'); 737 738 $input.val(yyyy + mm + dd).trigger('change'); 739 }); 740 }); 741 742})(jQuery); 743</script>
743 744
744<script> 745 (function($){ 746 if (typeof acf === 'undefined') return; 747 748 var FIELD_KEY_DA_ON = 'field_69495f631847b'; // force ON when .da present 749 var FIELD_KEY_NO_DA = 'field_69495f6f1847c'; // force ON ONLY when .no-da present, otherwise toggleable 750 751 function hasDA() { return $('.kom-form.da').length > 0; } 752 function hasNoDA() { return $('.kom-form.no-da').length > 0; } 753 754 function lockTrueFalse(field, shouldBeOn) { 755 var $cb = field.$input(); 756 if ($cb && $cb.length) { 757 $cb.prop('checked', !!shouldBeOn); 758 $cb.prop('disabled', true); 759 760 $cb.off('.daLock').on('click.daLock keydown.daLock', function(e){ 761 e.preventDefault(); 762 e.stopImmediatePropagation(); 763 return false; 764 }); 765 } 766 767 // ACF hidden input (name="acf[...]" type="hidden") must reflect enforced state 768 var $hidden = field.$el.find('input[type="hidden"][name^="acf["]'); 769 if ($hidden.length) { 770 $hidden.val(shouldBeOn ? '1' : '0'); 771 } 772 773 field.$el.find('label').css('pointer-events','none'); 774 } 775 776 function unlockTrueFalse(field) { 777 var $cb = field.$input(); 778 if ($cb && $cb.length) { 779 $cb.prop('disabled', false); 780 $cb.off('.daLock'); // remove our block handlers 781 } 782 field.$el.find('label').css('pointer-events','auto'); 783 // Do not overwrite hidden input when unlocked; ACF will manage it from user interaction. 784 } 785 786 function syncAll() { 787 // Field A: keep existing behavior (forced ON when DA present, else forced OFF) 788 var fA = acf.getField(FIELD_KEY_DA_ON); 789 if (fA) { 790 lockTrueFalse(fA, hasDA()); 791 } 792 793 // Field B: ONLY enforce when NO-DA. 794 var fB = acf.getField(FIELD_KEY_NO_DA); 795 if (fB) { 796 if (hasNoDA()) { 797 lockTrueFalse(fB, true); 798 } else { 799 // DA present -> user-toggleable; do not force a value 800 unlockTrueFalse(fB); 801 } 802 } 803 } 804 805 function initObserverOnce() { 806 if (initObserverOnce._observer) return; 807 808 initObserverOnce._observer = new MutationObserver(function(){ 809 syncAll(); 810 }); 811 812 initObserverOnce._observer.observe(document.documentElement, { 813 subtree: true, 814 childList: true, 815 attributes: true, 816 attributeFilter: ['class'] 817 }); 818 } 819 820 acf.addAction('ready', function(){ 821 syncAll(); 822 initObserverOnce(); 823 }); 824 acf.addAction('append', function(){ 825 syncAll(); 826 initObserverOnce(); 827 }); 828 829 })(jQuery); 830 </script>
830 831 </body> 832</html> 833
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.