แหล่งข้อมูล: ข้อความ
ข้อความที่จะส่งโดย Firebase Cloud Messaging Service
การแสดง JSON |
---|
{ "name": string, "data": { string: string, ... }, "notification": { object ( |
ช่อง | |
---|---|
name |
เอาต์พุตเท่านั้น ตัวระบุของข้อความที่ส่งในรูปแบบ |
data |
อินพุตเท่านั้น เพย์โหลดคีย์/ค่าที่กำหนดเอง ซึ่งต้องเข้ารหัส UTF-8 คีย์ไม่ควรเป็นคำที่สงวนไว้ ("from", "message_type" หรือคำใดๆ ที่ขึ้นต้นด้วย "google." หรือ "gcm.notification") เมื่อส่งเพย์โหลดที่มีเฉพาะช่องข้อมูลไปยังอุปกรณ์ iOS ระบบจะอนุญาตเฉพาะลำดับความสำคัญปกติ ( ออบเจ็กต์ที่มีรายการคู่ |
notification |
อินพุตเท่านั้น เทมเพลตการแจ้งเตือนพื้นฐานสำหรับใช้ในทุกแพลตฟอร์ม |
android |
อินพุตเท่านั้น ตัวเลือกเฉพาะของ Android สำหรับข้อความที่ส่งผ่านเซิร์ฟเวอร์การเชื่อมต่อ FCM |
webpush |
อินพุตเท่านั้น ตัวเลือกโปรโตคอล Webpush |
apns |
อินพุตเท่านั้น ตัวเลือกเฉพาะสำหรับบริการข้อความ Push ของ Apple |
fcm_options |
อินพุตเท่านั้น เทมเพลตสำหรับตัวเลือกฟีเจอร์ FCM SDK ซึ่งใช้ได้ในทุกแพลตฟอร์ม |
ช่องการรวม target ต้องระบุ อินพุตเท่านั้น กำหนดเป้าหมายที่ต้องการส่งข้อความถึง target ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้ |
|
token |
โทเค็นการลงทะเบียนเพื่อส่งข้อความ |
topic |
ชื่อหัวข้อที่จะส่งข้อความถึง เช่น "สภาพอากาศ" หมายเหตุ: "/topics/" ไม่ควรระบุคำนำหน้า |
condition |
เงื่อนไขในการส่งข้อความถึง เช่น "foo" ในหัวข้อ&& "bar" ในหัวข้อ" |
การแจ้งเตือน
เทมเพลตการแจ้งเตือนพื้นฐานสำหรับใช้ในทุกแพลตฟอร์ม
การแสดง JSON |
---|
{ "title": string, "body": string, "image": string } |
ช่อง | |
---|---|
title |
ชื่อการแจ้งเตือน |
body |
ข้อความเนื้อหาของการแจ้งเตือน |
image |
มี URL ของรูปภาพที่จะดาวน์โหลดในอุปกรณ์และแสดงในการแจ้งเตือน รองรับไฟล์ JPEG, PNG, BMP อย่างเต็มรูปแบบในทุกแพลตฟอร์ม GIF แบบเคลื่อนไหวและวิดีโอใช้ได้กับ iOS เท่านั้น WebP และ HEIF มีระดับการสนับสนุนต่างกันในแพลตฟอร์มและเวอร์ชันแพลตฟอร์มแต่ละเวอร์ชัน Android มีขนาดรูปภาพจำกัดที่ 1 MB การใช้โควต้าและผลกระทบ/ค่าใช้จ่ายสำหรับการโฮสต์รูปภาพในพื้นที่เก็บข้อมูลของ Firebase: https://firebase.google.com/pricing |
AndroidConfig
ตัวเลือกเฉพาะของ Android สำหรับข้อความที่ส่งผ่านเซิร์ฟเวอร์การเชื่อมต่อ FCM
การแสดง JSON |
---|
{ "collapse_key": string, "priority": enum ( |
ช่อง | |
---|---|
collapse_key |
ตัวระบุของกลุ่มข้อความที่สามารถยุบได้ เพื่อให้ระบบส่งเฉพาะข้อความสุดท้ายเมื่อสามารถกลับมาส่งต่อได้ อนุญาตให้มีคีย์ยุบที่แตกต่างกันได้สูงสุด 4 รายการในช่วงเวลาหนึ่ง |
priority |
ลำดับความสำคัญของข้อความ สามารถใช้ค่า "ปกติ" และ "สูง" ดูข้อมูลเพิ่มเติมได้ที่การตั้งค่าลำดับความสำคัญของข้อความ |
ttl |
ระยะเวลา (เป็นวินาที) ที่ระบบจะเก็บข้อความไว้ในพื้นที่เก็บข้อมูล FCM หากอุปกรณ์ออฟไลน์ Time to Live สูงสุดที่รองรับคือ 4 สัปดาห์ และค่าเริ่มต้นคือ 4 สัปดาห์หากไม่ได้ตั้งค่าไว้ ตั้งค่าเป็น 0 ถ้าต้องการส่งข้อความทันที ในรูปแบบ JSON ประเภท Duration จะเข้ารหัสเป็นสตริงแทนที่จะเป็นออบเจ็กต์ โดยสตริงจะลงท้ายด้วยคำต่อท้าย "s" (ระบุวินาที) และจำนวนวินาทีนำหน้าด้วย ส่วนนาโนวินาทีจะแสดงเป็นเศษส่วน เช่น 3 วินาทีที่มี 0 นาโนวินาทีควรเข้ารหัสในรูปแบบ JSON เป็น "3s" ขณะที่ 3 วินาทีและ 1 นาโนวินาทีควรแสดงในรูปแบบ JSON เป็น "3.000000001s" ระบบจะปัดเศษ ttl ลงให้เป็นวินาทีที่ใกล้ที่สุด ระยะเวลาเป็นวินาทีโดยมีเลขเศษส่วนไม่เกิน 9 หลัก ลงท้ายด้วย " |
restricted_package_name |
ชื่อแพ็กเกจของแอปพลิเคชันที่โทเค็นการลงทะเบียนต้องตรงกับจึงจะได้รับข้อความ |
data |
เพย์โหลดคีย์/ค่าที่กำหนดเอง หากมี จะลบล้าง ออบเจ็กต์ที่มีรายการคู่ |
notification |
การแจ้งเตือนที่จะส่งไปยังอุปกรณ์ Android |
fcm_options |
ตัวเลือกสำหรับฟีเจอร์ที่ FCM SDK สำหรับ Android ให้บริการ |
direct_boot_ok |
หากตั้งค่าเป็น "จริง" ระบบจะอนุญาตให้ส่งข้อความไปยังแอปขณะที่อุปกรณ์อยู่ในโหมดเปิดเครื่องโดยตรง โปรดดูโหมดการเปิดเครื่อง Support Direct |
ลำดับความสำคัญของ AndroidMessage
ลำดับความสำคัญของข้อความที่จะส่งไปยังอุปกรณ์ Android โปรดทราบว่าลำดับความสำคัญนี้เป็นแนวคิด FCM ที่ควบคุมเวลาส่งข้อความ โปรดดูคู่มือ FCM นอกจากนี้ คุณยังกำหนดลำดับความสำคัญในการแสดงการแจ้งเตือนในอุปกรณ์ Android เป้าหมายได้โดยใช้ AndroidNotification.NotificationPriority
Enum | |
---|---|
NORMAL |
ลำดับความสำคัญเริ่มต้นสำหรับข้อความข้อมูล ข้อความที่มีลำดับความสำคัญปกติจะไม่เปิดการเชื่อมต่อเครือข่ายในอุปกรณ์ที่นอนหลับ และการส่งอาจล่าช้าเพื่อประหยัดแบตเตอรี่ สำหรับข้อความที่มีเวลาน้อย เช่น การแจ้งเตือนเมื่อมีอีเมลใหม่หรือข้อมูลอื่นให้ซิงค์ ให้เลือกลำดับความสำคัญในการส่งตามปกติ |
HIGH |
ลำดับความสำคัญเริ่มต้นสำหรับข้อความแจ้งเตือน FCM จะพยายามส่งข้อความที่มีลำดับความสำคัญสูงโดยทันที ซึ่งทำให้บริการ FCM ปลุกระบบอุปกรณ์ที่ใช้งานได้เมื่อเป็นไปได้ และเปิดการเชื่อมต่อเครือข่ายกับเซิร์ฟเวอร์แอปของคุณ ตัวอย่างเช่น โดยทั่วไปแอปที่มีการรับส่งข้อความโต้ตอบแบบทันที แชท หรือการโทรด้วยเสียงต้องเปิดการเชื่อมต่อเครือข่าย และตรวจสอบว่า FCM ส่งข้อความไปยังอุปกรณ์โดยไม่ล่าช้า ตั้งค่าลำดับความสำคัญสูงหากข้อความมีเวลามากและผู้ใช้ต้องโต้ตอบได้ทันที แต่โปรดระวังว่าการตั้งค่าข้อความเป็นลำดับความสำคัญสูงจะทำให้แบตเตอรี่หมดเร็วขึ้นเมื่อเทียบกับข้อความที่มีลำดับความสำคัญปกติ |
การแจ้งเตือนของ Android
การแจ้งเตือนที่จะส่งไปยังอุปกรณ์ Android
การแสดง 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 ( |
ช่อง | |
---|---|
title |
ชื่อการแจ้งเตือน หากมี จะลบล้าง |
body |
ข้อความเนื้อหาของการแจ้งเตือน หากมี จะลบล้าง |
icon |
ไอคอนการแจ้งเตือน ตั้งค่าไอคอนการแจ้งเตือนเป็น myicon สำหรับ myicon แหล่งข้อมูลที่ถอนออกได้ หากคุณไม่ส่งคีย์นี้ในคำขอ FCM จะแสดงไอคอน Launcher ที่ระบุไว้ในไฟล์ Manifest ของแอป |
color |
สีของไอคอนการแจ้งเตือน ซึ่งอยู่ในรูปแบบ #rrggbb |
sound |
เสียงที่จะเล่นเมื่ออุปกรณ์ได้รับการแจ้งเตือน รองรับ "ค่าเริ่มต้น" หรือชื่อไฟล์ของแหล่งข้อมูลเสียงที่รวมอยู่ในแอป ไฟล์เสียงต้องอยู่ใน /res/raw/ |
tag |
ตัวระบุที่ใช้แทนที่การแจ้งเตือนที่มีอยู่ในลิ้นชักการแจ้งเตือน หากไม่ระบุ คำขอแต่ละรายการจะสร้างการแจ้งเตือนใหม่ หากมีการระบุและการแจ้งเตือนที่มีแท็กเดียวกันอยู่แล้ว การแจ้งเตือนใหม่จะแทนที่การแจ้งเตือนที่มีอยู่ในลิ้นชักการแจ้งเตือน |
click_action |
การดำเนินการที่เชื่อมโยงกับผู้ใช้คลิกการแจ้งเตือน หากระบุไว้ ระบบจะเปิดใช้งานกิจกรรมที่มีตัวกรอง Intent ตรงกันเมื่อผู้ใช้คลิกการแจ้งเตือน |
body_loc_key |
คีย์ของสตริงเนื้อหาในทรัพยากรสตริงของแอปที่จะใช้ในการแปลเนื้อหาให้เป็นการแปลเป็นภาษาปัจจุบันของผู้ใช้ ดูทรัพยากรสตริงสำหรับข้อมูลเพิ่มเติม |
body_loc_args[] |
ค่าสตริงตัวแปรที่จะใช้แทนตัวระบุรูปแบบใน body_loc_key เพื่อใช้ปรับเนื้อหาให้เป็นภาษาท้องถิ่นปัจจุบันของผู้ใช้ ดูข้อมูลเพิ่มเติมที่การจัดรูปแบบและการจัดรูปแบบ |
title_loc_key |
คีย์ของสตริงชื่อในทรัพยากรสตริงของแอปเพื่อใช้ในการแปลข้อความชื่อตามการแปลเป็นภาษาปัจจุบันของผู้ใช้ ดูทรัพยากรสตริงสำหรับข้อมูลเพิ่มเติม |
title_loc_args[] |
ค่าสตริงตัวแปรที่จะใช้แทนตัวระบุรูปแบบใน title_loc_key เพื่อใช้ในการแปลข้อความชื่อเป็นภาษาปัจจุบันของผู้ใช้ ดูข้อมูลเพิ่มเติมที่การจัดรูปแบบและการจัดรูปแบบ |
channel_id |
รหัสช่องของการแจ้งเตือน (ใหม่ใน Android O) แอปต้องสร้างช่องโดยใช้รหัสช่องนี้ก่อนที่จะได้รับการแจ้งเตือนที่มีรหัสช่องนี้ หากคุณไม่ได้ส่งรหัสช่องนี้ในคำขอ หรือหากแอปยังไม่ได้สร้างรหัสช่องที่ระบุ FCM จะใช้รหัสช่องที่ระบุไว้ในไฟล์ Manifest ของแอป |
ticker |
ตั้งค่า "ทิกเกอร์" ซึ่งส่งไปยังบริการการช่วยเหลือพิเศษ ก่อนหน้า API ระดับ 21 ( |
sticky |
เมื่อตั้งค่าเป็น "เท็จ" หรือไม่ได้ตั้งค่า ระบบจะปิดการแจ้งเตือนโดยอัตโนมัติเมื่อผู้ใช้คลิกที่การแจ้งเตือนในแผง เมื่อตั้งค่าเป็น "จริง" การแจ้งเตือนจะยังคงอยู่แม้ว่าผู้ใช้จะคลิกก็ตาม |
event_time |
กำหนดเวลาที่กิจกรรมในการแจ้งเตือนเกิดขึ้น การแจ้งเตือนในแผงจะจัดเรียงตามเวลานี้ จุดเวลาจะแสดงโดยใช้ protocolbuf.Timestamp การประทับเวลาเป็น RFC3339 UTC "Zulu" โดยมีความละเอียดระดับนาโนวินาทีและมีเลขเศษส่วนสูงสุด 9 หลัก ตัวอย่าง: |
local_only |
ตั้งค่าว่าการแจ้งเตือนนี้เกี่ยวข้องกับอุปกรณ์ปัจจุบันเท่านั้นหรือไม่ การแจ้งเตือนบางอย่างสามารถเชื่อมโยงกับอุปกรณ์อื่นๆ เพื่อแสดงผลระยะไกล เช่น นาฬิกา Wear OS คำแนะนำนี้สามารถตั้งค่าเพื่อแนะนำว่าไม่ต้องเชื่อมต่อการแจ้งเตือนนี้ ดูคู่มือ Wear OS |
notification_priority |
กำหนดลำดับความสำคัญที่เกี่ยวข้องสำหรับการแจ้งเตือนนี้ ลำดับความสำคัญเป็นตัวบ่งชี้ว่าการแจ้งเตือนนี้ควรดึงดูดความสนใจของผู้ใช้มากเพียงใด ผู้ใช้อาจซ่อนการแจ้งเตือนที่มีลำดับความสำคัญต่ำในบางสถานการณ์ ในขณะที่ผู้ใช้อาจถูกขัดจังหวะสำหรับการแจ้งเตือนที่มีลำดับความสำคัญสูงกว่า ผลของการตั้งค่าลำดับความสำคัญเดียวกันอาจแตกต่างกันไปเล็กน้อยในแพลตฟอร์มต่างๆ โปรดทราบว่าลำดับความสำคัญนี้แตกต่างจาก |
default_sound |
หากตั้งค่าเป็น "จริง" ให้ใช้เสียงเริ่มต้นของเฟรมเวิร์ก Android สำหรับการแจ้งเตือน ค่าเริ่มต้นจะระบุอยู่ใน config.xml |
default_vibrate_timings |
หากตั้งค่าเป็น "จริง" ให้ใช้รูปแบบการสั่นเริ่มต้นของเฟรมเวิร์ก Android สำหรับการแจ้งเตือน ค่าเริ่มต้นจะระบุอยู่ใน config.xml หากตั้งค่า |
default_light_settings |
หากตั้งค่าเป็น "จริง" ให้ใช้การตั้งค่าไฟ LED เริ่มต้นของเฟรมเวิร์ก Android สำหรับการแจ้งเตือน ค่าเริ่มต้นจะระบุอยู่ใน config.xml หากตั้งค่า |
vibrate_timings[] |
ตั้งค่ารูปแบบการสั่นที่จะใช้ ส่งอาร์เรย์ protocolbuf.Duration เพื่อเปิดหรือปิดการสั่น ค่าแรกบ่งชี้ถึง ระยะเวลาเป็นวินาทีโดยมีเลขเศษส่วนไม่เกิน 9 หลัก ลงท้ายด้วย " |
visibility |
ตั้งค่า Notification.visibility ของการแจ้งเตือน |
notification_count |
กำหนดจำนวนรายการที่การแจ้งเตือนนี้แสดง อาจแสดงเป็นจำนวนป้ายสำหรับ Launcher ที่รองรับการติดป้าย ดูป้ายการแจ้งเตือน เช่น การแจ้งเตือนอาจเป็นประโยชน์หากคุณใช้การแจ้งเตือนเพียงรายการเดียวเพื่อแสดงข้อความใหม่หลายข้อความ แต่คุณต้องการให้จำนวนดังกล่าวแสดงถึงจำนวนข้อความใหม่ทั้งหมด หากไม่มีหรือไม่ได้ระบุ ระบบที่รองรับการติดป้ายจะใช้ค่าเริ่มต้น ซึ่งเป็นการเพิ่มตัวเลขที่แสดงในเมนูการกดค้างทุกครั้งที่มีการแจ้งเตือนใหม่เข้ามา |
light_settings |
การตั้งค่าเพื่อควบคุมอัตราการกะพริบและสีของไฟ LED สำหรับการแจ้งเตือนหากไฟ LED พร้อมใช้งานในอุปกรณ์ เวลาที่จะกะพริบทั้งหมดจะควบคุมโดยระบบปฏิบัติการ |
image |
มี URL ของรูปภาพที่จะแสดงในการแจ้งเตือน หากมี จะลบล้าง |
bypass_proxy_notification |
หากตั้งค่าไว้ แอปจะแสดงการแจ้งเตือนที่ส่งไปยังอุปกรณ์แทนพร็อกซี |
proxy |
การตั้งค่าเพื่อควบคุมว่าการแจ้งเตือนอาจส่งผ่านพร็อกซีเมื่อใด |
ลำดับความสำคัญของการแจ้งเตือน
ระดับความสำคัญของการแจ้งเตือน
Enum | |
---|---|
PRIORITY_UNSPECIFIED |
หากไม่ได้ระบุลำดับความสำคัญ ระบบจะตั้งค่าลำดับความสำคัญของการแจ้งเตือนเป็น PRIORITY_DEFAULT |
PRIORITY_MIN |
ลำดับความสำคัญของการแจ้งเตือนต่ำสุด การแจ้งเตือนที่มี PRIORITY_MIN นี้อาจไม่แสดงต่อผู้ใช้ ยกเว้นในกรณีพิเศษ เช่น บันทึกการแจ้งเตือนโดยละเอียด |
PRIORITY_LOW |
ลดลำดับความสำคัญของการแจ้งเตือน UI อาจเลือกแสดงการแจ้งเตือนน้อยลงหรืออยู่ในตำแหน่งอื่นในรายการ เมื่อเทียบกับการแจ้งเตือนที่มี PRIORITY_DEFAULT |
PRIORITY_DEFAULT |
ลำดับความสำคัญของการแจ้งเตือนเริ่มต้น หากแอปพลิเคชันไม่ได้จัดลำดับความสำคัญของการแจ้งเตือนของตัวเอง ให้ใช้ค่านี้สำหรับการแจ้งเตือนทั้งหมด |
PRIORITY_HIGH |
ลำดับความสำคัญของการแจ้งเตือนที่สูงขึ้น ใช้เพื่อการแจ้งเตือนที่สำคัญยิ่งขึ้น UI อาจเลือกแสดงการแจ้งเตือนเหล่านี้ขนาดใหญ่ขึ้นหรืออยู่ในตำแหน่งอื่นในรายการการแจ้งเตือน เมื่อเทียบกับการแจ้งเตือนที่มี PRIORITY_DEFAULT |
PRIORITY_MAX |
ลำดับความสำคัญของการแจ้งเตือนสูงสุด ใช้สิ่งนี้สำหรับรายการที่สำคัญที่สุดของแอปพลิเคชันซึ่งผู้ใช้ต้องให้ความสนใจหรือป้อนข้อมูล |
ระดับการเข้าถึง
ระดับการมองเห็นการแจ้งเตือนที่แตกต่างกัน
Enum | |
---|---|
VISIBILITY_UNSPECIFIED |
หากไม่ระบุ ค่าเริ่มต้นจะเป็น Visibility.PRIVATE |
PRIVATE |
แสดงการแจ้งเตือนนี้ในหน้าจอล็อกทั้งหมด แต่ให้ปกปิดข้อมูลที่ละเอียดอ่อนหรือข้อมูลส่วนตัวในหน้าจอล็อกที่ปลอดภัย |
PUBLIC |
แสดงการแจ้งเตือนนี้ทั้งหมดบนหน้าจอล็อกทั้งหมด |
SECRET |
อย่าเปิดเผยส่วนใดๆ ของการแจ้งเตือนนี้บนหน้าจอล็อกที่ปลอดภัย |
การตั้งค่าแสง
การตั้งค่าเพื่อควบคุม LED การแจ้งเตือน
การแสดง JSON |
---|
{
"color": {
object ( |
ช่อง | |
---|---|
color |
ต้องระบุ ตั้งค่า |
light_on_duration |
ต้องระบุ กำหนดอัตราการกะพริบของแฟลช LED พร้อมกับ ระยะเวลาเป็นวินาทีโดยมีเลขเศษส่วนไม่เกิน 9 หลัก ลงท้ายด้วย " |
light_off_duration |
ต้องระบุ กำหนดอัตราการกะพริบของแฟลช LED พร้อมกับ ระยะเวลาเป็นวินาทีโดยมีเลขเศษส่วนไม่เกิน 9 หลัก ลงท้ายด้วย " |
สี
แสดงสีในพื้นที่สี RGBA การนำเสนอนี้ออกแบบมาให้ง่ายต่อการแปลงเป็นและจากการแสดงสีในภาษาต่างๆ ที่กระชับได้ใจความ ตัวอย่างเช่น ช่องของการนำเสนอนี้สามารถใส่เล็กน้อยให้กับเครื่องมือสร้าง java.awt.Color
ใน Java สามารถระบุเมธอด +colorWithRed:green:blue:alpha
ของ UIColor ใน iOS ได้เพียงเล็กน้อย เพียงทำเล็กน้อยเท่านั้น คุณก็สามารถจัดรูปแบบเป็นสตริง CSS rgba()
ใน JavaScript ได้อย่างง่ายดาย
หน้าอ้างอิงนี้ไม่มีข้อมูลเกี่ยวกับพื้นที่สีสัมบูรณ์ที่ควรใช้ในการตีความค่า RGB เช่น sRGB, Adobe RGB, DCI-P3 และ BT.2020 โดยค่าเริ่มต้น แอปพลิเคชันควรใช้พื้นที่สี sRGB
เมื่อต้องตัดสินใจเลือกความเท่าเทียมกันของสี การติดตั้งใช้งานจะถือว่าสี 2 สีเท่ากัน เว้นแต่จะระบุไว้เป็นอย่างอื่น โดยค่าสีแดง เขียว น้ำเงิน และอัลฟ่าทั้งหมดต่างกันไม่เกิน 1e-5
ตัวอย่าง (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();
}
// ...
ตัวอย่างเช่น (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;
}
// ...
ตัวอย่าง (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('');
};
// ...
การแสดง JSON |
---|
{ "red": number, "green": number, "blue": number, "alpha": number } |
ช่อง | |
---|---|
red |
ปริมาณสีแดงของสีเป็นค่าในช่วง [0, 1] |
green |
ปริมาณสีเขียวของสีเป็นค่าในช่วง [0, 1] |
blue |
ปริมาณของสีน้ำเงินเป็นค่าในช่วง [0, 1] |
alpha |
เศษส่วนของสีนี้ที่ควรใช้กับพิกเซล กล่าวคือ สีของพิกเซลสุดท้ายจะกำหนดโดยสมการต่อไปนี้
หมายความว่าค่า 1.0 จะเท่ากับสีทึบ ในขณะที่ค่า 0.0 คือสีที่โปร่งใสทั้งหมด การดำเนินการนี้จะใช้ข้อความ Wrapper แทนสเกลาร์ Float แบบง่ายเพื่อให้แยกความแตกต่างระหว่างค่าเริ่มต้นกับค่าที่ไม่ได้ตั้งค่าได้ หากละเว้น วัตถุสีนี้จะแสดงเป็นสีทึบ (เสมือนว่าค่าอัลฟ่าได้รับค่าเป็น 1.0 อย่างชัดเจน) |
พร็อกซี
การตั้งค่าเพื่อควบคุมว่าการแจ้งเตือนอาจส่งผ่านพร็อกซีเมื่อใด
Enum | |
---|---|
PROXY_UNSPECIFIED |
หากไม่ระบุ ค่าเริ่มต้นจะเป็น Proxy.IF_PRIORITY_LOWERED |
ALLOW |
ลองใช้พร็อกซีการแจ้งเตือนนี้ |
DENY |
อย่าพร็อกซีการแจ้งเตือนนี้ |
IF_PRIORITY_LOWERED |
ลองใช้พร็อกซีการแจ้งเตือนนี้เฉพาะในกรณีที่AndroidMessagePriority ลดลงจาก HIGH เป็น NORMAL ในอุปกรณ์ |
ตัวเลือก AndroidFcm
ตัวเลือกสำหรับฟีเจอร์ที่ FCM SDK สำหรับ Android ให้บริการ
การแสดง JSON |
---|
{ "analytics_label": string } |
ช่อง | |
---|---|
analytics_label |
ป้ายกำกับที่เชื่อมโยงกับข้อมูลการวิเคราะห์ของข้อความ |
WebpushConfig
ตัวเลือกโปรโตคอล Webpush
การแสดง JSON |
---|
{
"headers": {
string: string,
...
},
"data": {
string: string,
...
},
"notification": {
object
},
"fcm_options": {
object ( |
ช่อง | |
---|---|
headers |
ส่วนหัว HTTP ที่กำหนดไว้ในโปรโตคอล Webpush โปรดดูส่วนหัวที่รองรับในโปรโตคอล Webpush เช่น "TTL": "15" ออบเจ็กต์ที่มีรายการคู่ |
data |
เพย์โหลดคีย์/ค่าที่กำหนดเอง หากมี จะลบล้าง ออบเจ็กต์ที่มีรายการคู่ |
notification |
ตัวเลือกการแจ้งเตือนบนเว็บเป็นออบเจ็กต์ JSON รองรับพร็อพเพอร์ตี้อินสแตนซ์การแจ้งเตือนตามที่ระบุไว้ใน Web Notification API หากมี "title" และ "เนื้อความ" ช่องจะลบล้าง |
fcm_options |
ตัวเลือกสำหรับฟีเจอร์ที่ FCM SDK สำหรับเว็บ |
ตัวเลือก WebpushFcm
ตัวเลือกสำหรับฟีเจอร์ที่ FCM SDK สำหรับเว็บ
การแสดง JSON |
---|
{ "link": string, "analytics_label": string } |
ช่อง | |
---|---|
link |
ลิงก์ที่จะเปิดเมื่อผู้ใช้คลิกที่การแจ้งเตือน ค่า URL ทั้งหมดต้องใช้ HTTPS |
analytics_label |
ป้ายกำกับที่เชื่อมโยงกับข้อมูลการวิเคราะห์ของข้อความ |
ApnsConfig
ตัวเลือกเฉพาะสำหรับบริการข้อความ Push ของ Apple
การแสดง JSON |
---|
{
"headers": {
string: string,
...
},
"payload": {
object
},
"fcm_options": {
object ( |
ช่อง | |
---|---|
headers |
ส่วนหัวคำขอ HTTP ที่กำหนดไว้ในบริการข้อความ Push ของ Apple โปรดดูส่วนหัวของคำขอ AAP สำหรับส่วนหัวที่รองรับ เช่น แบ็กเอนด์จะตั้งค่าเริ่มต้นไว้ที่ ออบเจ็กต์ที่มีรายการคู่ |
payload |
เพย์โหลด APN เป็นออบเจ็กต์ JSON ซึ่งรวมถึงทั้งพจนานุกรม |
fcm_options |
ตัวเลือกสำหรับฟีเจอร์ที่ FCM SDK สำหรับ iOS ให้บริการ |
ตัวเลือก ApnsFcm
ตัวเลือกสำหรับฟีเจอร์ที่ FCM SDK สำหรับ iOS ให้บริการ
การแสดง JSON |
---|
{ "analytics_label": string, "image": string } |
ช่อง | |
---|---|
analytics_label |
ป้ายกำกับที่เชื่อมโยงกับข้อมูลการวิเคราะห์ของข้อความ |
image |
มี URL ของรูปภาพที่จะแสดงในการแจ้งเตือน หากมี จะลบล้าง |
ตัวเลือก Fcm
ตัวเลือกที่เป็นอิสระจากแพลตฟอร์มสำหรับฟีเจอร์ที่ FCM SDK มีให้
การแสดง JSON |
---|
{ "analytics_label": string } |
ช่อง | |
---|---|
analytics_label |
ป้ายกำกับที่เชื่อมโยงกับข้อมูลการวิเคราะห์ของข้อความ |
เมธอด |
|
---|---|
|
ส่งข้อความไปยังเป้าหมายที่ระบุ (โทเค็นการลงทะเบียน หัวข้อ หรือเงื่อนไข) |