แหล่งข้อมูล: ข้อความ
ข้อความที่จะส่งโดยบริการ Firebase Cloud Messaging
การแสดง JSON |
---|
{ "name": string, "data": { string: string, ... }, "notification": { object ( |
ช่อง | |
---|---|
name |
เอาต์พุตเท่านั้น ตัวระบุของข้อความที่ส่งในรูปแบบ |
data |
อินพุตเท่านั้น เพย์โหลดคีย์/ค่าที่กำหนดเอง ซึ่งต้องเข้ารหัส UTF-8 คีย์ไม่ควรเป็นคำที่สงวนไว้ ("from", "message_type" หรือคำใดๆ ที่ขึ้นต้นด้วย "google" หรือ "gcm") เมื่อส่งเพย์โหลดที่มีเฉพาะฟิลด์ข้อมูลไปยังอุปกรณ์ 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 |
การกำหนดค่า Android
ตัวเลือกเฉพาะสำหรับ Android สำหรับข้อความที่ส่งผ่านเซิร์ฟเวอร์การเชื่อมต่อ FCM
การแสดง JSON |
---|
{ "collapse_key": string, "priority": enum ( |
ช่อง | |
---|---|
collapse_key |
ตัวระบุของกลุ่มข้อความที่สามารถยุบได้ เพื่อให้ระบบส่งเฉพาะข้อความสุดท้ายเมื่อทำให้การนำส่งกลับมาทำงานอีกครั้ง อนุญาตให้ใช้คีย์ยุบที่แตกต่างกันได้สูงสุด 4 คีย์ในช่วงเวลาหนึ่งๆ |
priority |
ลำดับความสำคัญของข้อความ อาจใช้ค่า "ปกติ" และ "สูง" ดูข้อมูลเพิ่มเติมได้ที่การตั้งค่าลำดับความสำคัญของข้อความ |
ttl |
ระยะเวลา (เป็นวินาที) ที่ควรเก็บข้อความไว้ในพื้นที่เก็บข้อมูล FCM หากอุปกรณ์ออฟไลน์ Time to Live สูงสุดที่รองรับคือ 4 สัปดาห์ และค่าเริ่มต้นจะเป็น 4 สัปดาห์ หากไม่ได้ตั้งค่าไว้ หากต้องการส่งข้อความทันที ให้กำหนดค่าเป็น 0 ในรูปแบบ JSON ประเภทระยะเวลาจะเข้ารหัสเป็นสตริงแทนที่จะเป็นออบเจ็กต์ โดยสตริงจะลงท้ายด้วย "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 |
หากตั้งค่าเป็น "จริง" ระบบจะอนุญาตให้ส่งข้อความไปยังแอปขณะที่อุปกรณ์อยู่ในโหมดการเปิดเครื่องโดยตรง โปรดดูโหมดการเปิดเครื่อง Direct การรองรับ |
ลำดับความสำคัญของข้อความ Android
ลำดับความสำคัญของข้อความที่จะส่งไปยังอุปกรณ์ 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 |
ตั้งเวลาที่กิจกรรมในการแจ้งเตือนเกิดขึ้น การแจ้งเตือนในแผงจะจัดเรียงตามเวลานี้ ช่วงเวลาจะแสดงโดยใช้ ctrbuf.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[] |
ตั้งค่ารูปแบบการสั่นที่จะใช้ ส่งต่อช่วง masterbuf.Duration เพื่อเปิดหรือปิดการสั่น ค่าแรกบ่งบอกว่า ระยะเวลาเป็นวินาทีที่มีเลขเศษส่วนไม่เกิน 9 หลัก ลงท้ายด้วย " |
visibility |
ตั้งค่า Notification.visibility ของการแจ้งเตือน |
notification_count |
กำหนดจำนวนรายการที่การแจ้งเตือนนี้แสดง อาจแสดงเป็นจำนวนป้ายสำหรับ Launcher ที่รองรับการติดป้าย โปรดดูป้ายการแจ้งเตือน ตัวอย่างเช่น วิธีนี้อาจเป็นประโยชน์หากคุณใช้การแจ้งเตือนเพียงรายการเดียวเพื่อแสดงข้อความใหม่หลายข้อความ แต่คุณต้องการให้จำนวนที่แสดงที่นี่แสดงจำนวนข้อความใหม่ทั้งหมด หากไม่มีหรือไม่ได้ระบุ ระบบที่รองรับการติดป้ายจะใช้ค่าเริ่มต้น ซึ่งจะเพิ่มตัวเลขที่แสดงบนเมนูแบบกดค้างทุกครั้งที่มีการแจ้งเตือนใหม่เข้ามา |
light_settings |
การตั้งค่าเพื่อควบคุมอัตราการกะพริบและสีไฟ LED ของการแจ้งเตือนหากอุปกรณ์มีไฟ LED ระบบปฏิบัติการจะควบคุมเวลาในการกะพริบทั้งหมด |
image |
มี URL ของรูปภาพที่จะแสดงในการแจ้งเตือน หากมี จะลบล้าง |
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 แทนที่จะเป็นสเกลาร์ลอยตัวแบบง่ายเพื่อให้แยกความแตกต่างระหว่างค่าเริ่มต้นกับค่าที่ไม่ได้ตั้งค่าได้ หากไม่ระบุ วัตถุสีนี้จะแสดงเป็นสีทึบ (เสมือนว่าค่าอัลฟ่าได้รับการระบุอย่างชัดเจนว่าเป็น 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 หากมี ช่อง "ชื่อ" และ "เนื้อหา" จะลบล้าง |
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 โปรดดูส่วนหัวที่รองรับในส่วนหัวของคำขอ AAPN เช่น แบ็กเอนด์ตั้งค่าเริ่มต้นสำหรับ ออบเจ็กต์ที่มีรายการคู่ |
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 |
ป้ายกำกับที่เชื่อมโยงกับข้อมูลการวิเคราะห์ของข้อความ |
เมธอด |
|
---|---|
|
ส่งข้อความไปยังเป้าหมายที่ระบุ (โทเค็นการลงทะเบียน หัวข้อ หรือเงื่อนไข) |