# Guideline 1.2 User-Generated Content: Apples krav

> Guideline 1.2: publicerar dina användare innehåll behöver du filter, rapportering, blockering, kontakt och godkända villkor.

Originalsida: [Guideline 1.2 User-Generated Content: Apples krav](https://devoria.fr/sv/blog/guideline-1-2-user-generated-content-apple-krav)
Författare: [Mehdi Azizi](https://devoria.fr/sv/mehdi-azizi)
Publicerad: 2026-11-04
Innehållet senast granskat: 2026-11-04


Guideline 1.2 gäller så fort användare publicerar något som andra ser: ett meddelande, en bild, en recension och, enligt mig, till och med ett användarnamn på en topplista. Apples text kräver då ett filter, rapportering med snabb återkoppling, blockering och publicerade kontaktuppgifter. **Avslagsmeddelandena lägger till ett femte krav: godkända användarvillkor som inte tolererar stötande innehåll eller användare som missbrukar tjänsten.**

Den här guiden handlar inte om ett avslag. Den visar vad jag byggde in i TradaZen, min app för att träna trading, när topplistorna började visa användarnamn som spelarna själva valt. Vill du ha helheten kring avslagsorsaker kan du hellre läsa [varför Apple avvisar en app](https://devoria.fr/sv/blog/apple-avvisade-appen-orsaker).

## Vad säger guideline 1.2?

1.2, "User-Generated Content", finns i avsnitt 1, "Safety", i [App Review Guidelines](https://developer.apple.com/app-store/review/guidelines/#user-generated-content). Den gäller appar med användarinnehåll eller sociala nätverkstjänster. För att förhindra missbruk "must include" de här apparna fyra skydd:

- "A method for filtering objectionable material from being posted to the app": **ett filter som stoppar stötande innehåll innan det publiceras**.
- "A mechanism to report offensive content and timely responses to concerns": ett sätt att rapportera innehåll, och snabb återkoppling på rapporterna.
- "The ability to block abusive users from the service": möjligheten att blockera användare som missbrukar tjänsten.
- "Published contact information so users can easily reach you": publicerade kontaktuppgifter som är lätta att hitta.

Den nuvarande versionen av texten, uppdaterad den 8 juni 2026, går längre. Den påminner om att det är ditt ansvar att ta bort innehåll som bryter mot regeln, dina användarvillkor eller dina communityregler. Hittar Apple sådant innehåll ber de dig ta bort det och lämna en förbättringsplan, och de kan ta bort appen under tiden.

Texten listar också appar som inte hör hemma på App Store: de som främst används för pornografi, slumpmässig eller anonym chatt à la Chatroulette, att betygsätta riktiga människors utseende, hot eller trakasserier. **För sådana användningsområden räcker inte de fyra skydden.** 1.2.1 lägger till regler för kreatörsappar, bland annat åldersverifiering för innehåll som går utöver appens åldersgräns.

## Berörs din app?

Åldersklassificeringsformuläret i App Store Connect ger en bra definition. Det talar om [användargenererat innehåll](https://developer.apple.com/help/app-store-connect/reference/app-information/age-ratings-values-and-definitions) när innehåll som skapats av användare sprids brett i appen: videor, bilder, text eller ljud. Meddelanden mellan användare behandlas separat.

| Det andra ser                   | Berörs?        |
| ------------------------------- | -------------- |
| Meddelanden mellan medlemmar    | Ja             |
| Offentliga bilder eller omdömen | Ja             |
| Användarnamn på en topplista    | Ja, enligt mig |
| Privata anteckningar            | Nej            |
| Innehåll som du själv skrivit   | Nej            |

Apple nämner inte användarnamn. Jag behandlar dem ändå som användarinnehåll: vem som helst kan välja ett kränkande namn, och andra spelare ser det. Det är det val jag gjorde för topplistorna i TradaZen.

## De 5 mekanismerna att koda, med Expo och Supabase

Avslagsmeddelandet för 1.2, så som en utvecklare publicerade det på [Apples forum](https://developer.apple.com/forums/thread/807358) i slutet av 2025, listar de åtgärder som förväntas. Det börjar med "Require that users agree to terms (EULA)" och slutar med ett tidskrav: att agera på rapporter "within 24 hours", genom att ta bort innehållet och stänga av upphovspersonen.

| Mekanism           | Var du kodar den          |
| ------------------ | ------------------------- |
| Godkända villkor   | Skärm och profil          |
| Filter             | Servern, före visning     |
| Rapportering       | Knapp och tabell          |
| Blockering         | Tabell och åtkomstregel   |
| Publicerad kontakt | Appen och App Store-sidan |

SQL-exemplen nedan behöver anpassas till ditt schema. De bygger på [Supabases radnivåsäkerhet](https://supabase.com/docs/guides/database/postgres/row-level-security), som gäller även om någon kringgår din app.

### 1. Godkända villkor, utan tolerans för missbruk

Dina användarvillkor måste säga svart på vitt att stötande innehåll och användare som missbrukar tjänsten inte tolereras. Exempel på en klausul, som du bör låta någon granska, inte juridisk rådgivning: "Inget kränkande, hatiskt, sexuellt eller trakasserande innehåll tolereras. Rapporterat innehåll kan tas bort och upphovspersonen stängas av, utan förvarning."

**En passiv mening under en registreringsknapp bevisar inte att någon godkänt: kräv en uttrycklig handling.** En skärm med en länk till villkoren och en knapp "Jag godkänner", före första publiceringen. Spara datum och version som godkänts i profilen, och förbjud sedan publicering så länge de saknas:

```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. Ett filter innan andra ser innehållet

Filtret ligger på servern, eftersom appens kod kan kringgås. En kopia i appen används bara för att varna användaren direkt.

I TradaZen kontrollerar en databasfunktion varje användarnamn, och appen använder samma lista för att varna spelaren. Jag håller de två identiska. På serversidan avvisas inte ett kränkande namn vid skrivning: **det ersätts med ett neutralt namn vid visning, så att ingen blockeras på grund av en falsk träff**.

Falska träffar dyker upp snabbt. I TradaZen censurerade en första version av filtret förnamn som Dominique, Monique och Véronique, eftersom de innehåller en bit av ett svordomsord. Lösningen: leta efter hela ord, inte delar av ord. Och eftersom appen säljs på japanska och kinesiska täcker filtret även de språken.

### 3. Rapportering, hanterad inom 24 timmar

Varje publicerat innehåll har en knapp "Rapportera". I TradaZen visas ett rapporterat användarnamn i ligans topplista direkt under en neutral etikett, på telefonen hos den som rapporterar. Rapporten skickas sedan till servern, och skickas igen senare om telefonen är offline.

I databasen: en tabell för rapporter, en per person och innehåll:

```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);
```

I TradaZen **ersätts ett användarnamn som rapporterats av flera spelare med ett neutralt namn**, och rapporterna visas aldrig för den rapporterade personen. En allmän försiktighetsåtgärd: id:t som används för rapporten får inte gå att ändra av den som skapat innehållet, annars kan hen slippa undan döljningen.

Automatisk döljning ersätter inte ditt eget beslut. För att klara 24 timmar, se till att du får en notis vid varje rapport: en [databaswebhook i Supabase](https://supabase.com/docs/guides/database/webhooks) kan anropa en serverfunktion som skickar ett meddelande till dig. Nyckeln som låter dig ta bort innehållet stannar på servern, som jag förklarar i [hemlig API-nyckel i en Expo-app](https://devoria.fr/sv/blog/hemlig-api-nyckel-expo-app).

### 4. En blockering som gäller direkt

En tabell för blockeringar, sedan en åtkomstregel som tar bort blockerade personers innehåll från flödet hos den som blockerar:

```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
  )
);
```

I TradaZen lägger man till en vän med en kod, och man kan ta bort och blockera vännen. **En blockerad vän försvinner från listan, även om hen skickar en ny förfrågan.**

### 5. Publicerade kontaktuppgifter, lätta att hitta

Lägg en kontaktadress i appens inställningar, och en support-URL som faktiskt svarar i App Store Connect. I TradaZen finns supportadressen i integritetspolicyn och i användarvillkoren. Vad de sidorna ska innehålla hittar du i [integritetspolicy för en app](https://devoria.fr/sv/blog/integritetspolicy-app-ios-guide).

En sista sak: bestäm vad som händer med innehållet från en person som raderar sitt konto. `on delete cascade` ovan raderar personens rapporter tillsammans med kontot. Hela receptet finns i [radera konto i en iOS-app](https://devoria.fr/sv/blog/radera-konto-ios-app-testa-flodet).

## Vad TradaZen visar i sin policy

De här mekanismerna beskrivs offentligt i TradaZens integritetspolicy, som kompletterades i september 2026 när ligor och vänner lanserades: "Användarnamn går igenom ett automatiskt filter; du kan rapportera ett olämpligt användarnamn på topplistan, och ta bort och blockera en vän." Samma policy anger att e-postadressen och journalen aldrig visas för andra spelare. Bakgrunden till appen finns i [fallstudien om TradaZen](https://devoria.fr/sv/blog/fallstudie-tradazen-lansera-iphone-app).

## Vad du svarar Apple efter ett avslag enligt 1.2

Berätta för granskaren var varje mekanism finns, både i ditt svar och i granskningsanteckningarna. Funktionerna finns i appen: granskaren testar koden som ingår i builden, så räkna med en ny build. Proceduren för att [svara App Review](https://developer.apple.com/help/app-store-connect/manage-submissions-to-app-review/reply-to-app-review-messages/) är densamma som för andra regler. Här är en mall på engelska att anpassa, där du bara behåller det som stämmer för din app:

```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,
```

Saknas en mekanism i builden räcker det inte med ett svar. Precis som för [guideline 2.1](https://devoria.fr/sv/blog/guideline-2-1-app-store-avslag-app-completeness) bedömer Apple den build de har framför sig.

## Checklistan för 1.2 före inskick

- Du har listat allt en användare publicerar som andra ser, användarnamn inräknade.
- Dina villkor förbjuder stötande innehåll och missbruk, och appen kräver ett uttryckligt "Jag godkänner".
- Filtret körs på servern, letar efter hela ord och täcker språken på din App Store-sida.
- Varje innehåll har en knapp "Rapportera", och varje rapport ger dig en notis direkt.
- Du kan ta bort innehåll och stänga av upphovspersonen på under 24 timmar.
- Att blockera en användare tar bort hens innehåll direkt.
- En kontaktadress syns i appen, och support-URL:en svarar.
- Åldersklassificeringsformuläret anger användarinnehåll, och meddelanden om din app har det.
- Granskningsanteckningarna säger var varje mekanism finns, med ett demokonto.

## Fixa ditt avslag innan du skickar in appen igen

Om din app precis fått avslag enligt 1.2 samlar [Review Kit](https://devoria.fr/sv/kits/app-review) det jag kontrollerar före varje inskick, med två skills som går igenom ditt projekt i Claude Code och förbereder ditt svar om Apple avvisar appen. Vill du ha ett mänskligt öga, [boka en timme med mig](https://devoria.fr/sv/coaching): vi läser meddelandet tillsammans och tittar på ditt modereringsflöde. Hela tillvägagångssättet efter ett avslag finns på sidan [app avvisad av Apple](https://devoria.fr/sv/expertise/app-nekad-av-apple).

Om du förbereder din första lansering, [gör din gratis diagnos](https://devoria.fr/sv/diagnostic): den säger vilket steg du ska ta itu med först och skickar dig min checklista mot avslag från Apple.

Ingen kan garantera att Apple godkänner din app. De här fem mekanismerna, väl synliga, stryker åtminstone den här orsaken från listan.

## Vanliga frågor

### Vad betyder "Guideline 1.2 - Safety - User-Generated Content"?

Det är rubriken på avslaget i Apples meddelande. Det betyder att din app visar innehåll som skapats av användare utan alla förväntade skydd: filter, snabbt hanterad rapportering, blockering, publicerad kontakt och godkända användarvillkor.

### Räknas ett användarnamn på en topplista som användarinnehåll?

Apples text säger inget om det. Jag behandlar det så, eftersom ett användarnamn väljs fritt och syns för andra spelare. I TradaZen går användarnamnen på topplistorna igenom ett filter, kan rapporteras och ersätts med ett neutralt namn om de är problematiska.

### Måste rapporter verkligen hanteras inom 24 timmar?

Det är vad Apples avslagsmeddelande kräver. Regeltexten talar om snabb återkoppling. Ett automatiskt filter räcker alltså inte: någon måste ta bort innehållet och stänga av upphovspersonen. Automatisk döljning efter flera rapporter hjälper dig att hålla tiden under tiden.

### Måste användarvillkoren godkännas i appen?

Det är det säkraste sättet. Avslagsmeddelandet kräver att användarna godkänner villkor som inte tolererar stötande innehåll eller användare som missbrukar tjänsten. En länk längst ner på en sida bevisar inte att någon godkänt. En skärm med en knapp "Jag godkänner", före första publiceringen, lämnar inget tvivel.

### Kan en app för anonym chatt klara guideline 1.2?

Den nuvarande texten nämner slumpmässig eller anonym chatt bland användningsområden som inte hör hemma på App Store. En app som främst används till det kan tas bort utan förvarning, även med filter, rapportering och blockering.


## Ditt projekt

[Review Kit](https://devoria.fr/sv/kits/app-review): Min checklista för App Store-granskningen, mina avslag från Apple och hur jag fixade dem, en för Google Play och tre Claude Code-skills. 549 kr.

[iOS & Android Kit](https://devoria.fr/sv/kits/ios): Bygg din app för iPhone och Android med Claude Code: startkoden från mina appar, hela vägen till butikerna och alla kit. 1 099 kr.

[Diagnos: det som skiljer dig från din iPhone-app](https://devoria.fr/sv/diagnostic): 7 frågor, 60 sekunder: du får veta vad som egentligen hindrar dig från att publicera din iPhone-app, din väg i 4 steg och kitet som passar dig.
