Risorsa: messaggio
Messaggio da inviare tramite Firebase Cloud Messaging Service.
Rappresentazione JSON |
---|
{ "name": string, "data": { string: string, ... }, "notification": { object ( |
Campi | |
---|---|
name | Solo uscita. L'identificatore del messaggio inviato, nel formato |
data | Solo ingresso. Payload chiave/valore arbitrario, che deve essere codificato UTF-8. La chiave non deve essere una parola riservata ("da", "tipo_messaggio" o qualsiasi parola che inizi con "google" o "gcm"). Quando si inviano payload contenenti solo campi dati a dispositivi iOS, in Un oggetto contenente un elenco di coppie |
notification | Solo ingresso. Modello di notifica di base da utilizzare su tutte le piattaforme. |
android | Solo ingresso. Opzioni specifiche di Android per i messaggi inviati tramite il server di connessione FCM . |
webpush | Solo ingresso. Opzioni del protocollo Webpush . |
apns | Solo ingresso. Opzioni specifiche del servizio di notifica push di Apple . |
fcm_options | Solo ingresso. Modello per le opzioni delle funzionalità dell'SDK FCM da utilizzare su tutte le piattaforme. |
target sul campo dell'Unione. Necessario. Solo ingresso. Obiettivo a cui inviare un messaggio. target può essere solo uno dei seguenti: | |
token | Token di registrazione a cui inviare un messaggio. |
topic | Nome dell'argomento a cui inviare un messaggio, ad esempio "meteo". Nota: il prefisso "/topics/" non deve essere fornito. |
condition | Condizione a cui inviare un messaggio, ad esempio "'foo' negli argomenti && 'bar' negli argomenti". |
Notifica
Modello di notifica di base da utilizzare su tutte le piattaforme.
Rappresentazione JSON |
---|
{ "title": string, "body": string, "image": string } |
Campi | |
---|---|
title | Il titolo della notifica. |
body | Il corpo del testo della notifica. |
image | Contiene l'URL di un'immagine che verrà scaricata sul dispositivo e visualizzata in una notifica. JPEG, PNG e BMP hanno il pieno supporto su tutte le piattaforme. GIF animate e video funzionano solo su iOS. WebP e HEIF hanno diversi livelli di supporto a seconda delle piattaforme e delle versioni della piattaforma. Android ha un limite di dimensione immagine di 1 MB. Utilizzo della quota e implicazioni/costi per l'hosting dell'immagine su Firebase Storage: https://firebase.google.com/pricing |
AndroidConfig
Opzioni specifiche di Android per i messaggi inviati tramite il server di connessione FCM .
Rappresentazione JSON |
---|
{ "collapse_key": string, "priority": enum ( |
Campi | |
---|---|
collapse_key | Un identificatore di un gruppo di messaggi che può essere compresso, in modo che solo l'ultimo messaggio venga inviato quando è possibile riprendere la consegna. È consentito un massimo di 4 chiavi di compressione diverse alla volta. |
priority | Priorità del messaggio. Può assumere valori "normali" e "alti". Per ulteriori informazioni, vedere Impostazione della priorità di un messaggio . |
ttl | Per quanto tempo (in secondi) il messaggio deve essere conservato nell'archivio FCM se il dispositivo è offline. La durata massima del supporto è di 4 settimane e il valore predefinito è 4 settimane se non impostato. Impostalo su 0 se desideri inviare il messaggio immediatamente. Nel formato JSON, il tipo Duration è codificato come una stringa anziché come un oggetto, dove la stringa termina con il suffisso "s" (che indica i secondi) ed è preceduta dal numero di secondi, con i nanosecondi espressi come secondi frazionari. Ad esempio, 3 secondi con 0 nanosecondi dovrebbero essere codificati in formato JSON come "3s", mentre 3 secondi e 1 nanosecondo dovrebbero essere espressi in formato JSON come "3.000000001s". Il ttl verrà arrotondato per difetto al secondo più vicino. Una durata in secondi con un massimo di nove cifre frazionarie, che termina con ' |
restricted_package_name | Nome del pacchetto dell'applicazione a cui deve corrispondere il token di registrazione per ricevere il messaggio. |
data | Payload chiave/valore arbitrario. Se presente, sovrascriverà Un oggetto contenente un elenco di coppie |
notification | Notifica da inviare ai dispositivi Android. |
fcm_options | Opzioni per le funzionalità fornite dall'SDK FCM per Android. |
direct_boot_ok | Se impostato su true, i messaggi potranno essere recapitati all'app mentre il dispositivo è in modalità di avvio diretto. Vedere Supporto della modalità di avvio diretto . |
AndroidMessagePriority
Priorità di un messaggio da inviare ai dispositivi Android. Tieni presente che questa priorità è un concetto FCM che controlla quando il messaggio viene consegnato. Consulta le guide FCM . Inoltre, puoi determinare la priorità di visualizzazione delle notifiche sui dispositivi Android di destinazione utilizzando AndroidNotification.NotificationPriority .
Enumerazioni | |
---|---|
NORMAL | Priorità predefinita per i messaggi di dati. I messaggi con priorità normale non apriranno le connessioni di rete su un dispositivo inattivo e la loro consegna potrebbe essere ritardata per risparmiare la batteria. Per i messaggi meno urgenti, come le notifiche di nuove email o altri dati da sincronizzare, scegli la priorità di consegna normale. |
HIGH | Priorità predefinita per i messaggi di notifica. FCM tenta di recapitare immediatamente i messaggi ad alta priorità, consentendo al servizio FCM di riattivare un dispositivo inattivo quando possibile e di aprire una connessione di rete al server dell'app. Le app con avvisi di messaggistica istantanea, chat o chiamate vocali, ad esempio, generalmente devono aprire una connessione di rete e assicurarsi che FCM consegni il messaggio al dispositivo senza ritardi. Imposta una priorità alta se il messaggio ha un limite di tempo e richiede l'interazione immediata dell'utente, ma fai attenzione che impostare i tuoi messaggi su una priorità alta contribuisce maggiormente al consumo della batteria rispetto ai messaggi con priorità normale. |
AndroidNotifica
Notifica da inviare ai dispositivi Android.
Rappresentazione JSON |
---|
{ "title": string, "body": string, "icon": string, "color": string, "sound": string, "tag": string, "click_action": string, "body_loc_key": string, "body_loc_args": [ string ], "title_loc_key": string, "title_loc_args": [ string ], "channel_id": string, "ticker": string, "sticky": boolean, "event_time": string, "local_only": boolean, "notification_priority": enum ( |
Campi | |
---|---|
title | Il titolo della notifica. Se presente, sovrascriverà |
body | Il corpo del testo della notifica. Se presente, sovrascriverà |
icon | L'icona della notifica. Imposta l'icona di notifica su myicon per la risorsa disegnabile myicon. Se non invii questa chiave nella richiesta, FCM visualizza l'icona di avvio specificata nel manifest dell'app. |
color | Il colore dell'icona della notifica, espresso nel formato #rrggbb. |
sound | Il suono da riprodurre quando il dispositivo riceve la notifica. Supporta "predefinito" o il nome file di una risorsa audio inclusa nell'app. I file audio devono risiedere in /res/raw/. |
tag | Identificatore utilizzato per sostituire le notifiche esistenti nel cassetto delle notifiche. Se non specificato, ogni richiesta crea una nuova notifica. Se specificato ed è già visualizzata una notifica con lo stesso tag, la nuova notifica sostituisce quella esistente nel cassetto delle notifiche. |
click_action | L'azione associata a un clic dell'utente sulla notifica. Se specificato, viene avviata un'attività con un filtro di intento corrispondente quando un utente fa clic sulla notifica. |
body_loc_key | Chiave della stringa del corpo nelle risorse stringa dell'app da utilizzare per localizzare il corpo del testo nella localizzazione corrente dell'utente. Vedi Risorse stringa per ulteriori informazioni. |
body_loc_args[] | Valori stringa variabili da utilizzare al posto degli identificatori di formato in body_loc_key da utilizzare per localizzare il corpo del testo nella localizzazione corrente dell'utente. Per ulteriori informazioni, vedere Formattazione e stile . |
title_loc_key | Chiave della stringa del titolo nelle risorse stringa dell'app da utilizzare per localizzare il testo del titolo nella localizzazione corrente dell'utente. Vedi Risorse stringa per ulteriori informazioni. |
title_loc_args[] | Valori di stringa variabili da utilizzare al posto degli identificatori di formato in title_loc_key da utilizzare per localizzare il testo del titolo nella localizzazione corrente dell'utente. Per ulteriori informazioni, vedere Formattazione e stile . |
channel_id | L' ID del canale della notifica (nuovo in Android O). L'app deve creare un canale con questo ID canale prima che venga ricevuta qualsiasi notifica con questo ID canale. Se non invii questo ID canale nella richiesta o se l'ID canale fornito non è stato ancora creato dall'app, FCM utilizza l'ID canale specificato nel manifest dell'app. |
ticker | Imposta il testo "ticker", che viene inviato ai servizi di accessibilità. Prima del livello API 21 ( |
sticky | Se impostata su false o non impostata, la notifica viene automaticamente ignorata quando l'utente fa clic su di essa nel pannello. Se impostata su true, la notifica persiste anche quando l'utente fa clic su di essa. |
event_time | Imposta l'ora in cui si è verificato l'evento nella notifica. Le notifiche nel pannello vengono ordinate in base a questo orario. Un punto nel tempo viene rappresentato utilizzando protobuf.Timestamp . Un timestamp in formato RFC3339 UTC "Zulu", con risoluzione in nanosecondi e fino a nove cifre frazionarie. Esempi: |
local_only | Imposta se questa notifica è rilevante o meno solo per il dispositivo corrente. Alcune notifiche possono essere collegate ad altri dispositivi per la visualizzazione remota, come un orologio Wear OS. Questo suggerimento può essere impostato per consigliare di non ignorare questa notifica. Consulta le guide del sistema operativo Wear |
notification_priority | Imposta la priorità relativa per questa notifica. La priorità è un'indicazione di quanta attenzione dell'utente dovrebbe essere assorbita da questa notifica. Le notifiche a bassa priorità potrebbero essere nascoste all'utente in determinate situazioni, mentre l'utente potrebbe essere interrotto per una notifica con priorità più elevata. L'effetto dell'impostazione delle stesse priorità può differire leggermente su piattaforme diverse. Tieni presente che questa priorità è diversa da |
default_sound | Se impostato su true, utilizza il suono predefinito del framework Android per la notifica. I valori predefiniti sono specificati in config.xml . |
default_vibrate_timings | Se impostato su true, utilizza il modello di vibrazione predefinito del framework Android per la notifica. I valori predefiniti sono specificati in config.xml . Se |
default_light_settings | Se impostato su true, utilizza le impostazioni di luce LED predefinite del framework Android per la notifica. I valori predefiniti sono specificati in config.xml . Se |
vibrate_timings[] | Imposta il modello di vibrazione da utilizzare. Passa in una serie di protobuf.Durata per accendere o spegnere il vibratore. Il primo valore indica la Una durata in secondi con un massimo di nove cifre frazionarie, che termina con ' |
visibility | Imposta Notification.visibility della notifica. |
notification_count | Imposta il numero di elementi rappresentati da questa notifica. Può essere visualizzato come conteggio dei badge per i launcher che supportano i badge. Vedi Badge di notifica . Ad esempio, ciò potrebbe essere utile se utilizzi una sola notifica per rappresentare più nuovi messaggi ma desideri che il conteggio qui rappresenti il numero totale di nuovi messaggi. Se zero o non specificato, i sistemi che supportano il badge utilizzano l'impostazione predefinita, ovvero incrementare un numero visualizzato nel menu a pressione prolungata ogni volta che arriva una nuova notifica. |
light_settings | Impostazioni per controllare la frequenza e il colore di lampeggiamento del LED della notifica se il LED è disponibile sul dispositivo. Il tempo totale di lampeggio è controllato dal sistema operativo. |
image | Contiene l'URL di un'immagine che verrà visualizzata in una notifica. Se presente, sovrascriverà |
Priorità di notifica
Livelli di priorità di una notifica.
Enumerazioni | |
---|---|
PRIORITY_UNSPECIFIED | Se la priorità non è specificata, la priorità di notifica è impostata su PRIORITY_DEFAULT . |
PRIORITY_MIN | Priorità di notifica più bassa. Le notifiche con questo PRIORITY_MIN potrebbero non essere mostrate all'utente se non in circostanze speciali, come log di notifica dettagliati. |
PRIORITY_LOW | Priorità di notifica inferiore. L'interfaccia utente può scegliere di mostrare le notifiche più piccole o in una posizione diversa nell'elenco rispetto alle notifiche con PRIORITY_DEFAULT . |
PRIORITY_DEFAULT | Priorità di notifica predefinita. Se l'applicazione non assegna la priorità alle proprie notifiche, utilizzare questo valore per tutte le notifiche. |
PRIORITY_HIGH | Priorità di notifica più elevata. Utilizzalo per notifiche o avvisi più importanti. L'interfaccia utente può scegliere di mostrare queste notifiche più grandi o in una posizione diversa negli elenchi delle notifiche rispetto alle notifiche con PRIORITY_DEFAULT . |
PRIORITY_MAX | Massima priorità di notifica. Utilizzarlo per gli elementi più importanti dell'applicazione che richiedono l'attenzione o l'input tempestivi dell'utente. |
Visibilità
Diversi livelli di visibilità di una notifica.
Enumerazioni | |
---|---|
VISIBILITY_UNSPECIFIED | Se non specificato, il valore predefinito è Visibility.PRIVATE . |
PRIVATE | Mostra questa notifica su tutte le schermate di blocco, ma nascondi le informazioni sensibili o private sulle schermate di blocco sicure. |
PUBLIC | Mostra questa notifica nella sua interezza su tutte le schermate di blocco. |
SECRET | Non rivelare alcuna parte di questa notifica su una schermata di blocco sicura. |
Impostazioni luce
Impostazioni per controllare il LED di notifica.
Rappresentazione JSON |
---|
{
"color": {
object ( |
Campi | |
---|---|
color | Necessario. Imposta |
light_on_duration | Necessario. Insieme a Una durata in secondi con un massimo di nove cifre frazionarie, che termina con ' |
light_off_duration | Necessario. Insieme a Una durata in secondi con un massimo di nove cifre frazionarie, che termina con ' |
Colore
Rappresenta un colore nello spazio colore RGBA. Questa rappresentazione è progettata per semplicità di conversione da/a rappresentazioni di colori in varie lingue oltre alla compattezza. Ad esempio, i campi di questa rappresentazione possono essere banalmente forniti al costruttore di java.awt.Color
in Java; può anche essere banalmente fornito al metodo +colorWithRed:green:blue:alpha
UIColor in iOS; e, con un po' di lavoro, può essere facilmente formattato in una stringa CSS rgba()
in JavaScript.
Questa pagina di riferimento non contiene informazioni sullo spazio colore assoluto che dovrebbe essere utilizzato per interpretare il valore RGB (ad esempio sRGB, Adobe RGB, DCI-P3, BT.2020, ecc.). Per impostazione predefinita, le applicazioni dovrebbero assumere lo spazio colore sRGB.
Quando è necessario decidere l'uguaglianza dei colori, le implementazioni, se non diversamente documentato, trattano due colori come uguali se tutti i loro valori rosso, verde, blu e alfa differiscono ciascuno al massimo di 1e-5.
Esempio (Java):
import com.google.type.Color;
// ...
public static java.awt.Color fromProto(Color protocolor) {
float alpha = protocolor.hasAlpha()
? protocolor.getAlpha().getValue()
: 1.0;
return new java.awt.Color(
protocolor.getRed(),
protocolor.getGreen(),
protocolor.getBlue(),
alpha);
}
public static Color toProto(java.awt.Color color) {
float red = (float) color.getRed();
float green = (float) color.getGreen();
float blue = (float) color.getBlue();
float denominator = 255.0;
Color.Builder resultBuilder =
Color
.newBuilder()
.setRed(red / denominator)
.setGreen(green / denominator)
.setBlue(blue / denominator);
int alpha = color.getAlpha();
if (alpha != 255) {
result.setAlpha(
FloatValue
.newBuilder()
.setValue(((float) alpha) / denominator)
.build());
}
return resultBuilder.build();
}
// ...
Esempio (iOS / Obj-C):
// ...
static UIColor* fromProto(Color* protocolor) {
float red = [protocolor red];
float green = [protocolor green];
float blue = [protocolor blue];
FloatValue* alpha_wrapper = [protocolor alpha];
float alpha = 1.0;
if (alpha_wrapper != nil) {
alpha = [alpha_wrapper value];
}
return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
}
static Color* toProto(UIColor* color) {
CGFloat red, green, blue, alpha;
if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
return nil;
}
Color* result = [[Color alloc] init];
[result setRed:red];
[result setGreen:green];
[result setBlue:blue];
if (alpha <= 0.9999) {
[result setAlpha:floatWrapperWithValue(alpha)];
}
[result autorelease];
return result;
}
// ...
Esempio (JavaScript):
// ...
var protoToCssColor = function(rgb_color) {
var redFrac = rgb_color.red || 0.0;
var greenFrac = rgb_color.green || 0.0;
var blueFrac = rgb_color.blue || 0.0;
var red = Math.floor(redFrac * 255);
var green = Math.floor(greenFrac * 255);
var blue = Math.floor(blueFrac * 255);
if (!('alpha' in rgb_color)) {
return rgbToCssColor(red, green, blue);
}
var alphaFrac = rgb_color.alpha.value || 0.0;
var rgbParams = [red, green, blue].join(',');
return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
};
var rgbToCssColor = function(red, green, blue) {
var rgbNumber = new Number((red << 16) | (green << 8) | blue);
var hexString = rgbNumber.toString(16);
var missingZeros = 6 - hexString.length;
var resultBuilder = ['#'];
for (var i = 0; i < missingZeros; i++) {
resultBuilder.push('0');
}
resultBuilder.push(hexString);
return resultBuilder.join('');
};
// ...
Rappresentazione JSON |
---|
{ "red": number, "green": number, "blue": number, "alpha": number } |
Campi | |
---|---|
red | La quantità di rosso nel colore come valore nell'intervallo [0, 1]. |
green | La quantità di verde nel colore come valore nell'intervallo [0, 1]. |
blue | La quantità di blu nel colore come valore nell'intervallo [0, 1]. |
alpha | La frazione di questo colore che dovrebbe essere applicata al pixel. Cioè, il colore finale del pixel è definito dall'equazione: Ciò significa che un valore di 1,0 corrisponde a un colore solido, mentre un valore di 0,0 corrisponde a un colore completamente trasparente. Utilizza un messaggio wrapper anziché un semplice scalare float in modo che sia possibile distinguere tra un valore predefinito e il valore che non viene impostato. Se omesso, questo oggetto colore viene reso come un colore solido (come se al valore alfa fosse stato esplicitamente assegnato il valore 1.0). |
Opzioni AndroidFcm
Opzioni per le funzionalità fornite dall'SDK FCM per Android.
Rappresentazione JSON |
---|
{ "analytics_label": string } |
Campi | |
---|---|
analytics_label | Etichetta associata ai dati analitici del messaggio. |
WebpushConfig
Opzioni del protocollo Webpush .
Rappresentazione JSON |
---|
{
"headers": {
string: string,
...
},
"data": {
string: string,
...
},
"notification": {
object
},
"fcm_options": {
object ( |
Campi | |
---|---|
headers | Intestazioni HTTP definite nel protocollo webpush. Fare riferimento al protocollo Webpush per le intestazioni supportate, ad esempio "TTL": "15". Un oggetto contenente un elenco di coppie |
data | Payload chiave/valore arbitrario. Se presente, sovrascriverà Un oggetto contenente un elenco di coppie |
notification | Opzioni di notifica Web come oggetto JSON. Supporta le proprietà dell'istanza di notifica come definite nell'API Web Notification . Se presenti, i campi "titolo" e "corpo" sovrascrivono |
fcm_options | Opzioni per le funzionalità fornite da FCM SDK per il Web. |
WebpushFcmOpzioni
Opzioni per le funzionalità fornite da FCM SDK per il Web.
Rappresentazione JSON |
---|
{ "link": string, "analytics_label": string } |
Campi | |
---|---|
link | Il collegamento da aprire quando l'utente fa clic sulla notifica. Per tutti i valori URL, è obbligatorio HTTPS. |
analytics_label | Etichetta associata ai dati analitici del messaggio. |
ApnsConfig
Opzioni specifiche del servizio di notifica push di Apple .
Rappresentazione JSON |
---|
{
"headers": {
string: string,
...
},
"payload": {
object
},
"fcm_options": {
object ( |
Campi | |
---|---|
headers | Intestazioni delle richieste HTTP definite nel servizio di notifiche push di Apple. Fare riferimento alle intestazioni delle richieste APN per le intestazioni supportate come Il backend imposta un valore predefinito per Un oggetto contenente un elenco di coppie |
payload | Payload APN come oggetto JSON, inclusi sia il dizionario |
fcm_options | Opzioni per le funzionalità fornite dall'SDK FCM per iOS. |
Opzioni ApnsFcm
Opzioni per le funzionalità fornite dall'SDK FCM per iOS.
Rappresentazione JSON |
---|
{ "analytics_label": string, "image": string } |
Campi | |
---|---|
analytics_label | Etichetta associata ai dati analitici del messaggio. |
image | Contiene l'URL di un'immagine che verrà visualizzata in una notifica. Se presente, sovrascriverà |
Opzioni Fcm
Opzioni indipendenti dalla piattaforma per le funzionalità fornite dagli SDK FCM.
Rappresentazione JSON |
---|
{ "analytics_label": string } |
Campi | |
---|---|
analytics_label | Etichetta associata ai dati analitici del messaggio. |
Metodi | |
---|---|
| Invia un messaggio alla destinazione specificata (un token di registrazione, un argomento o una condizione). |