แหล่งข้อมูล: ข้อความ
ข้อความที่จะส่งโดย Firebase Cloud Messaging Service
การเป็นตัวแทน 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 | อินพุตเท่านั้น ตัวเลือกเฉพาะ ของบริการแจ้งเตือน Apple Push |
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 มีขนาดรูปภาพจำกัดที่ 1MB การใช้โควต้าและผลกระทบ/ต้นทุนสำหรับการโฮสต์ภาพบน Firebase Storage: https://firebase.google.com/pricing |
AndroidConfig
ตัวเลือกเฉพาะของ Android สำหรับข้อความที่ส่งผ่าน เซิร์ฟเวอร์การเชื่อมต่อ FCM
การเป็นตัวแทน JSON |
---|
{ "collapse_key": string, "priority": enum ( |
เขตข้อมูล | |
---|---|
collapse_key | ตัวระบุของกลุ่มข้อความที่สามารถยุบได้ เพื่อให้ส่งเฉพาะข้อความสุดท้ายเมื่อสามารถดำเนินการส่งต่อได้ อนุญาตให้ใช้คีย์การยุบที่แตกต่างกันได้สูงสุด 4 รายการในช่วงเวลาที่กำหนด |
priority | ลำดับความสำคัญของข้อความ สามารถรับค่า "ปกติ" และ "สูง" ได้ สำหรับข้อมูลเพิ่มเติม โปรดดูที่ การตั้งค่าลำดับความสำคัญของข้อความ |
ttl | ควรเก็บข้อความไว้ในพื้นที่เก็บข้อมูล FCM นานเท่าใด (เป็นวินาที) หากอุปกรณ์ออฟไลน์อยู่ ระยะเวลาสูงสุดในการสนับสนุนคือ 4 สัปดาห์ และค่าเริ่มต้นคือ 4 สัปดาห์หากไม่ได้ตั้งค่าไว้ ตั้งค่าเป็น 0 หากต้องการส่งข้อความทันที ในรูปแบบ JSON ประเภทระยะเวลาจะถูกเข้ารหัสเป็นสตริงแทนที่จะเป็นอ็อบเจ็กต์ โดยที่สตริงลงท้ายด้วยส่วนต่อท้าย "s" (หมายถึงวินาที) และนำหน้าด้วยจำนวนวินาที โดยนาโนวินาทีจะแสดงเป็นเศษส่วนวินาที ตัวอย่างเช่น 3 วินาทีที่มี 0 นาโนวินาทีควรเข้ารหัสในรูปแบบ JSON เป็น "3s" ในขณะที่ 3 วินาทีและ 1 นาโนวินาทีควรแสดงในรูปแบบ JSON เป็น "3.000000001s" ttl จะถูกปัดเศษลงเป็นวินาทีที่ใกล้ที่สุด ระยะเวลาเป็นวินาทีโดยมีเศษส่วนไม่เกินเก้าหลัก และลงท้ายด้วย ' |
restricted_package_name | ชื่อแพ็คเกจของแอปพลิเคชันที่โทเค็นการลงทะเบียนต้องตรงกันจึงจะรับข้อความได้ |
data | เพย์โหลดคีย์/ค่าที่กำหนดเอง หากมีอยู่ ระบบจะแทนที่ วัตถุที่มีรายการ |
notification | การแจ้งเตือนให้ส่งไปยังอุปกรณ์ Android |
fcm_options | ตัวเลือกสำหรับคุณสมบัติที่มีให้โดย FCM SDK สำหรับ Android |
direct_boot_ok | หากตั้งค่าเป็นจริง ข้อความจะได้รับอนุญาตให้ส่งข้อความไปยังแอปในขณะที่อุปกรณ์อยู่ในโหมดบูตโดยตรง ดู การสนับสนุนโหมดบูตโดยตรง |
ลำดับความสำคัญของข้อความ Android
ลำดับความสำคัญของข้อความที่จะส่งไปยังอุปกรณ์ Android โปรดทราบว่าลำดับความสำคัญนี้เป็นแนวคิด FCM ที่ควบคุมว่าจะส่งข้อความเมื่อใด ดู คำแนะนำ FCM นอกจากนี้ คุณยังสามารถกำหนดลำดับความสำคัญในการแสดงการแจ้งเตือนบนอุปกรณ์ Android เป้าหมายได้โดยใช้ AndroidNotification.NotificationPriority
เอนัม | |
---|---|
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 ที่ระบุในรายการแอปของคุณ |
color | สีไอคอนการแจ้งเตือน ซึ่งแสดงในรูปแบบ #rrggbb |
sound | เสียงที่จะเล่นเมื่ออุปกรณ์ได้รับการแจ้งเตือน รองรับ "ค่าเริ่มต้น" หรือชื่อไฟล์ของทรัพยากรเสียงที่รวมอยู่ในแอป ไฟล์เสียงต้องอยู่ใน /res/raw/ |
tag | ตัวระบุที่ใช้แทนที่การแจ้งเตือนที่มีอยู่ในลิ้นชักการแจ้งเตือน หากไม่ได้ระบุ แต่ละคำขอจะสร้างการแจ้งเตือนใหม่ หากระบุไว้และมีการแสดงการแจ้งเตือนที่มีแท็กเดียวกันอยู่แล้ว การแจ้งเตือนใหม่จะแทนที่การแจ้งเตือนที่มีอยู่ในลิ้นชักการแจ้งเตือน |
click_action | การกระทำที่เกี่ยวข้องกับการคลิกของผู้ใช้ในการแจ้งเตือน หากระบุไว้ กิจกรรมที่มีตัวกรองเจตนาที่ตรงกันจะถูกเปิดใช้งานเมื่อผู้ใช้คลิกที่การแจ้งเตือน |
body_loc_key | คีย์สำหรับสตริงเนื้อหาในทรัพยากรสตริงของแอปเพื่อใช้แปลข้อความเนื้อหาเป็นการแปลปัจจุบันของผู้ใช้ ดู ทรัพยากรสตริง สำหรับข้อมูลเพิ่มเติม |
body_loc_args[] | ค่าสตริงตัวแปรที่จะใช้แทนตัวระบุรูปแบบใน body_loc_key เพื่อใช้ในการแปลข้อความเนื้อหาให้เป็นการแปลปัจจุบันของผู้ใช้ ดู การจัดรูปแบบและการจัดสไตล์ สำหรับข้อมูลเพิ่มเติม |
title_loc_key | คีย์ของสตริงชื่อในทรัพยากรสตริงของแอปเพื่อใช้แปลข้อความชื่อเป็นการแปลปัจจุบันของผู้ใช้ ดู ทรัพยากรสตริง สำหรับข้อมูลเพิ่มเติม |
title_loc_args[] | ค่าสตริงตัวแปรที่จะใช้แทนตัวระบุรูปแบบใน title_loc_key เพื่อใช้ในการแปลข้อความชื่อเรื่องให้เป็นการแปลปัจจุบันของผู้ใช้ ดู การจัดรูปแบบและการจัดสไตล์ สำหรับข้อมูลเพิ่มเติม |
channel_id | รหัสช่องทางการแจ้งเตือน (ใหม่ใน Android O) แอปต้องสร้างช่องด้วยรหัสช่องนี้ก่อนจะได้รับการแจ้งเตือนด้วยรหัสช่องนี้ หากคุณไม่ส่งรหัสช่องนี้ในคำขอ หรือหากแอปยังไม่ได้สร้างรหัสช่องที่ระบุ FCM จะใช้รหัสช่องที่ระบุในรายการแอป |
ticker | ตั้งค่าข้อความ "สัญลักษณ์" ซึ่งจะถูกส่งไปยังบริการการเข้าถึง ก่อนหน้า API ระดับ 21 ( |
sticky | เมื่อตั้งค่าเป็นเท็จหรือไม่ได้ตั้งค่า การแจ้งเตือนจะถูกปิดโดยอัตโนมัติเมื่อผู้ใช้คลิกการแจ้งเตือนในแผง เมื่อตั้งค่าเป็นจริง การแจ้งเตือนจะยังคงอยู่แม้ว่าผู้ใช้จะคลิกก็ตาม |
event_time | ตั้งเวลาที่เกิดเหตุการณ์ในการแจ้งเตือน การแจ้งเตือนในแผงจะจัดเรียงตามเวลานี้ จุดในเวลาแสดงโดยใช้ protobuf.Timestamp การประทับเวลาในรูปแบบ RFC3339 UTC "Zulu" ที่มีความละเอียดระดับนาโนวินาทีและเศษส่วนสูงสุดเก้าหลัก ตัวอย่าง: |
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[] | กำหนดรูปแบบการสั่นที่จะใช้ ส่งผ่านอาร์เรย์ของ protobuf ระยะเวลา ในการเปิดหรือปิดเครื่องสั่น ค่าแรกระบุ ระยะเวลาเป็นวินาทีโดยมีเศษส่วนไม่เกินเก้าหลัก และลงท้ายด้วย ' |
visibility | ตั้ง ค่าการมองเห็นการแจ้ง เตือนของการแจ้งเตือน |
notification_count | กำหนดจำนวนรายการที่การแจ้งเตือนนี้เป็นตัวแทน อาจแสดงเป็นจำนวนป้ายสำหรับตัวเรียกใช้งานที่รองรับการติดป้าย ดู ป้ายแจ้งเตือน ตัวอย่างเช่น สิ่งนี้อาจมีประโยชน์หากคุณใช้การแจ้งเตือนเดียวเพื่อแสดงข้อความใหม่หลายข้อความ แต่คุณต้องการนับที่นี่เพื่อแสดงจำนวนข้อความใหม่ทั้งหมด หากเป็นศูนย์หรือไม่ระบุ ระบบที่รองรับการติดป้ายจะใช้ค่าเริ่มต้น ซึ่งก็คือการเพิ่มตัวเลขที่แสดงบนเมนูแบบกดค้างทุกครั้งที่มีการแจ้งเตือนใหม่มาถึง |
light_settings | การตั้งค่าเพื่อควบคุมอัตราการกะพริบและสีของ LED การแจ้งเตือนหากมี LED อยู่ในอุปกรณ์ เวลาการกะพริบทั้งหมดจะถูกควบคุมโดยระบบปฏิบัติการ |
image | มี URL ของรูปภาพที่จะแสดงในการแจ้งเตือน หากมีอยู่ ระบบจะแทนที่ |
การแจ้งเตือนลำดับความสำคัญ
ระดับความสำคัญของการแจ้งเตือน
เอนัม | |
---|---|
PRIORITY_UNSPECIFIED | หากไม่ได้ระบุลำดับความสำคัญ ลำดับความสำคัญของการแจ้งเตือนจะถูกตั้งค่าเป็น PRIORITY_DEFAULT |
PRIORITY_MIN | ลำดับความสำคัญการแจ้งเตือนต่ำสุด การแจ้งเตือนที่มี PRIORITY_MIN นี้อาจไม่แสดงให้ผู้ใช้เห็น ยกเว้นในกรณีพิเศษ เช่น บันทึกการแจ้งเตือนโดยละเอียด |
PRIORITY_LOW | ลำดับความสำคัญของการแจ้งเตือนต่ำกว่า UI อาจเลือกที่จะแสดงการแจ้งเตือนให้เล็กลงหรือแสดงที่ตำแหน่งอื่นในรายการ เมื่อเทียบกับการแจ้งเตือนที่มี PRIORITY_DEFAULT |
PRIORITY_DEFAULT | ลำดับความสำคัญการแจ้งเตือนเริ่มต้น หากแอปพลิเคชันไม่จัดลำดับความสำคัญการแจ้งเตือนของตนเอง ให้ใช้ค่านี้สำหรับการแจ้งเตือนทั้งหมด |
PRIORITY_HIGH | ลำดับความสำคัญการแจ้งเตือนที่สูงขึ้น ใช้สิ่งนี้สำหรับการแจ้งเตือนหรือการแจ้งเตือนที่สำคัญยิ่งขึ้น UI อาจเลือกที่จะแสดงการแจ้งเตือนเหล่านี้ในขนาดใหญ่ขึ้น หรือที่ตำแหน่งอื่นในรายการการแจ้งเตือน เมื่อเทียบกับการแจ้งเตือนที่มี PRIORITY_DEFAULT |
PRIORITY_MAX | ลำดับความสำคัญการแจ้งเตือนสูงสุด ใช้สิ่งนี้กับรายการที่สำคัญที่สุดของแอปพลิเคชันที่ต้องการความสนใจหรือการป้อนข้อมูลของผู้ใช้ในทันที |
ทัศนวิสัย
ระดับการมองเห็นที่แตกต่างกันของการแจ้งเตือน
เอนัม | |
---|---|
VISIBILITY_UNSPECIFIED | หากไม่ได้ระบุ ให้ใช้ค่าเริ่มต้นเป็น Visibility.PRIVATE |
PRIVATE | แสดงการแจ้งเตือนนี้บนหน้าจอล็อคทั้งหมด แต่ปกปิดข้อมูลที่ละเอียดอ่อนหรือข้อมูลส่วนตัวบนหน้าจอล็อคที่ปลอดภัย |
PUBLIC | แสดงการแจ้งเตือนนี้อย่างครบถ้วนบนหน้าจอล็อคทั้งหมด |
SECRET | อย่าเปิดเผยส่วนใดส่วนหนึ่งของการแจ้งเตือนนี้บนหน้าจอล็อคที่ปลอดภัย |
การตั้งค่าแสง
การตั้งค่าเพื่อควบคุม LED การแจ้งเตือน
การเป็นตัวแทน JSON |
---|
{
"color": {
object ( |
เขตข้อมูล | |
---|---|
color | ที่จำเป็น. ตั้งค่า |
light_on_duration | ที่จำเป็น. นอกเหนือจาก ระยะเวลาเป็นวินาทีโดยมีเศษส่วนไม่เกินเก้าหลัก และลงท้ายด้วย ' |
light_off_duration | ที่จำเป็น. นอกเหนือจาก ระยะเวลาเป็นวินาทีโดยมีเศษส่วนไม่เกินเก้าหลัก และลงท้ายด้วย ' |
สี
แสดงถึงสีในพื้นที่สี RGBA การแสดงนี้ได้รับการออกแบบเพื่อความง่ายในการแปลงเป็น/จากการแสดงสีในภาษาต่างๆ เหนือความกะทัดรัด ตัวอย่างเช่น ฟิลด์ของการเป็นตัวแทนนี้สามารถจัดเตรียมให้กับตัวสร้างของ java.awt.Color
ใน Java เพียงเล็กน้อย นอกจากนี้ยังสามารถมอบให้กับเมธอด +colorWithRed:green:blue:alpha
UIColor ใน iOS ได้อีกด้วย และด้วยการทำงานเพียงเล็กน้อย ก็สามารถจัดรูปแบบเป็นสตริง CSS rgba()
ใน JavaScript ได้อย่างง่ายดาย
หน้าอ้างอิงนี้ไม่มีข้อมูลเกี่ยวกับปริภูมิสีสัมบูรณ์ที่ควรใช้ในการตีความค่า RGB (เช่น sRGB, Adobe RGB, DCI-P3, BT.2020 เป็นต้น) ตามค่าเริ่มต้น แอปพลิเคชันควรใช้ปริภูมิสี sRGB
เมื่อจำเป็นต้องตัดสินใจเรื่องความเท่าเทียมกันของสี การใช้งาน เว้นแต่จะระบุไว้เป็นอย่างอื่น ให้ปฏิบัติต่อสองสีให้เท่ากัน หากค่าสีแดง เขียว น้ำเงิน และอัลฟ่าทั้งหมดต่างกันสูงสุด 1e-5
ตัวอย่าง (ชวา):
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;
}
// ...
ตัวอย่าง (จาวาสคริปต์):
// ...
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 สอดคล้องกับสีโปร่งใสโดยสมบูรณ์ ซึ่งใช้ข้อความแบบตัดคำแทนสเกลาร์ทศนิยมแบบธรรมดา เพื่อให้สามารถแยกแยะระหว่างค่าเริ่มต้นและค่าที่ไม่ได้ตั้งค่าได้ หากละเว้น ออบเจ็กต์สีนี้จะถูกเรนเดอร์เป็นสีทึบ (ราวกับว่าค่าอัลฟ่าถูกกำหนดไว้อย่างชัดเจนเป็น 1.0) |
ตัวเลือก 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" และ "body" จะแทนที่ |
fcm_options | ตัวเลือกสำหรับคุณสมบัติที่มีให้โดย FCM SDK สำหรับเว็บ |
WebpushFcmตัวเลือก
ตัวเลือกสำหรับคุณสมบัติที่มีให้โดย FCM SDK สำหรับเว็บ
การเป็นตัวแทน JSON |
---|
{ "link": string, "analytics_label": string } |
เขตข้อมูล | |
---|---|
link | ลิงก์ที่จะเปิดเมื่อผู้ใช้คลิกที่การแจ้งเตือน สำหรับค่า URL ทั้งหมด จำเป็นต้องมี HTTPS |
analytics_label | ป้ายกำกับที่เกี่ยวข้องกับข้อมูลการวิเคราะห์ของข้อความ |
ApnsConfig
ตัวเลือกเฉพาะ ของบริการแจ้งเตือน Apple Push
การเป็นตัวแทน JSON |
---|
{
"headers": {
string: string,
...
},
"payload": {
object
},
"fcm_options": {
object ( |
เขตข้อมูล | |
---|---|
headers | ส่วนหัวคำขอ HTTP ที่กำหนดไว้ใน Apple Push Notification Service โปรดดู ส่วนหัวคำขอ APN สำหรับส่วนหัวที่รองรับ เช่น แบ็กเอนด์จะตั้งค่าเริ่มต้นสำหรับ วัตถุที่มีรายการ |
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 | ป้ายกำกับที่เกี่ยวข้องกับข้อมูลการวิเคราะห์ของข้อความ |
วิธีการ | |
---|---|
| ส่งข้อความไปยังเป้าหมายที่ระบุ (โทเค็นการลงทะเบียน หัวข้อ หรือเงื่อนไข) |