Allinea branding homepage a Match Live TV per verifica OAuth Google.

Nome visibile in hero, meta application-name, JSON-LD e documentazione; corregge mismatch con «Match Live Tv» in Console.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-02 20:04:34 +02:00
parent 71eaf9cf56
commit cd8e97243f
9 changed files with 73 additions and 7 deletions

View File

@@ -4,9 +4,11 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title><%= content_for?(:title) ? yield(:title) : "Match Live TV" %></title>
<meta name="application-name" content="Match Live TV">
<%= render "shared/meta_tags" %>
<%= yield :head %>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css" integrity="sha512-SnH5WK+bZxgPHs44uWIX+LLJAJ9/2PkPKZ5QiAj6Ta86w+fsb2TkcmfRyVX3pBnMFcV7oQPJkl9QevSCWr3W6A==" crossorigin="anonymous" referrerpolicy="no-referrer">
<link rel="stylesheet" href="/marketing.css?v=34">
<link rel="stylesheet" href="/marketing.css?v=35">
</head>
<body>
<%= render "shared/marketing_nav" %>

View File

@@ -1,10 +1,24 @@
<% content_for :title, "Match Live TV — Diretta live partite giovanili da telefono" %>
<% content_for :meta_description, "Non puoi andare in palestra? Guarda la diretta live della partita di tuo figlio dal telefono o dal computer, senza installare app. Pallavolo, calcio e sport giovanili: link da condividere con nonni e parenti, archivio se te la perdi." %>
<% content_for :canonical_url, seo_absolute_url(root_path) %>
<% content_for :head do %>
<script type="application/ld+json">
<%= raw({
"@context" => "https://schema.org",
"@type" => "WebApplication",
"name" => "Match Live TV",
"url" => seo_absolute_url(root_path),
"applicationCategory" => "SportsApplication",
"operatingSystem" => "Web, Android, iOS",
"description" => "Piattaforma per dirette live e archivio partite delle società sportive giovanili."
}.to_json) %>
</script>
<% end %>
<section class="hero hero-split">
<div class="wrap hero-grid">
<div class="hero-content">
<p class="hero-app-name">Match Live TV</p>
<p class="hero-live-badge"><span class="hero-live-dot" aria-hidden="true"></span> LIVE</p>
<h1>Ogni partita, ogni evento, per chi <span class="hero-accent">non può esserci.</span></h1>
<p class="tagline">

View File

@@ -2,9 +2,9 @@
<div class="site-chrome">
<div class="site-masthead">
<div class="wrap mast-inner">
<%= link_to root_path, class: "mast-brand", aria: { label: "Match Live Tv" } do %>
<img class="mast-brand-logo" src="/logo.png?v=3" alt="" width="40" height="40" decoding="async">
<span class="brand">Match <span>Live TV</span></span>
<%= link_to root_path, class: "mast-brand", aria: { label: "Match Live TV" }, title: "Match Live TV" do %>
<img class="mast-brand-logo" src="/logo.png?v=3" alt="Match Live TV" width="40" height="40" decoding="async">
<span class="brand" aria-hidden="true">Match <span>Live TV</span></span>
<% end %>
<button type="button" class="nav-toggle" aria-label="Apri menu" aria-expanded="false" aria-controls="site-nav">

View File

@@ -1,6 +1,7 @@
<% description = content_for?(:meta_description) ? yield(:meta_description) : "Diretta live delle partite giovanili dal telefono: genitori e nonni guardano dal browser, senza app. Archivio partite per non perderle." %>
<% page_title = content_for?(:title) ? yield(:title) : "Match Live TV — Diretta live partite giovanili" %>
<meta name="description" content="<%= description %>">
<meta name="application-name" content="Match Live TV">
<meta name="robots" content="<%= seo_robots_content %>">
<link rel="canonical" href="<%= seo_canonical_url %>">
<meta property="og:site_name" content="Match Live TV">

View File

@@ -700,6 +700,14 @@ body.nav-menu-open { overflow: hidden; }
align-items: center;
}
.hero-content { max-width: 560px; }
.hero-app-name {
margin: 0 0 10px;
font-size: clamp(1.35rem, 2.8vw, 1.75rem);
font-weight: 800;
letter-spacing: 0.04em;
color: #fff;
line-height: 1.2;
}
.hero-live-badge {
display: inline-flex;
align-items: center;

View File

@@ -0,0 +1,41 @@
# Verifica branding OAuth Google (Match Live TV)
Google confronta il **nome applicazione** nella schermata OAuth con il nome **visibile sulla home page** (`https://www.matchlivetv.it/`).
## Nome ufficiale (usare ovunque)
```
Match Live TV
```
Scritta esatta: **M**atch **L**ive **TV** (TV maiuscolo).
## In Google Cloud Console
1. https://console.cloud.google.com/auth/branding?project=match-live-tv
2. **Nome applicazione**`Match Live TV` (non «Match Live Tv»)
3. **Home page applicazione**`https://www.matchlivetv.it/`
4. Salva → **Verifica di nuovo** → «Ho risolto i problemi» → **Procedi**
## Sul sito (già allineato nel codice)
- Home: testo visibile **Match Live TV** sopra lhero
- Header, footer, meta `application-name`, JSON-LD `WebApplication`
- Logo con `alt="Match Live TV"`
Dopo il deploy, attendi qualche minuto e rilancia la verifica branding.
## Dominio (altro errore frequente)
Se Google segnala che il dominio non è «registrato a tuo nome»:
1. https://search.google.com/search-console
2. Aggiungi proprietà **Prefisso URL** `https://www.matchlivetv.it/`
3. Verifica (file HTML, DNS TXT o CNAME sul provider del dominio)
4. Stesso account Google usato in Cloud Console
## OAuth in fase test (senza verifica completa)
Per collegare il canale YouTube **non serve** branding verificato: basta **Utenti di test** + **Continua** sulla schermata «app non verificata».
La verifica branding serve per pubblicare lapp OAuth in **Produzione** e togliere lavviso a tutti gli utenti.

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Match Live Tv</string>
<string name="app_name">Match Live TV</string>
<string name="streaming_notification_channel">Streaming live</string>
<string name="streaming_notification_channel_desc">Notifiche durante lo streaming Match Live TV</string>
<string name="streaming_notification_title">Match Live TV</string>

View File

@@ -7,7 +7,7 @@
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>Match Live Tv</string>
<string>Match Live TV</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>

View File

@@ -29,7 +29,7 @@ class MatchLiveTvApp extends ConsumerWidget {
final router = ref.watch(routerProvider);
return MaterialApp.router(
title: 'Match Live Tv',
title: 'Match Live TV',
debugShowCheckedModeBanner: false,
theme: AppTheme.dark,
routerConfig: router,