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:
@@ -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" %>
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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;
|
||||
|
||||
41
docs/GOOGLE_OAUTH_BRANDING.md
Normal file
41
docs/GOOGLE_OAUTH_BRANDING.md
Normal 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 l’hero
|
||||
- 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 l’app OAuth in **Produzione** e togliere l’avviso a tutti gli utenti.
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user