WebView-дегі келісім: native және веб келісімін синхронды ұстау
Қос баннер мәселесі
Көптеген қосымшалар ішінара native, ішінара веб. Ойын дүкенін, жаңалықтарды немесе анықтама беттерін WebView-да көрсетеді; утилита қосымша өз сайтындағы мақалаларды көрсетеді; гибридті қосымша интерфейсінің көп бөлігін веб-контентпен орайды. Әр жақтың өз келісім тетігі бар: native қосымша қосымша ішіндегі CMP немесе SDK қолданады, ал веб беттер веб CMP жүктейді. Олар байланыстырылмаса, пайдаланушыдан екі рет сұралады, бір жерде жасалған таңдаулар екіншісінде елемеледі және WebView ішінен жарнама сұраулары қате сигналдармен кетеді.
Бұл нұсқаулық native және веб келісімін қалай үйлестіруді қамтиды, сонда пайдаланушылар бір рет жауап береді және әр жарнама сұрауы бірдей шешімді алып жүреді.
Әр жақ келісімді қайда сақтайды
Native
IAB TCF қосымша ішіндегі CMP келісімді қалай сақтайтынын анықтайды: iOS-та NSUserDefaults, Android-та SharedPreferences ішінде, IABTCF_TCString, IABTCF_gdprApplies және IABTCF_PurposeConsents сияқты стандартты кілттермен. Жарнама SDK-лары бұл кілттерді тікелей оқиды. IAB GPP IABGPP_HDR_GppString сияқты IABGPP_ префиксті ұқсас кілттерді анықтайды.
Веб
Веб CMP әдетте шешімін сайт домені үшін бірінші тарап cookie файлдарында немесе жергілікті жадта сақтайды және оны __tcfapi мен __gpp JavaScript функциялары арқылы ұсынады. Беттегі жарнама тегтері native жадты емес, осы функцияларды шақырады.
Олқылық
WebView-лардың құрылғы браузерінен және қосымшаның native баптауларынан бөлек өз cookie және жад кеңістігі бар. iOS-та тұрақты емес деректер қоймасын қолданатын WKWebView жабылғанда бәрін ұмытады. Сіз көпір салмайынша екі жақ арасында ештеңе ағылмайды.
Бір ақиқат көзін таңдаңыз
Бірінші шешім — келісім қай жаққа тиесілі екені. Көптеген қосымшалар үшін жауап — native CMP, себебі:
- Ол кез келген WebView ашылғанға дейін бірінші жұмыс істейді.
- Әдетте кіріс көбін әкелетін native жарнама SDK-лары native жадты оқиды.
- iOS-та оны App Tracking Transparency сұрауымен үйлестіруге болады.
Интерфейсі түгелдей веб-контенттен тұратын гибридті қосымшалар үшін алдымен веб тәсілі мағыналы болуы мүмкін, бірақ онда native SDK-лар үшін шешімді native жадқа қайта жазу керек.
Native келісімді WebView-ға беру
Native ақиқат көзі болғанда, WebView бірдей шешімді көруі керек. Кең таралған үлгілер:
__tcfapiіске асырылымын енгізіңіз. Бет скрипттері жұмыс істемес бұрын__tcfapi(қажет болса__gpp) функциясын анықтайтын және шақыруларға native жадтан оқылған TC string және мәндермен жауап беретін шағын скрипт енгізіңіз. Беттегі жарнама тегтері native шешімді стандартты API арқылы алады.- Веб баннерді басыңыз. Веб CMP-ді бет қосымшаңыздың ішінде жүктелгенде, мысалы, сұрау параметрі немесе өзіңіз басқаратын арнайы user agent белгісі негізінде, жасырын қалатындай конфигурациялаңыз. Әйтпесе пайдаланушы екінші баннерді көреді.
- Жолды жүктеу кезінде беріңіз. Кейбір веб CMP-лер іске қосу кезінде бар келісім жолын қабылдап, оны игере алады. Қолдау көрсетілетін әдістер үшін веб CMP-іңіздің құжаттамасын қараңыз.
Қандай үлгіні қолдансаңыз да, пайдаланушы таңдауды native баптаулар экранында өзгерткенде енгізілген мәндердің тек қосымшаның келесі іске қосылуында емес, бірден жаңартылатынына көз жеткізіңіз.
Веб келісімді native жаққа қайтару
Егер пайдаланушылар келісімді WebView ішінде, мысалы, құпиялылық баптаулары беті арқылы өзгерте алса, қосымша бұл туралы білуі керек. JavaScript көпірін қолданыңыз: iOS-та хабарлама өңдеушісі, Android-та JavaScript интерфейсі. Веб жағы __tcfapi('addEventListener', ...) арқылы тыңдайды және жаңа жолды стандартты кілттерді жазатын native кодқа жібереді. Жазар алдында WebView-дан келген кірісті тексеріңіз; тек өз контентіңізден келген хабарларды қабылдаңыз.
WebView-дағы жарнамалар
WebView-да көрсетілетін жарнамалар — веб жарнамалар. Жарнама SDK-сы екеуін байланыстыру жолын бермесе, олар келісімді native жадтан емес, беттен оқиды. Мысалы, Google-дың Mobile Ads SDK-сы WebView-лардың ішіндегі жарнамалар қосымшадан сигналдарды қолдана алуы үшін WebView-ларды тіркейтін API ұсынады; SDK-ңыз үшін ағымдағы құжаттаманы қараңыз. Кез келген жағдайда, WebView-дан келген жарнама сұраулары native жарнама сұраулармен бірдей TC немесе GPP жолын алып жүретінін тестпен растаңыз.
Тестілеу бақылау тізімі
- Жаңа орнату: екі емес, бір келісім сұрауы.
- Native CMP-де барлығынан бас тартыңыз, WebView ашыңыз, жарнама сұрауларын тексеріңіз: жол бас тартуды көрсетуі керек.
- Native баптауларда келісімді өзгертіңіз, ашық WebView-ға оралыңыз: бет жаңа шешімді көруі керек.
- Егер веб баптаулар болса, келісімді сонда өзгертіп, native кілттердің жаңартылатынын растаңыз.
- Қосымшаны жабыңыз да, қайта іске қосыңыз: шешімдер екі жақта да сақталады.
- WebView жады әрқайсысында әртүрлі жұмыс істейтіндіктен, iOS-та да, Android-та да тестілеңіз.
Негізгі қорытындылар
- Native және WebView келісімі бөлек қоймаларда тұрады және әдепкі бойынша синхрондалмайды.
- Бір ақиқат көзін таңдаңыз; көптеген қосымшалар үшін бұл native CMP.
- Native келісімді енгізілген
__tcfapiнемесе__gppарқылы веб-контентке ұсыныңыз және веб баннерді жасырыңыз. - Веб өзгерістерін native жадқа қайтару үшін JavaScript көпірін қолданыңыз.
- WebView-дан келген жарнама сұраулары native сұраулармен бірдей келісім жолын алып жүретінін тексеріңіз.