1. מבוא
בהשוואה ל-FCM API הקודם, ה-FCM HTTP v1 API מספק מודל הרשאה מאובטח יותר באמצעות אסימוני גישה לטווח קצר. השלבים ליצירת אסימון הגישה ל-FCM v1 API שונים באופן משמעותי מהשלבים ליצירת אסימון הגישה ל-API הקודם.
בקודלאב הזה נסביר על תהליך ההגדרה בצד הלקוח ובצד השרת כדי לאפשר שליחת התראות לדחוף לאפליקציה ל-Android באמצעות FCM HTTP v1 API. הוא מדגיש את השלב העיקרי ביצירת פרטי הכניסה ל-API בגרסה 1.
מידע נוסף זמין בכתובת:
דרישות מוקדמות
- הבנה בסיסית של פיתוח Java ו-Android
מה תלמדו
- שלבים מפורטים להגדרה בצד הלקוח ובצד השרת כדי לאפשר שליחת התראות באפליקציה ל-Android באמצעות FCM HTTP v1 API
- יצירת פרטי כניסה ל-HTTP v1 API באמצעות חשבונות שירות
- שליחת הודעות בדיקה דרך HTTP v1 API
מה צריך להכין
הגרסה היציבה האחרונה של Android Studio
אחד מהמכשירים הבאים:
- מכשיר Android פיזי שמחובר למחשב
- אמולטור Android (מידע נוסף זמין במאמר הפעלת אפליקציות באמולטור Android)
סביבת פיתוח Java או עורך קוד לבחירתכם
2. הגדרה של פרויקט Firebase ואפליקציות ל-Android
בסיום סדנת הקוד, תוכלו לשלוח הודעות לאפליקציה באמצעות 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 שפועל לפי ה-SDK של firebase-admin, שמאפשר לשלוח הודעות.
ניתן למצוא פרטים נוספים על האופן שבו שרת אפליקציות צריך לעבוד עם FCM במסמך סביבת השרת שלך ו-FCM.
4. אחזור פרטי הכניסה של v1
FCM HTTP v1 API משתמש באסימוני גישה לטווח קצר בהתאם למודל האבטחה של OAuth2. בהשוואה למפתח ה-API הסטטי שמשמש ב-FCM API הקודם, אסימון הגישה לטווח קצר פחות חשוף לסיכון של דליפת פרטי כניסה. בקטע הזה מפורטים השלבים ליצירת פרטי כניסה ליצירת אסימון הגישה שמשמש בקריאה ל-API.
- מגדירים חשבון שירות ב-Firebase כדי לאפשר ל-Firebase Admin SDK לאשר קריאות לממשקי FCM API. פותחים את Project Settings (הגדרות הפרויקט) במסוף Firebase ובוחרים בכרטיסייה Service accounts (חשבונות שירות). לוחצים על יצירת מפתח פרטי חדש כדי להוריד את קטע הקוד של ההגדרה.
- בפרויקט שהורדתם ב-GitHub, צריך לשנות את השם של הקובץ שהורד ל-
service-account.json
ולהעתיק אותו לנתיבmessaging/
של הפרויקט. - השיטה
getAccessToken()
(שמוצגת בהמשך) בכיתהMessaging.java
יוצרת אסימון OAuth2 שתקף למשך שעה אחת.
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. שליחת הודעה באמצעות API ל-REST
עכשיו אתם מוכנים לשלוח הודעה דרך 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, כדאי לעיין במקורות המידע הבאים: