เกี่ยวกับ Codelab นี้
1 บทนำ
เมื่อเทียบกับ API เดิมของ FCM, API ของ FCM HTTP v1 มีโมเดลการให้สิทธิ์ที่ปลอดภัยกว่าโดยใช้โทเค็นเพื่อการเข้าถึงที่มีอายุสั้น ขั้นตอนในการสร้างโทเค็นเพื่อการเข้าถึงสำหรับ FCM v1 API แตกต่างจากขั้นตอนสำหรับ API เดิมอย่างมาก
Codelab นี้จะแนะนำขั้นตอนการตั้งค่าฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์เพื่อเปิดใช้การส่งข้อความ Push ไปยังแอป Android โดยใช้ FCM HTTP v1 API ซึ่งอธิบายขั้นตอนสำคัญของการสร้างข้อมูลเข้าสู่ระบบสำหรับ API เวอร์ชัน 1
สามารถอ่านข้อมูลเพิ่มเติมได้ที่:
ข้อกำหนดเบื้องต้น
- ความเข้าใจพื้นฐานเกี่ยวกับ Java และการพัฒนา Android
สิ่งที่คุณจะได้เรียนรู้
- ขั้นตอนโดยละเอียดของการตั้งค่าฝั่งไคลเอ็นต์และเซิร์ฟเวอร์เพื่อเปิดใช้การส่งข้อความ Push ไปยังแอป Android โดยใช้ FCM HTTP v1 API
- การสร้างข้อมูลเข้าสู่ระบบสำหรับ HTTP v1 API โดยใช้บัญชีบริการ
- การส่งข้อความทดสอบผ่าน API ของ HTTP v1
สิ่งที่ต้องมี
Android Studio เวอร์ชันเสถียรล่าสุด
หนึ่งในอุปกรณ์ต่อไปนี้
- อุปกรณ์ Android จริงที่เชื่อมต่อกับคอมพิวเตอร์
- โปรแกรมจำลองของ Android (โปรดดูเรียกใช้แอปใน Android Emulator)
สภาพแวดล้อมในการพัฒนาซอฟต์แวร์ 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 ชื่อแอปคือ
com.google.firebase.quickstart.fcm
ลงทะเบียนแอปนี้ในโปรเจ็กต์ Firebase โดยทำตามขั้นตอนใน "ขั้นตอนที่ 2: ลงทะเบียนแอปกับ Firebase" - ทำตามส่วนที่ 1 ของ "ขั้นตอนที่ 3: เพิ่มไฟล์การกำหนดค่า Firebase" เพื่อดาวน์โหลด
google-services.json
และเพิ่มลงในโครงการของคุณ สร้างและเรียกใช้โปรเจ็กต์
3 ตั้งค่าเซิร์ฟเวอร์แอป
เมื่อตั้งค่าแอปแล้ว คุณจะต้องดาวน์โหลดตัวอย่างโค้ดฝั่งเซิร์ฟเวอร์สําหรับส่งข้อความถึงแอปโดยใช้ FCM v1 API โค้ดนี้จะโหลดข้อมูลเข้าสู่ระบบ API (ดังที่อธิบายไว้ในส่วนถัดไป) เพื่อสร้างโทเค็นเพื่อการเข้าถึง จากนั้นส่งข้อความไปยังแอปของคุณโดยใช้การรับส่งข้อความตามหัวข้อ FCM
- นำเข้าโค้ดเซิร์ฟเวอร์เริ่มต้นโดยการดาวน์โหลดโปรเจ็กต์ GitHub "การรับส่งข้อความ" โปรเจ็กต์เป็นโปรเจ็กต์ Java แบบ Gradle ที่มีทรัพยากร Dependency ใน SDK ของ firebase-admin ซึ่งมีฟังก์ชันสำหรับส่งข้อความ
ดูรายละเอียดเพิ่มเติมเกี่ยวกับวิธีที่เซิร์ฟเวอร์แอปควรทำงานร่วมกับ FCM ได้ในเอกสารสภาพแวดล้อมของเซิร์ฟเวอร์และ FCM
4 รับข้อมูลเข้าสู่ระบบ v1
FCM HTTP v1 API ใช้โทเค็นเพื่อการเข้าถึงที่มีอายุสั้นตามโมเดลการรักษาความปลอดภัย OAuth2 โทเค็นเพื่อการเข้าถึงที่มีอายุสั้นมีแนวโน้มที่จะเกิดความเสี่ยงที่จะรั่วไหลของข้อมูลเข้าสู่ระบบน้อยกว่าเมื่อเทียบกับคีย์ API แบบคงที่ที่ใช้ใน API เดิมของ FCM ส่วนนี้จะอธิบายถึงขั้นตอนการสร้างข้อมูลเข้าสู่ระบบสำหรับการสร้างโทเค็นเพื่อการเข้าถึงที่ใช้ในการเรียกใช้ 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 ข้อมูลอ้างอิงต่อไปนี้จะเป็นประโยชน์