# Guideline 1.2 User-Generated Content: mit vár el az Apple?

> Guideline 1.2: ha a felhasználóid tartalmat tesznek közzé, kell szűrő, jelentés, tiltás, elérhetőség és elfogadott ÁSZF. Ellenőrzőlista Expóhoz és Supabase-hez.

Eredeti oldal: [Guideline 1.2 User-Generated Content: mit vár el az Apple?](https://devoria.fr/hu/blog/guideline-1-2-user-generated-content-apple)
Szerző: [Mehdi Azizi](https://devoria.fr/hu/mehdi-azizi)
Megjelenés: 2026-11-04
A tartalom utolsó frissítése: 2026-11-04


A 1.2-es guideline akkor lép életbe, amikor a felhasználók közzétesznek valamit, amit mások is látnak: egy üzenetet, egy fotót, egy értékelést, és szerintem akár egy egyszerű becenevet egy ranglistán. Az Apple szövege ilyenkor szűrőt, gyors válasszal kezelt jelentést, tiltást és közzétett elérhetőséget követel. **Az elutasító üzenetek egy ötödik követelményt is hozzátesznek: elfogadott felhasználási feltételeket, amelyek sem a kifogásolható tartalmat, sem a visszaélő felhasználókat nem tűrik.**

Ez az útmutató nem egy elutasítás történetét meséli el. Azt mutatja meg, mit építettem be a TradaZenbe, a tőzsdei gyakorló appomba, amikor a ranglistái elkezdték megjeleníteni a játékosok által választott beceneveket. Az elutasítási okok áttekintéséhez inkább olvasd el, [miért utasítja el az Apple az appokat](https://devoria.fr/hu/blog/apple-elutasitas-miert-utasitottak-el-az-appodat).

## Mit mond a 1.2-es guideline?

A 1.2, „User-Generated Content”, az [App Review Guidelines](https://developer.apple.com/app-store/review/guidelines/#user-generated-content) 1. szakaszában („Safety”) található. Azokra az appokra vonatkozik, amelyekben felhasználói tartalom vagy közösségi hálózati szolgáltatás van. A visszaélések megelőzésére ezeknek az appoknak „must include” négy védelmet:

- „A method for filtering objectionable material from being posted to the app”: **egy szűrő, amely még a közzététel előtt blokkolja a kifogásolható tartalmat**.
- „A mechanism to report offensive content and timely responses to concerns”: egy mód a tartalom jelentésére, és gyors válasz a jelentésekre.
- „The ability to block abusive users from the service”: a visszaélő felhasználók letiltásának lehetősége.
- „Published contact information so users can easily reach you”: közzétett, könnyen megtalálható elérhetőség.

A szöveg jelenlegi, 2026. június 8-án frissített változata tovább megy. Emlékeztet, hogy a te felelősséged eltávolítani azt a tartalmat, amely sérti a szabályt, a felhasználási feltételeidet vagy a közösségi irányelveidet. Ha az Apple ilyet talál, kéri, hogy távolítsd el, és adj be egy fejlesztési tervet, közben pedig akár le is veheti az appot.

A szöveg azt is felsorolja, milyen appoknak nincs helye az App Store-ban: azoknak, amelyek elsősorban pornográfiára, Chatroulette-szerű véletlenszerű vagy anonim chatre, valódi emberek külsejének pontozására, fenyegetésre vagy zaklatásra szolgálnak. **Ezekre a felhasználásokra a négy védelem nem elég.** A 1.2.1 további szabályokat ad a tartalomkészítői appokra, többek között életkor-ellenőrzést az app besorolását meghaladó tartalomhoz.

## Érinti az appodat?

Az App Store Connect korhatár-besorolási kérdőíve jó definíciót ad. [Felhasználók által létrehozott tartalomról](https://developer.apple.com/help/app-store-connect/reference/app-information/age-ratings-values-and-definitions) beszél, amikor a felhasználók által készített tartalom széles körben terjed az appban: videók, fotók, szövegek vagy hang. A felhasználók közötti üzenetküldést külön kezeli.

| Amit mások látnak            | Érintett?      |
| ---------------------------- | -------------- |
| Üzenetek tagok között        | Igen           |
| Nyilvános fotók, értékelések | Igen           |
| Becenév egy ranglistán       | Szerintem igen |
| Privát jegyzetek             | Nem            |
| Általad írt tartalom         | Nem            |

Az Apple nem említi a beceneveket. Én mégis felhasználói tartalomként kezelem őket: bárki választhat sértőt, és más játékosok látják. Ezt döntöttem el a TradaZen ranglistáinál.

## Az 5 lekódolandó mechanizmus, Expóval és Supabase-zel

A 1.2-es elutasító üzenet, ahogy egy fejlesztő 2025 végén közzétette az [Apple fórumain](https://developer.apple.com/forums/thread/807358), felsorolja az elvárt intézkedéseket. Így kezdődik: „Require that users agree to terms (EULA)”, és egy határidővel zárul: a jelentésekre „within 24 hours” kell reagálni, a tartalom eltávolításával és a szerző kizárásával.

| Mechanizmus           | Hol kódold                   |
| --------------------- | ---------------------------- |
| Elfogadott ÁSZF       | Képernyő és profil           |
| Szűrő                 | Szerver, megjelenítés előtt  |
| Jelentés              | Gomb és tábla                |
| Tiltás                | Tábla és hozzáférési szabály |
| Közzétett elérhetőség | App és App Store-adatlap     |

Az alábbi SQL-példákat igazítsd a saját sémádhoz. A [Supabase soralapú hozzáférési szabályaira](https://supabase.com/docs/guides/database/postgres/row-level-security) épülnek, amelyek akkor is érvényesek, ha valaki megkerüli az appodat.

### 1. Elfogadott ÁSZF, zéró toleranciával a visszaélésekkel szemben

A felhasználási feltételeidnek feketén-fehéren ki kell mondaniuk, hogy semmilyen kifogásolható tartalmat és visszaélő felhasználót nem tűrsz. Egy példa kikötés, amit nézess át, ez nem jogi tanács: „Semmilyen sértő, gyűlöletkeltő, szexuális vagy zaklató tartalmat nem tűrünk. A jelentett tartalom eltávolítható, a szerzője pedig előzetes értesítés nélkül kizárható.”

**Egy passzív mondat a regisztrációs gomb alatt nem bizonyítja az elfogadást: kérj kifejezett mozdulatot.** Egy képernyő, rajta link az ÁSZF-re és egy „Elfogadom” gomb, még az első közzététel előtt. Mentsd el a profilba az elfogadás dátumát és verzióját, és tiltsd a közzétételt, amíg ezek hiányoznak:

```sql
create policy "publier après les CGU" on public.posts
for insert to authenticated
with check (
  auth.uid() = author_id
  and exists (
    select 1 from public.profiles p
    where p.id = auth.uid() and p.cgu_acceptees_le is not null
  )
);
```

### 2. Szűrő, mielőtt mások látják a tartalmat

A szűrő a szerveren fut, mert az app kódja megkerülhető. Az appban lévő másolat csak arra jó, hogy azonnal figyelmeztesse a felhasználót.

A TradaZenben egy adatbázis-függvény ellenőriz minden becenevet, és az app ugyanazt a listát alkalmazza, hogy szóljon a játékosnak. A kettőt azonosan tartom. Szerveroldalon a sértő becenevet nem utasítom el íráskor: **megjelenítéskor egy semleges becenévre cserélődik, így senkit nem blokkolok egy téves találat miatt**.

A téves találatok gyorsan jönnek. A TradaZenben a szűrő egy korai verziója cenzúrázott olyan keresztneveket, mint a Dominique, a Monique vagy a Véronique, mert egy durva szó darabját tartalmazzák. A javítás: egész szavakat keresni, nem szódarabokat. És mivel az app japánul és kínaiul is elérhető, a szűrő ezeket a nyelveket is lefedi.

### 3. Jelentés, 24 órán belül kezelve

Minden közzétett tartalom mellett van egy „Jelentés” gomb. A TradaZenben a liga ranglistáján jelentett becenév a jelentő telefonján azonnal semleges felirattal jelenik meg. A jelentés ezután a szerverre megy, és ha a telefon offline, később újraküldi.

Az adatbázisban egy jelentéstábla, személyenként és tartalmanként egyetlen jelentéssel:

```sql
create table public.reports (
  id uuid primary key default gen_random_uuid(),
  reporter_id uuid not null references auth.users (id) on delete cascade,
  target_id uuid not null,
  reason text,
  created_at timestamptz not null default now(),
  unique (reporter_id, target_id)
);
alter table public.reports enable row level security;
create policy "mes signalements" on public.reports
for insert to authenticated
with check (auth.uid() = reporter_id);
```

A TradaZenben **a több játékos által jelentett becenév semleges becenévre cserélődik**, és a jelentéseket soha nem mutatjuk meg a jelentett személynek. Általános óvintézkedés: a jelentéshez használt azonosítót a tartalom szerzője ne módosíthassa, különben kibújhat az elrejtés alól.

Az automatikus elrejtés nem helyettesíti a te döntésedet. Hogy tartsd a 24 órát, kérj értesítést minden jelentésnél: egy [Supabase adatbázis-webhook](https://supabase.com/docs/guides/database/webhooks) meghívhat egy szerverfüggvényt, amely üzenetet küld neked. A tartalom eltávolítására szolgáló kulcs a szerveren marad, ahogy a [titkos API-kulcs egy Expo appban](https://devoria.fr/hu/blog/titkos-api-kulcs-expo-app) cikkben elmagyarázom.

### 4. Azonnal ható tiltás

Egy tiltástábla, majd egy hozzáférési szabály, amely a letiltott személyek tartalmát kiveszi a tiltó felhasználó hírfolyamából:

```sql
create policy "sans les bloqués" on public.posts
for select to authenticated
using (
  not exists (
    select 1 from public.blocks b
    where b.blocker_id = auth.uid() and b.blocked_id = posts.author_id
  )
);
```

A TradaZenben barátot egy kóddal lehet hozzáadni, és el lehet távolítani, illetve le lehet tiltani. **A letiltott barát eltűnik a listáról, akkor is, ha újra jelölést küld.**

### 5. Közzétett, könnyen megtalálható elérhetőség

Tegyél egy kapcsolattartási címet az app beállításaiba, és egy valóban működő támogatási URL-t az App Store Connectbe. A TradaZenben a támogatási cím az adatvédelmi szabályzatban és a felhasználási feltételekben is szerepel. Hogy mi kerüljön ezekre az oldalakra, azt az [app adatvédelmi szabályzata](https://devoria.fr/hu/blog/adatvedelmi-iranyelvek-ios-app) cikkben találod.

Utolsó pont: döntsd el, mi történik annak a tartalmaival, aki törli a fiókját. A fenti `on delete cascade` a fiókkal együtt törli a jelentéseit is. A teljes receptet az [iOS-fióktörlés](https://devoria.fr/hu/blog/fioktorles-ios-app-teszteles-apple-elott) cikkben találod.

## Mit közöl a TradaZen a szabályzatában

Ezeket a mechanizmusokat nyilvánosan leírja a TradaZen adatvédelmi szabályzata, amelyet 2026 szeptemberében egészítettem ki a ligák és a barátok érkezésével: „A becenevek automatikus szűrőn mennek át; a ranglistán jelentheted a nem megfelelő becenevet, és eltávolíthatsz, illetve letilthatsz egy barátot.” Ugyanez a szabályzat rögzíti, hogy az e-mail-címet és a naplót soha nem mutatjuk meg más játékosoknak. Az app hátterét a [TradaZen esettanulmányban](https://devoria.fr/hu/blog/tradazen-esettanulmany-iphone-app-inditasa) találod.

## Mit válaszolj az Apple-nek egy 1.2-es elutasítás után

Írd meg a reviewernek, hol találja az egyes mechanizmusokat, a válaszodban és a review-jegyzetekben is. Ezek a funkciók az appban élnek: a reviewer a buildbe épített kódot teszteli, úgyhogy készíts új buildet. Az [App Review-nak való válaszadás](https://developer.apple.com/help/app-store-connect/manage-submissions-to-app-review/reply-to-app-review-messages/) menete ugyanaz, mint a többi szabálynál. Íme egy angol nyelvű sablon, amit igazíts a saját appodhoz, és csak azt hagyd benne, ami igaz rá:

```text
Hello,

Thank you for your review. Build X includes the precautions
listed in Guideline 1.2:

- Terms: users accept our terms, with zero tolerance for
  objectionable content and abusive users, before posting.
- Filter: posts and usernames are checked on our server
  before other users can see them.
- Report: tap "..." on any post, then "Report".
- Block: tap "..." on any post, then "Block user". Their
  content disappears immediately.
- Reports notify us instantly; we act on them within 24 hours.
- Contact: Settings > Contact us, and our support URL.

Best regards,
```

Ha egy mechanizmus hiányzik a buildből, egy válasz nem lesz elég. Ahogy a [2.1-es guideline](https://devoria.fr/hu/blog/guideline-2-1-app-store-elutasitas-javitasa) esetében, az Apple azt a buildet ítéli meg, ami a kezében van.

## A 1.2-es ellenőrzőlista beküldés előtt

- Összeszedted mindazt, amit egy felhasználó közzétesz és mások látnak, a beceneveket is beleértve.
- Az ÁSZF-ed tiltja a kifogásolható tartalmat és a visszaéléseket, és az app kifejezett „Elfogadom”-ot kér.
- A szűrő a szerveren fut, egész szavakat keres, és lefedi az adatlapod nyelveit.
- Minden tartalomnál van „Jelentés” gomb, és minden jelentésről azonnal értesítést kapsz.
- Tudsz tartalmat eltávolítani és a szerzőjét kizárni 24 órán belül.
- Egy felhasználó letiltása azonnal eltünteti a tartalmát.
- Az appban látható egy kapcsolattartási cím, és a támogatási URL működik.
- A korhatár-besorolási kérdőív jelzi a felhasználói tartalmat, és az üzenetküldést is, ha az appodban van ilyen.
- A review-jegyzetek megmondják, hol található az egyes mechanizmus, egy demófiókkal együtt.

## Javítsd az elutasítást, mielőtt újra beküldöd az appot

Ha az appodat épp most utasították el 1.2 alapján, a [Review Kit](https://devoria.fr/hu/kits/app-review) összegyűjti mindazt, amit minden beküldés előtt ellenőrzök, két skill-lel, amelyek átnézik a projektedet a Claude Code-ban, és előkészítik a válaszodat, ha az Apple elutasít. Ha emberi szemre van szükséged, [foglalj velem egy órát](https://devoria.fr/hu/coaching): együtt elolvassuk az üzenetet, és átnézzük a moderálási folyamatodat. Az elutasítás utáni teljes teendőket az [Apple által elutasított alkalmazás](https://devoria.fr/hu/expertise/apple-altal-elutasitott-alkalmazas) oldalon találod.

Ha az első megjelenésedre készülsz, [csináld meg az ingyenes diagnózist](https://devoria.fr/hu/diagnostic): megmondja, melyik lépéssel kezdj, és elküldi az Apple-elutasítás elleni ellenőrzőlistámat.

Senki nem garantálhatja, hogy az Apple elfogadja az appodat. Ez az öt, jól látható mechanizmus legalább ezt az okot leveszi a listáról.

## Gyakori kérdések

### Mit jelent a „Guideline 1.2 - Safety - User-Generated Content”?

Ez az elutasítás címe az Apple üzenetében. Azt jelenti, hogy az appod felhasználók által létrehozott tartalmat jelenít meg az összes elvárt védelem nélkül: szűrő, gyorsan kezelt jelentés, tiltás, közzétett elérhetőség és elfogadott felhasználási feltételek.

### Felhasználói tartalomnak számít egy becenév a ranglistán?

Az Apple szövege ezt nem mondja ki. Én annak tekintem, mert a becenevet szabadon választják, és más játékosok látják. A TradaZenben a ranglisták becenevei szűrőn mennek át, jelenthetők, és ha gondot okoznak, semleges becenévre cserélődnek.

### Tényleg 24 órán belül kell kezelni a jelentéseket?

Ezt kéri az Apple elutasító üzenete. A szabály szövege gyors válaszokról beszél. Egy automatikus szűrő tehát nem elég: kell valaki, aki eltávolítja a tartalmat és kizárja a szerzőjét. A több jelentés utáni automatikus elrejtés segít addig is tartani magad.

### Az appon belül kell elfogadtatni a felhasználási feltételeket?

Ez a legbiztosabb módszer. Az elutasító üzenet azt kéri, hogy a felhasználók fogadjanak el olyan feltételeket, amelyek sem a kifogásolható tartalmat, sem a visszaélő felhasználókat nem tűrik. Egy link egy oldal alján nem bizonyítja az elfogadást. Egy képernyő „Elfogadom” gombbal, az első közzététel előtt, nem hagy kétséget.

### Átmehet egy anonim chatapp a 1.2-es guideline-on?

A jelenlegi szöveg a véletlenszerű vagy anonim chatet azok között említi, amelyeknek nincs helye az App Store-ban. Egy elsősorban erre szolgáló app előzetes értesítés nélkül eltávolítható, még szűrővel, jelentéssel és tiltással is.


## A projekted

[Review Kit](https://devoria.fr/hu/kits/app-review): Az App Store review checklistem, a javított Apple-elutasításaim, a Google Play checklist és három Claude Code skill. 17 990 Ft.

[iOS & Android Kit](https://devoria.fr/hu/kits/ios): Készítsd el iPhone- és Android-appodat Claude Code-dal: az appjaim kezdőkódja, az út a store-okig és az összes kit. 35 990 Ft.

[Diagnózis: mi választ el az iPhone-appodtól](https://devoria.fr/hu/diagnostic): 7 kérdés, 60 másodperc: megtudod, mi akadályoz valójában abban, hogy kiadd az iPhone-appodat, megkapod a 4 lépéses utadat és a hozzád illő kitet.
