PageSourceSearch

https://oewa.at/tech-support/messung-hybrider-apps/

html oewa.at collected 2026-10-01 10:19:25 UTC 85,241 bytes, 833 lines download raw bytes

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 &#038; 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 &#8211; mit integrierter IOMbLibrary &#8211; 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>&nbsp;</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> &amp; <strong>ÖWA-Messung</strong>!<br />
336Für eine parallele hybride Messung von <strong>INFOnline Measurement</strong> (DE) &amp; <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 Messdatensä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 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 hier beschrieben sind.</p>
359</div></div>
360<p>Um die Messung von Hybrid-Apps zu ermö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 regulä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 verhä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 &#8211; mit integrierter IOMbLibrary &#8211; 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 kö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 kö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 &amp; ÖWA-Messung</strong>!</p>
473<p>Als Basis für eine parallele hybride Messung von <strong>INFOnline Measurement</strong> (DE) &amp; <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, können erfasst und mit den Messdaten des nativen App-Rahmens zusammengefü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 hierfü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 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>
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 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 hier beschrieben sind.</p>
508</div></div>
509<p>Um die Messung von Hybrid-Apps zu ermöglichen, mü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 regulä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 verhä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 &#8211; mit integrierter IOMbLibrary &#8211; 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">&lt;de.infonline.lib.IOLWebView 
533         android:id="@+id/webview" 
534         android:layout_width="match_parent" 
535         android:layout_height="match_parent" /&gt;
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 &#8222;Hybride Messung&#8220;.</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 &#8222;MultiIdentifier&#8220; 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.