1. บทนำ
เมื่อเปรียบเทียบกับ FCM เดิม API แล้ว FCM HTTP v1 API มอบโมเดลการให้สิทธิ์ที่ปลอดภัยกว่าโดยใช้โทเค็นการเข้าถึงที่มีอายุสั้น ขั้นตอนในการสร้างโทเค็นการเข้าถึงสำหรับ FCM v1 API นั้นแตกต่างอย่างมากจากขั้นตอนสำหรับ API เดิม
Codelab นี้จะอธิบายขั้นตอนการตั้งค่าฝั่งไคลเอ็นต์และเซิร์ฟเวอร์เพื่อเปิดใช้การส่งการแจ้งเตือนแบบพุชไปยังแอป Android โดยใช้ FCM HTTP v1 API โดยเน้นขั้นตอนสำคัญของการสร้างข้อมูลประจำตัวสำหรับ v1 API
สามารถดูข้อมูลเพิ่มเติมได้ที่:
ข้อกำหนดเบื้องต้น
- ความเข้าใจพื้นฐานเกี่ยวกับการพัฒนา Java และ Android
สิ่งที่คุณจะได้เรียนรู้
- ขั้นตอนโดยละเอียดของการตั้งค่าฝั่งไคลเอ็นต์และเซิร์ฟเวอร์เพื่อเปิดใช้งานการส่งการแจ้งเตือนแบบพุชไปยังแอป Android ของคุณโดยใช้ FCM HTTP v1 API
- การสร้างข้อมูลรับรองสำหรับ HTTP v1 API โดยใช้บัญชีบริการ
- ส่งข้อความทดสอบผ่าน HTTP v1 API
สิ่งที่คุณต้องการ
Android Studio เวอร์ชันเสถียรล่าสุด
หนึ่งในอุปกรณ์ต่อไปนี้:
- อุปกรณ์ Android จริงที่เชื่อมต่อกับคอมพิวเตอร์ของคุณ
- โปรแกรมจำลอง Android (ดูที่ เรียกใช้แอปบนโปรแกรมจำลอง Android )
สภาพแวดล้อมการพัฒนา Java หรือโปรแกรมแก้ไขโค้ดที่คุณเลือก
2. โครงการ Firebase และการตั้งค่าแอป Android
เมื่อสิ้นสุด Code Lab คุณจะสามารถส่งข้อความไปยังแอปของคุณโดยใช้ Firebase Cloud Messaging ก่อนที่จะดำเนินการดังกล่าว คุณจะต้องสร้างโปรเจ็กต์ Firebase ก่อน Codelab นี้ยังมีแอป Android ที่มีโค้ดตัวอย่างเพื่อผสานรวมกับ FCM
การตั้งค่าโปรเจ็กต์ Firebase
- ทำตาม "ขั้นตอนที่ 1: สร้างโปรเจ็กต์ Firebase " เพื่อสร้างโปรเจ็กต์ Firebase ของคุณเองสำหรับ Codelab นี้
การตั้งค่าแอพ Android
แอป Android ตัวอย่างที่ให้ไว้ใน Codelab นี้รวมเข้ากับ FCM แล้ว หลังจากเริ่มต้น มันจะลงทะเบียนกับเซิร์ฟเวอร์ FCM และสมัครรับหัวข้อ ในขั้นตอนต่อๆ ไปของ Codelab นี้ คุณจะต้องส่งข้อความหัวข้อไปยังหัวข้อนั้นและแอปของคุณจะได้รับข้อความดังกล่าว
- ดาวน์โหลด ตัวอย่างการเริ่มต้นอย่างรวดเร็วของ Firebase Android
- นำเข้าโครงการภายใต้ https://github.com/firebase/quickstart-android/tree/master/messaging ไปยัง Android Studio
- ลงทะเบียนแอปใน Firebase Console ชื่อแอปคือ
com.google.firebase.quickstart.fcm
ลงทะเบียนแอปนี้ในโครงการ Firebase ของคุณโดยทำตามขั้นตอนในส่วน "ขั้นตอนที่ 2: ลงทะเบียนแอปของคุณด้วย Firebase " - ทำตามส่วนที่ 1 ของ "ขั้นตอนที่ 3: เพิ่มไฟล์การกำหนดค่า Firebase " เพื่อดาวน์โหลด
google-services.json
และเพิ่มลงในโปรเจ็กต์ของคุณ สร้างและดำเนินโครงการ
3. ตั้งค่าเซิร์ฟเวอร์แอป
เมื่อตั้งค่าแอปของคุณแล้ว คุณจะต้องดาวน์โหลดตัวอย่างโค้ดฝั่งเซิร์ฟเวอร์เพื่อส่งข้อความไปยังแอปของคุณโดยใช้ FCM v1 API รหัสนี้จะโหลดข้อมูลประจำตัว API (อธิบายไว้ในส่วนถัดไป) เพื่อสร้างโทเค็นการเข้าถึง จากนั้นจะส่งข้อความไปยังแอปของคุณโดยใช้การส่งข้อความหัวข้อ FCM
- นำเข้าโค้ดเซิร์ฟเวอร์เริ่มต้นโดยการดาวน์โหลด โปรเจ็กต์ Github โปรเจ็กต์ "การส่งข้อความ" เป็นโปรเจ็กต์ Java ที่ใช้ Gradle ซึ่งขึ้นอยู่กับ firebase-admin SDK ซึ่งมีฟังก์ชันในการส่งข้อความ
รายละเอียดเพิ่มเติมเกี่ยวกับวิธีที่เซิร์ฟเวอร์แอปควรทำงานร่วมกับ FCM มีอยู่ในเอกสาร สภาพแวดล้อมเซิร์ฟเวอร์ของคุณและ FCM
4. รับข้อมูลรับรอง v1
FCM HTTP v1 API ใช้โทเค็นการเข้าถึงที่มีอายุสั้นตามโมเดลความปลอดภัย OAuth2 เมื่อเปรียบเทียบกับคีย์ API แบบคงที่ที่ใช้ใน FCM API เดิม โทเค็นการเข้าถึงที่มีอายุสั้นมีความเสี่ยงน้อยกว่าต่อการรั่วไหลของข้อมูลรับรอง ส่วนนี้ให้รายละเอียดเกี่ยวกับขั้นตอนในการสร้างข้อมูลประจำตัวสำหรับการสร้างโทเค็นการเข้าถึงที่ใช้ในการเรียก API
- ตั้งค่าบัญชีบริการ Firebase เพื่อให้ Firebase Admin SDK ให้สิทธิ์การเรียกไปยัง FCM API เปิด การตั้งค่าโครงการ ในคอนโซล Firebase และเลือกแท็บ บัญชีบริการ คลิก สร้างคีย์ส่วนตัวใหม่ เพื่อดาวน์โหลดข้อมูลโค้ดการกำหนดค่า
- ในโปรเจ็กต์ Github ที่ดาวน์โหลด ให้เปลี่ยนชื่อไฟล์ที่ดาวน์โหลดเป็น
service-account.json
และคัดลอกไปยังmessaging/
พาธของโปรเจ็กต์ - เมธอด
getAccessToken()
(แสดงด้านล่าง) ในคลาสMessaging.java
จะสร้างโทเค็น OAuth2 ที่มีอายุ 1 ชั่วโมง
private static String getAccessToken() throws IOException { GoogleCredentials googleCredentials = GoogleCredentials.fromStream(new FileInputStream("service-account.json")).createScoped(Arrays.asList(SCOPES)); googleCredentials.refresh(); return googleCredentials.getAccessToken().getTokenValue(); }
- เปลี่ยนวิธีการหลักเพื่อเพิ่มบรรทัดต่อไปนี้:
public static void main(String[] args) throws IOException { System.out.println(getAccessToken()); ... }
- ไปที่ไดเร็กทอรีการส่งข้อความ/โครงการในเทอร์มินัลของคุณ และพิมพ์:
./gradlew run -Pmessage=common-message
เพื่อพิมพ์โทเค็น OAuth2
สามารถดูข้อมูล เพิ่มเติม ได้ใน อนุญาตการส่งคำขอ
5. ส่งข้อความด้วย REST API
ตอนนี้คุณพร้อมที่จะส่งข้อความผ่าน HTTP v1 API แล้ว ทำตามขั้นตอนด้านล่าง:
- หากต้องการเพิ่มโทเค็นการเข้าถึงให้กับส่วนหัวคำขอ HTTP:
- เพิ่มโทเค็นเป็นค่าของส่วนหัวการอนุญาตในรูปแบบ
Authorization: Bearer <access_token>
- ส่งคำขอ HTTP ไปยัง FCM v1 API โดยใช้ curl:
curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $OAuth2_token" -H "X-GFE-SSL: yes" -d "{\"message\": {\"topic\": \"$topic_name\", \"notification\": {\"title\": \"breaking news\", \"body\": \"This is breaking news\"}}}" https://fcm.googleapis.com/v1/projects/[PROJECT_NAME]/messages:send
คุณสามารถดู $topic_name
ด้านบนได้ใน โค้ด แอป Android ที่กล่าวถึงในโครงการ Firebase และการตั้งค่าแอป Android โดยค่าเริ่มต้นจะเป็น "weather"
- หลังจากส่งข้อความเรียบร้อยแล้ว คุณจะเห็นป๊อปอัปการแจ้งเตือนบนหน้าจอ คล้ายกับภาพด้านล่าง:
6. บทสรุป
ยินดีด้วย! คุณทำ Codelab สำเร็จแล้วเพื่อ:
- ตั้งค่าโปรเจ็กต์ Firebase
- ผสานรวม Firebase เข้ากับแอป Android
- สร้างข้อมูลรับรองสำหรับ FCM HTTP v1 API
- ส่งข้อความถึงแอปของคุณผ่าน FCM HTTP v1 API
หากต้องการสำรวจข้อเสนอคุณสมบัติขั้นสูงของ FCM ข้อมูลอ้างอิงต่อไปนี้จะมีประโยชน์: