1. מבוא
בהשוואה ל-FCM API הקודם, FCM HTTP v1 API מספק מודל הרשאות מאובטח יותר באמצעות אסימוני גישה לטווח קצר. השלבים ליצירת טוקן הגישה ל-FCM v1 API שונים באופן משמעותי מהשלבים ל-API הקודם.
ב-codelab הזה מוסבר איך להגדיר את הצד של הלקוח ואת הצד של השרת כדי לשלוח התראות לאפליקציית 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. לפני שתעשו את זה, תצטרכו ליצור פרויקט Firebase. ב-codelab הזה יש גם אפליקציית Android שמכילה קוד לדוגמה לשילוב עם FCM.
הגדרת פרויקט Firebase
- כדי ליצור פרויקט Firebase משלכם בשביל ה-codelab הזה, צריך לפעול לפי ההוראות שבקטע 'שלב 1: יצירת פרויקט Firebase'.
הגדרה של אפליקציה ל-Android
אפליקציית Android לדוגמה שמופיעה ב-codelab הזה כבר משולבת עם FCM. אחרי ההפעלה, הוא יירשם בשרת FCM ויצטרף לנושא. בשלבים הבאים של ה-codelab הזה, תשלחו הודעה לנושא והאפליקציה שלכם תקבל אותה.
- מורידים את הדוגמה של Firebase Android quickstart.
- מייבאים את הפרויקט בכתובת 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ולהוסיף אותו לפרויקט. מבצעים Build ומריצים את הפרויקט.
3. הגדרת שרת האפליקציה
אחרי שמגדירים את האפליקציה, צריך להוריד דוגמת קוד בצד השרת לשליחת הודעות לאפליקציה באמצעות FCM v1 API. הקוד הזה טוען את פרטי הכניסה ל-API (שמתוארים בקטע הבא) כדי ליצור טוקן גישה. לאחר מכן, המערכת שולחת הודעה לאפליקציה באמצעות העברת הודעות בנושא FCM.
- מייבאים את קוד השרת של ה-starter על ידי הורדה של פרויקט Github. הפרויקט 'messaging' הוא פרויקט Java מבוסס-Gradle עם תלות ב-SDK firebase-admin, שמספק פונקציונליות לשליחת הודעות.
פרטים נוספים על האופן שבו שרת אפליקציה צריך לפעול עם FCM מופיעים במסמך סביבת השרת שלכם ו-FCM.
4. קבלת פרטי כניסה לגרסה 1
FCM HTTP v1 API משתמש באסימוני גישה לטווח קצר בהתאם למודל האבטחה של OAuth2. בהשוואה למפתח ה-API הסטטי שמשמש ב-FCM legacy API, אסימון הגישה לטווח קצר פחות חשוף לסיכון של חשיפת פרטי הכניסה. בקטע הזה מוסבר איך ליצור פרטי כניסה ליצירת אסימון הגישה שמשמש לקריאה ל-API.
- מגדירים חשבון שירות של Firebase כדי לאפשר ל-SDK של Firebase לאדמינים לאשר קריאות לממשקי FCM API. פותחים את הגדרות הפרויקט במסוף Firebase ובוחרים בכרטיסייה חשבונות שירות. לוחצים על יצירת מפתח פרטי חדש כדי להוריד את קטע ההגדרה.

- בפרויקט 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, כדאי לעיין במקורות המידע הבאים: