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