The following has evaluated to null or missing: ==> FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale ) [in template "252001#252047#252845" at line 132, column 37] ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: dMTJsonObject = FrontendService.media... [in template "252001#252047#252845" at line 132, column 21] ----
1<#-- used @ Veranstaltung-Detailseite Intro
2 used @ Publikation-Detailseite Intro
3-->
4
5<#--
6Web content templates to display teaser on thema detail page
7
8Generic template for detail pages Intro / Teaser element
9-->
10<#--
11Display the current page title
12-->
13<#include "${fullTemplatesPath}/functions/relatedContentUtil.ftl" />
14<#include "${fullTemplatesPath}/macros/debugging.ftl" />
15
16<#include "${fullTemplatesPath}/macros/page-modules/PMIntro.ftl" />
17<#include "${fullTemplatesPath}/macros/atomic-modules/AMPublicationCarousel.ftl" />
18<#include "${fullTemplatesPath}/macros/atomic-modules/AMMetadata.ftl" />
19<#include "${fullTemplatesPath}/macros/atomic-modules/AMDatetime.ftl" />
20
21
22<#--
23 renders the Intro for nearly all Pages
24 TODO: remove Share? (was in the designs, but not anymore?)
25 TODO: check if languageSelect/filter are working (js)
26
27 - portletId
28 - data = {
29 "media": string (src from image),
30 "category": string,
31 "title": string,
32 "author": string,
33 "subheadline": string,
34 "copy": string,
35 "filter": {
36 "id": string,
37 "name": string,
38 "entries": Array<Object> ({key:value}),
39 },
40 "languageSelect": {
41 "id": string,
42 "name": string,
43 "entries": Array<Object> ({key:value}),
44 },
45 "meta": {
46 "pos"; string (top/bottom)
47 "date": string,
48 "hash": string,
49 "info": string, (url)
50 },
51 "share" : {
52 "login": string,
53 "print": string,
54 "mail": string,
55 "multishare": string?? (tbd)
56 }
57 - AMMetadata: macro
58 - position: String ("top") -> defines wether the meta-data should be rendered above or below the intro-content
59 }
60-->
61
62<#assign
63 JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")
64
65 ServiceContext = staticUtil["com.liferay.portal.kernel.service.ServiceContextThreadLocal"].getServiceContext()
66 DLAPP = serviceLocator.findService("com.liferay.document.library.kernel.service.DLAppLocalService")
67
68 themeDisplay = ServiceContext.getThemeDisplay()
69 editmode = FrontendService.user.isPrivilegedUser(themeDisplay)
70
71 languageId = themeDisplay.getLocale()
72 groupId = themeDisplay.getScopeGroupId()
73 currentUrl = themeDisplay.getURLCurrent()
74
75 layout = themeDisplay.getLayout()
76 layouttpl = layout.getTypeSettingsProperties().getProperty("layout-template-id")
77/>
78
79<#setting locale="${languageId}">
80
81<#-- get article from url -->
82
83<#assign entry = FrontendService.article.getArticleToUrl(currentUrl, groupId?number)! >
84
85
86<#if entry?has_content>
87
88 <#if entry.resourcePrimKey??>
89 <#assign primaryKey = entry.resourcePrimKey?number >
90 <#elseif entry.classPK??>
91 <#assign primaryKey = entry.classPK?number >
92 </#if>
93
94 <#assign
95 jsonString = FrontendService.article.getWebcontent(primaryKey)
96 json = FrontendService.json.parseAsJson(jsonString)
97 availablelanguages = FrontendService.article.getAssetEntryToUrl(primaryKey).getAvailableLanguageIds()
98
99 title = entry.getTitle(languageId)
100 data = {
101 "title": title
102 }
103 />
104 <@debugJsonString jsonString "ADT_KASDE_DYNAMIC_INTRO" />
105
106 <#if hasContent('untertitel', languageId, json)>
107 <#assign data = data + { "subheadline": getValueForLanguage('untertitel', languageId, json, "first") } >
108 </#if>
109
110 <#if hasContent('detailsubtitle', languageId, json)>
111 <#assign data = data + { "detailsubtitle": getValueForLanguage('detailsubtitle', languageId, json, "first") } >
112 </#if>
113
114 <#if hasContent('beschreibung', languageId, json)>
115 <#assign data = data + { "copy": getValueForLanguage('beschreibung', languageId, json, "first") } >
116 </#if>
117
118 <#-- fill meta data -->
119 <#assign meta = {} />
120
121 <#-- PUBLIKATIONEN DETAIL -->
122 <#if layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL")>
123
124 <#if hasContent('coverDMTKASDEMEDIUM', languageId, json)>
125 <#assign
126 coverBildString = getValueForLanguage('coverDMTKASDEMEDIUM', languageId, json, "first")
127 />
128
129 <#if coverBildString?has_content>
130 <#assign
131 coverBild = FrontendService.json.parseAsJson(coverBildString)
132 dMTJsonObject = FrontendService.media.getDMTJsonObject( coverBild.groupId?number, coverBild.uuid, locale )
133 linkToDMT = FrontendService.media.getImageURLForAMConfiguration('hd-resolution',coverBild.groupId?number, coverBild.uuid )
134 data = data + { "media": linkToDMT, "meta" : dMTJsonObject }
135 />
136 <#if dMTJsonObject.altText?? >
137 <#assign data = data + {"alt" : dMTJsonObject.altText} />
138 </#if>
139 <#if dMTJsonObject.quelle??>
140 <#assign meta = meta + { "quelle": dMTJsonObject.quelle } />
141 </#if>
142 </#if>
143 <#-- uncomment to display pdf cover as Intro Image
144 <#elseif hasContent('document_pdfDMTBASICDOCUMENT', languageId, json)>
145 <#assign
146 pdfDocument = getValueForLanguage('document_pdfDMTBASICDOCUMENT', languageId, json, "first")
147 fileEntry = FrontendService.media.getFileEntry(pdfDocument.uuid, groupId?number)!/>
148 <#if fileEntry?has_content>
149 <#assign
150 linkToThumbnail = FrontendService.link.getThumbnailSrc(fileEntry , themeDisplay)
151 data = data + { "media": linkToThumbnail }
152 />
153 </#if>
154 -->
155 </#if>
156
157 <#assign
158 meta = meta + { "orderInfo": "true" }
159 verbundJournalArticle = FrontendService.publication.getVerbundToPublikation( entry )!""
160 />
161
162
163
164 <#if hasContent('erscheinungsdatum', languageId, json)>
165 <#assign
166 erscheinungsdatum = getValueForLanguage('erscheinungsdatum', languageId, json, "first")
167 />
168 <#if erscheinungsdatum?has_content >
169 <#assign
170 erscheinungsdatumFormatted = FrontendService.date.getDateFormatLong( erscheinungsdatum, languageId )
171 meta = meta + { "date": erscheinungsdatumFormatted }
172 />
173 </#if>
174 </#if>
175
176 <#if verbundJournalArticle?has_content>
177 <#assign
178 verbundJsonString = FrontendService.article.getWebcontent(verbundJournalArticle.resourcePrimKey)
179 verbundJson = FrontendService.json.parseAsJson(verbundJsonString)
180 laufendenummer = getValueForLanguage('laufendenummer', languageId, verbundJson, "first")
181 coverImg = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, verbundJson, "first")
182 />
183 <@debugJsonString verbundJsonString "ADT_KASDE_DYNAMIC_INTRO-verbundJournalArticle" />
184 <#assign meta = meta + { "laufendenummer": laufendenummer } >
185
186 <#if coverImg?has_content && coverImg.url?has_content >
187 <#assign meta = meta + { "coverImg": coverImg.url } >
188 </#if>
189 </#if>
190
191
192 <#if meta?has_content>
193 <#assign data = data + {"meta": meta } >
194 </#if>
195
196 </#if>
197 <#-- PUBLIKATIONEN DETAIL END -->
198
199
200 <#-- VERANSTALTUNGEN DETAIL -->
201 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL")>
202 <#assign
203 friendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, languageId, groupId)!""
204 links = []
205 />
206 <#if availablelanguages?has_content && friendlyUrl?has_content>
207 <#if (availablelanguages?size > 1) >
208 <#list availablelanguages as language>
209 <#assign
210 defaultLanguage = "de_DE"
211 defaultLocale = FrontendService.language.getLocaleByKey(defaultLanguage)
212 linkLocale = (FrontendService.language.getLocaleByKey(language))!defaultLocale
213 langFriendlyUrl = FrontendService.article.getFriendlyUrl(primaryKey, linkLocale, groupId)
214
215 link = {
216 "key": language!defaultLanguage,
217 "value": linkLocale.getDisplayLanguage(languageId),
218 "url": "/c/portal/update_language?p_l_id=" +
219 layout.plid + "&redirect=" + langFriendlyUrl +
220 "&languageId=" + language
221 }
222 />
223 <#if language == languageId>
224 <#assign link = link + { "selected": "true" } >
225 </#if>
226 <#assign links = links + [link]>
227 </#list>
228 <#assign
229 data = data + {
230 "languageSelect": {
231 "id": "languageSelectRedirect",
232 "name": "languageselectRedirect",
233 "entries": links,
234 "label": languageUtil.get(languageId, "diese.veranstaltung.ist.in.weiteren.sprachen.verfuegbar")
235 }
236 }
237 />
238 </#if>
239 </#if>
240 </#if>
241
242 <#if hasContent('erscheinungsdatum', languageId, json)>
243 <#assign
244 startdate = getValueForLanguage('erscheinungsdatum', languageId, json, "first")
245 meta = meta + { "start": startdate?date.iso, "end": "" }
246 />
247 </#if>
248
249 <#if hasContent('startdatum', languageId, json)>
250 <#assign
251 startdate = getValueForLanguage('startdatum', languageId, json, "first")
252 meta = meta + { "start": startdate?date.iso, "end": "" }
253 />
254 </#if>
255
256 <#if hasValue('einfuehrungText', locale, json)>
257 <#assign data = data + { "einfuehrungText" : getValueForLanguage('einfuehrungText', locale, json, "first") } >
258 <#elseif hasValue(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first")>
259 <#assign data = data + { "einfuehrungText" : getValueForLanguage(FrontendService.article.getFieldNameByReferenceName(primaryKey, 'einfuehrungText'), locale, json, "first") } >
260 </#if>
261
262 <#if hasContent('endedatum', languageId, json)>
263 <#assign
264 enddate = getValueForLanguage('endedatum', languageId, json, "first")
265 meta = meta + { "end": enddate?date.iso }
266 />
267 </#if>
268
269 <#if hasContent('startzeit', languageId, json)>
270 <#assign
271 startzeit = getValueForLanguage('startzeit', languageId, json, "first")
272 />
273 <#if startzeit?has_content >
274 <#assign meta = meta + { "startzeit": startzeit } />
275 </#if>
276 </#if>
277
278 <#if hasContent('endezeit', languageId, json)>
279 <#assign
280 endezeit = getValueForLanguage('endezeit', languageId, json, "first")
281 meta = meta + { "endezeit": endezeit }
282 />
283 </#if>
284
285 <#if hasContent('ortWCSKASDEORT', languageId, json)>
286 <#assign
287 ortWCSKASDEORT = FrontendService.json.parseAsJson(getValueForLanguage('ortWCSKASDEORT', languageId, json, "first"))
288 ortWCSKASDEORTPrimaryKey = ortWCSKASDEORT.classPK?number
289 ortWCSKASDEORTWebContent = FrontendService.article.getWebcontentByPk(ortWCSKASDEORTPrimaryKey)!""
290 />
291 <#if ortWCSKASDEORTWebContent?has_content >
292 <#assign
293 ortWCSKASDEORTTitle = ortWCSKASDEORTWebContent.getTitle(languageId)!""
294 />
295 <#if ortWCSKASDEORTTitle?has_content >
296 <#assign
297 meta = meta + { "ortWCSKASDEORT": ortWCSKASDEORTTitle }
298 />
299 </#if>
300 </#if>
301 </#if>
302
303
304 <#if hasContent('veranstaltungsnummer', languageId, json)>
305 <#assign
306 verauuid = getValueForLanguage('veranstaltungsnummer', languageId, json, "first")
307 meta = meta + { "verauuid": verauuid }
308 />
309 </#if>
310
311
312 <#if (data.meta)?has_content >
313 <#assign meta = data.meta />
314 </#if>
315
316 <#if !(data.media)?has_content && hasContent('mediumDMTKASDEMEDIUM', languageId, json)>
317 <#assign
318 medium = getValueForLanguage('mediumDMTKASDEMEDIUM', languageId, json, "first")
319 mediaData = getRelatedMediaObject(medium, themeDisplay, languageId, FrontendService, "hd-resolution")
320 />
321 <#assign data = data + { "media": mediaData.url , "meta" : mediaData.meta} >
322
323
324 <#if mediaData.meta?? && mediaData.meta.quelle??>
325 <#assign meta = meta + data.meta + { "quelle": mediaData.meta.quelle } />
326 </#if>
327 </#if>
328
329
330 <#if meta?has_content>
331 <#assign data = data + {"meta": meta } >
332 </#if>
333
334 <#-- END fill meta data -->
335
336 <#if hasContentForSequence('autorenWCSKASDEPERSON', languageId, json)>
337 <#assign
338 journalArticles = getValueForLanguageAnsprechpartner('autorenWCSKASDEPERSON', languageId, json)
339 authors = []
340 />
341 <#list journalArticles as articleString>
342 <#assign article = FrontendService.json.parseAsJson(articleString) />
343 <#if article?has_content && article?is_hash && article.classPK??>
344 <#assign articleDereferenced = FrontendService.person.resolveContactInstanceToPerson(article, languageId)!"" />
345 <#if articleDereferenced?has_content >
346 <#assign
347 author = ""
348 articlePrimaryKey = articleDereferenced.classPK?number
349 articleJsonString = FrontendService.article.getWebcontent(articlePrimaryKey)
350 articleJson = FrontendService.json.parseAsJson(articleJsonString)
351 />
352 <@debugJsonString articleJsonString "ADT_KASDE_DYNAMIC_INTRO-autorenWCSKASDEPERSON" />
353 <#if hasValue('anredetitel', languageId, articleJson)>
354 <#assign author = author + getValueForLanguage('anredetitel', languageId, articleJson, " ") + " ">
355 </#if>
356 <#if hasValue('vorname', languageId, articleJson)>
357 <#assign author = author + getValueForLanguage('vorname', languageId, articleJson, " ") + " ">
358 </#if>
359 <#if hasValue('nachname', languageId, articleJson)>
360 <#assign author = author + getValueForLanguage('nachname', languageId, articleJson, " ") + " ">
361 </#if>
362
363 <#attempt>
364 <#assign href = FrontendService.article.getFriendlyUrl(articlePrimaryKey, languageId, groupId)!"#" >
365 <#recover>
366 <#assign href = "#" >
367 </#attempt>
368 <#if href?has_content && href != "#" && href != "/_404">
369 <#assign author = '<a href="' + href + '">' + author?trim + '</a>'>
370 </#if>
371
372 <#assign authors = authors + [author?trim]>
373 </#if>
374 </#if>
375 </#list>
376 <#if authors?has_content>
377 <#assign data = data + { "author": authors?join(", ") } >
378 </#if>
379 </#if>
380
381 <#if layouttpl?contains("LAYOUT_KASDE_VERANSTALTUNGEN_DETAIL") >
382 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "VERANSTALTUNGSTYP")! >
383 <#if categories?has_content && categories[0]?has_content >
384 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } >
385 </#if>
386
387 <#if hasContent('ausgebucht', languageId, json)>
388 <#assign data = data + { "ausgebucht" : getValueForLanguage('ausgebucht', languageId, json, "first") }>
389 </#if>
390
391 <#if hasContent('storniert', languageId, json)>
392 <#assign data = data + { "storniert" : getValueForLanguage('storniert', languageId, json, "first") }>
393 </#if>
394
395 <#elseif layouttpl?contains("LAYOUT_KASDE_PUBLIKATIONEN_DETAIL") >
396 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "PUBLIKATIONSREIHE")! >
397 <#if categories?has_content && categories[0]?has_content >
398 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } >
399 </#if>
400 <#else>
401 <#assign categories = FrontendService.category.getCategoriesToArticle(primaryKey, "THEMA")! >
402 <#if categories?has_content && categories[0]?has_content >
403 <#assign data = data + { "category": categories[0].getTitle(languageId,true)! } >
404 </#if>
405 </#if>
406
407
408 <#assign
409 languages = []
410 />
411
412 <#attempt>
413 <#if json["document_pdfDMTBASICDOCUMENT"]?? >
414 <#if availablelanguages?has_content>
415 <#list availablelanguages as pdf_language>
416 <#assign
417 docRefJson = getValueForLanguage('document_pdfDMTBASICDOCUMENT', pdf_language, json, "first")
418 docRef = FrontendService.json.parseAsJson(docRefJson)
419 />
420 <#if docRef?is_hash && pdf_language != languageId >
421 <#assign
422 lang = FrontendService.language.getLocaleByKey(pdf_language)!""
423 docGroupId = docRef["groupId"]?number
424 docUuid = docRef["uuid"]
425 dMTJsonObject = FrontendService.media.getDMTJsonObject( docGroupId, docUuid, locale )
426 dMTLink = FrontendService.media.getLinkToDMT( dMTJsonObject )
427 />
428 <#if lang?has_content>
429 <#assign
430 languages = languages + [
431 {
432 "key": pdf_language,
433 "value": FrontendService.language.getLocaleByKey(pdf_language).getDisplayLanguage(),
434 "url": dMTLink
435 }]
436 />
437 </#if>
438 </#if>
439 </#list>
440 </#if>
441 </#if>
442 <#recover>
443 </#attempt>
444
445 <#if (languages?size > 0)>
446 <#attempt>
447 <#assign
448 data = data + { "languageSelect": {
449 "id": "languageSelect",
450 "name": "languageselect",
451 "entries": languages,
452 "documents": "",
453 "button": "true"
454 }}
455 />
456 <#recover>
457 </#attempt>
458 </#if>
459
460 <@PMIntro "ADT_KASDE_DYNAMIC_INTRO" data AMMetadata AMDatetime "bottom" />
461 ${FrontendService.article.getEditArticleHtml(primaryKey, themeDisplay)}
462
463 <#if data.meta?has_content>
464 <#if data.meta.laufendenummer?has_content !isACColorScheme() && !isVLCColorScheme() && !isDPMColorScheme()>
465 <div>
466 <div id="publicationVerbundPagination">
467 <@AMPublicationCarousel data.meta.laufendenummer data.meta.date data.meta.coverImg />
468 </div>
469 </div>
470 </#if>
471 </#if>
472
473<#elseif (editmode?? && editmode)>
474 <@errorMessage languageUtil.get(locale, "kein.journalArticle.gefunden") "ADT_KASDE_DYNAMIC_INTRO" layouttpl currentUrl />
475</#if>
In China 2016 als Unterhaltungs-App gestartet, ist TikTok die am schnellsten wachsende Videoplattform weltweit und das drittgrößte soziale Netzwerk hinter Facebook und Instagram. Seit 2018 hat TikTok die Nutzerzahlen versiebzehnfacht. Die App der Muttergesellschaft ByteDance Ltd (wertvollstes nicht börsennotiertes Unternehmen der Welt) hat eine Milliarde aktive User und weltweit die jüngste Zielgruppe. Möchte man 13- bis 24-Jährige erreichen, ist die App auch in Deutschland unverzichtbar, sagt Martin Fuchs, Politikberater für Social Media. 90 Prozent der Jugendlichen hierzulande kennen TikTok (IZI 2021). Edeka startet 2022 seine Ausbildungskampagne auf TikTok, die ARD erreicht dort mit der Tagesschau 1,2 Millionen Jugendliche.
Politische Meinungsbildung über TikTok
Seit 2020 hat sich die Videoplattform weltweit zum Ort politischer Kommunikation von Teenagern entwickelt: Die politische Meinungsbildung der Erstwählenden in den USA 2020 erfolgte primär über TikTok, in Deutschland zeichnete sich vor der Bundestagswahl 2021 diese Entwicklung als Trend ab. Als Klimawandelpartei (Fiskalpolitik statt Verzicht) erschien die FDP, als Verbotspartei (Fleischkonsum, Motorroller) die Grünen. Seit dem Beginn des Kriegs in der Ukraine veröffentlichen junge Menschen in der Ukraine Hunderte Videos vom Krieg, die App gilt weltweit als eine der wichtigsten Informationsplattformen zum Krieg. Von allen sozialen Netzwerken sei auf TikTok bei weitem die größte Menge an Kriegsinhalten zu finden, so die New York Times. Ein Blick auf aktuelle TikTok-Videos über den Krieg in der Ukraine zeigt, dass diese Videos oft mit dem Hashtag #WarTok gepostet werden. WarTok könne als inoffizieller zweiter Name der App bezeichnet werden, schreibt die FAZ.
Leichte Bedienung ermöglicht authentische und emotionale Videos
Die oft kritisierte App (China sammelt nachweislich die Daten der User), auf der junge Menschen ihre Themen mit Kurzvideos präsentieren, hat die politische Kommunikation revolutioniert. Die für Digital Natives leichte Bedienung ermöglicht authentische und emotionale Videos, die in 50 Sekunden eine Geschichte erzählen und damit politisch Stellung beziehen. „Look what you have done, Putin“ lautet die Überschrift eines Videos mit einem weinenden Kind, das auf der Flucht aus der Ukraine seine Familie verloren hat.
Reichweite durch Trendprinzip – Verbindung von Politik und Unterhaltung
Der reichweitenstärkste Algorithmus der Welt folgt nicht dem „Follower-Prinzip“, sondern belohnt die trendigsten Videos. „Wer kreativ ist, dessen Argumente haben mehr Macht“, sagt der Datenwissenschaftler Juan Carlos Medina. In wenigen Tagen werden weltweit TikTok-Videos mit dem Hashtag #Ukraine mehr als 22 Milliarden Mal gesehen, und jede Minute kämen eine Million weitere Aufrufe dazu, so der britische Journalist Chris Stokel-Walker. Typisch für TikTok ist die Verbindung von Politik und Unterhaltung. Kriegsbilder sind sowohl Dokumentation als auch Wettbewerb um die hippsten Trends, wie das Video eines ukrainischen Soldaten, der den „Moonwalk“ von Michael Jackson tanzt (1,9 Milliarden Aufrufe am 15.3.2022).
Kriegsrelevante Social Media – Wahrheit, Desinformation oder Propaganda?
Aber die Plattform mit ihren kreativen Tools zur audiovisuellen Bearbeitung bietet ideale Bedingungen für Desinformation, die von TikTok de facto nicht oder viel zu spät eingedämmt wird. Es ist schwer zu durchschauen, ob es sich bei Videos um Wahrheit, Desinformation oder Propaganda handelt. Für russische Staatsmedien wie „RT“ oder „Sputnik News“ ist die Plattform ein wichtiger Teil des Desinformationsapparats des Kremls, schreibt Ciarán O’Connor (London Institute for Strategic Dialogue). Millionenfach werden auf der App von der russischen Regierung lancierte pro-russische Kampagnen wie #istandwithPutin angesehen. Offenbar bezahle die russische Regierung bekannte russische Influencer auf TikTok für Propagandabeiträge, die mit identischen Texten Desinformation, z.B. über einen angeblichen Genozid seitens der Ukrainer, verbreiten, so das Magazin „Vice“. Laut Verband „Media Matters for America“ sind 186 russische Influencer-Konten Teil der Propaganda-Kampagne.
Chinesischer Konzern schränkt Nutzung ein
Mit dem neuen russischen Mediengesetz (4. März 2022) einher geht die Blockierung von Facebook und Twitter durch den Kreml, seit dem 21. März sind in Russland Facebook und Instagram verboten. Der chinesische Konzern Bytedance schränkte die Nutzung seiner App TikTok in Russland gleich selbst ein. Russische User können ab dem 6. März nicht mehr live streamen oder neue Inhalte in den Videodienst hochladen. Der Konzern habe angesichts der Gesetzeslage keine andere Wahl, schrieb TikTok auf Twitter. Trotzdem sei das Posten und Abrufen von Videos weiterhin möglich, indem zahlreiche User in Russland VPN-Zugänge nutzten, so TikTok-Forscher Marcus Bösch (HAW Hamburg).
PoliTik auf TikTok – die App als hochpolitischer Faktor
Der Krieg in der Ukraine verdeutlicht die Relevanz von TikTok, wo sich nicht nur zeigt, wie junge Menschen ticken, sondern auch, wie mit Propaganda und Desinformation Krieg gemacht wird. Reichweite und Emotionalität der App machen sie zu einem hochpolitischen Faktor. Es gibt triftige Gründe, warum Politik sich mit TikTok beschäftigen sollte. Laut FAZ lud US-Präsident Joe Biden bereits 30 TikTok-Influencer zu einem Briefing ein, an dem auch Sicherheitsberater Matt Miller teilnahm.
Thèmes
À propos de cette collection
Concis, réduit à l'essentiel, mais toujours d'une grande actualité. Dans la série "kurzum", nos experts résument une question ou un problème sur un maximum de deux pages.