פועלים לפי השלבים הבאים כדי להגדיר לקוח FCM ב-Flutter.
הגדרות ודרישות ספציפיות לפלטפורמה
חלק מהשלבים הנדרשים תלויים בפלטפורמה שאתם מטרגטים.
iOS+
הפעלת יכולות של אפליקציות ב-Xcode
כדי שהאפליקציה תתחיל לקבל הודעות, צריך להפעיל התראות דחיפה ומצבי רקע בפרויקט Xcode.
- פותחים את סביבת העבודה של פרויקט Xcode (
ios/Runner.xcworkspace
). - הפעלת התראות.
- מפעילים את המצב 'ביצוע ברקע' של אחזור ברקע ושל התראות מרחוק.
העלאת מפתח האימות של APNs
לפני שמשתמשים ב-FCM, צריך להעלות את אישור ה-APN אל Firebase. אם עדיין אין לכם אישור APNs, תוכלו ליצור אותו במרכז החברים של Apple Developer.
- בפרויקט במסוף Firebase, לוחצים על סמל גלגל השיניים, בוחרים באפשרות Project Settings (הגדרות הפרויקט) ואז בוחרים בכרטיסייה Cloud Messaging (Cloud Messaging).
- לוחצים על הלחצן Upload Certificate (העלאת אישור) לאישור הפיתוח, לאישור הייצור או לשניהם. צריך להזין לפחות תמונה אחת.
- לכל אישור, בוחרים את הקובץ עם הסיומת .p12 ומזינים את הסיסמה, אם יש כזו. מוודאים שמזהה החבילה של האישור תואם למזהה החבילה של האפליקציה. בוחרים באפשרות Save.
שינוי שיטה
כדי להשתמש בפלאגין של FCM ל-Flutter במכשירי Apple, אסור להשבית את השינוי של השיטות (method swizzling). צריך לבצע החלפה של קוד (swizzling), כי בלי זה תכונות מרכזיות של Firebase, כמו טיפול באסימונים של FCM, לא יפעלו כמו שצריך.
Android
Google Play Services
כדי להשתמש בלקוחות FCM, נדרשים מכשירים עם Android בגרסה 4.4 ואילך, שבהם מותקנת גם אפליקציית Google Play Services, או אמולטור שפועל עם Android בגרסה 4.4 עם ממשקי Google API. חשוב לזכור שאתם לא מוגבלים לפריסה של אפליקציות ל-Android דרך Google Play Store.
אפליקציות שמסתמכות על Play Services SDK צריכות תמיד לבדוק במכשיר אם יש קובץ APK תואם של Google Play Services לפני שהן ניגשות לתכונות של Google Play Services. מומלץ לעשות זאת בשני מקומות: ב-method onCreate()
של הפעילות הראשית וב-method onResume()
שלה. הבדיקה ב-onCreate()
מבטיחה שלא ניתן להשתמש באפליקציה בלי בדיקה מוצלחת. הבדיקה ב-onResume()
מבטיחה שאם המשתמש יחזור לאפליקציה שפועלת באמצעים אחרים, למשל באמצעות לחצן החזרה, הבדיקה עדיין תתבצע.
אם במכשיר לא מותקנת גרסה תואמת של Google Play Services, האפליקציה יכולה להפעיל את GoogleApiAvailability.makeGooglePlayServicesAvailable()
כדי לאפשר למשתמשים להוריד את Google Play Services מ-Play Store.
אינטרנט
הגדרת פרטי כניסה לאינטרנט באמצעות FCM
בממשק האינטרנט של FCM נעשה שימוש בפרטי כניסה לאינטרנט שנקראים מפתחות VAPID (Voluntary Application Server Identification), כדי לאשר שליחת בקשות לשירותי דחיפה באינטרנט נתמכים. כדי להירשם לקבלת התראות דחיפה באפליקציה, צריך לשייך זוג מפתחות לפרויקט Firebase. אפשר ליצור זוג מפתחות חדש או לייבא את זוג המפתחות הקיים דרך מסוף Firebase.
יצירת זוג מפתחות חדש
פותחים את הכרטיסייה Cloud Messaging בחלונית Settings במסוף Firebase, וגוללים לקטע Web configuration.
בכרטיסייה Web Push Certificate, לוחצים על יצירת זוג מפתחות. במסוף תוצג הודעה על כך שזוג המפתחות נוצר, וגם המחרוזת של המפתח הציבורי והתאריך שבו הוא נוסף.
ייבוא של צמד מפתחות קיים
אם יש לכם זוג מפתחות קיים שכבר משמש אתכם באפליקציית האינטרנט, תוכלו לייבא אותו ל-FCM כדי להגיע למכונות הקיימות של אפליקציית האינטרנט דרך ממשקי ה-API של FCM. כדי לייבא מפתחות, צריכה להיות לכם גישה ברמת הבעלים לפרויקט Firebase. מייבאים את המפתח הציבורי והפרטי הקיימים בפורמט מאובטח של כתובת URL בקידוד base64:
פותחים את הכרטיסייה Cloud Messaging בחלונית Settings במסוף Firebase, וגוללים לקטע Web configuration.
בכרטיסייה Web Push certificates, מחפשים את טקסט הקישור 'import an existing key pair' ובוחרים בו.
בתיבת הדו-שיח ייבוא של זוג מפתחות מספקים את המפתחות הציבוריים והפרטיים בשדות המתאימים ולוחצים על Import. במסוף מוצגים המחרוזת של המפתח הציבורי והתאריך שבו הוא נוסף.
מידע נוסף על הפורמט של המפתחות ועל האופן שבו יוצרים אותם זמין במאמר מפתחות של שרת אפליקציות.
התקנת הפלאגין של FCM
מתקינים ומפעילים את הפלאגינים של Firebase ל-Flutter, אם עוד לא עשיתם זאת.
כדי להתקין את הפלאגין, מריצים את הפקודה הבאה מהרמה הבסיסית (root) של פרויקט Flutter:
flutter pub add firebase_messaging
בסיום, יוצרים מחדש את אפליקציית Flutter:
flutter run
גישה לטוקן הרישום
כדי לשלוח הודעה למכשיר ספציפי, צריך לדעת את אסימון הרישום של המכשיר. כדי להשלים את המדריך הזה, תצטרכו להזין את האסימון בשדה במסוף ההתראות. לכן, חשוב להעתיק את האסימון או לאחסן אותו באופן מאובטח אחרי שאתם מאחזרים אותו.
כדי לאחזר את אסימון הרישום הנוכחי של מכונה של אפליקציה, צריך להפעיל את הפונקציה getToken()
. אם לא ניתנה הרשאה לשליחת התראות, השיטה הזו תבקש מהמשתמש הרשאות לקבלת התראות. אחרת, הוא מחזיר אסימון או דוחה את העתיד בגלל שגיאה.
// You may set the permission requests to "provisional" which allows the user to choose what type
// of notifications they would like to receive once the user receives a notification.
final notificationSettings = await FirebaseMessaging.instance.requestPermission(provisional: true);
// For apple platforms, ensure the APNS token is available before making any FCM plugin API calls
final apnsToken = await FirebaseMessaging.instance.getAPNSToken();
if (apnsToken != null) {
// APNS token is available, make FCM plugin API requests...
}
בפלטפורמות אינטרנט, מעבירים את המפתח הציבורי של VAPID אל getToken()
:
final fcmToken = await FirebaseMessaging.instance.getToken(vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu");
כדי לקבל התראה בכל פעם שהאסימון מתעדכן, כדאי להירשם לשידור של onTokenRefresh
:
FirebaseMessaging.instance.onTokenRefresh
.listen((fcmToken) {
// TODO: If necessary send token to application server.
// Note: This callback is fired at each app startup and whenever a new
// token is generated.
})
.onError((err) {
// Error getting token.
});
מניעת אתחול אוטומטי
כשיוצרים אסימון רישום של FCM, הספרייה מעלה את המזהה ונתוני התצורה ל-Firebase. אם אתם מעדיפים למנוע יצירה אוטומטית של אסימונים, צריך להשבית את האתחול האוטומטי בזמן ה-build.
iOS
ב-iOS, מוסיפים ערך מטא-נתונים ל-Info.plist
:
FirebaseMessagingAutoInitEnabled = NO
Android
ב-Android, משביתים את האיסוף ב-Analytics ואת האיפוס האוטומטי של FCM (צריך להשבית את שניהם) על ידי הוספת ערכי המטא-נתונים הבאים ל-AndroidManifest.xml
:
<meta-data
android:name="firebase_messaging_auto_init_enabled"
android:value="false" />
<meta-data
android:name="firebase_analytics_collection_enabled"
android:value="false" />
הפעלה מחדש של אתחול אוטומטי של FCM בזמן ריצה
כדי להפעיל אתחול אוטומטי למופע ספציפי של אפליקציה, קוראים לפונקציה setAutoInitEnabled()
:
await FirebaseMessaging.instance.setAutoInitEnabled(true);
הערך הזה נשמר בכל הפעלה מחדש של האפליקציה לאחר הגדרתה.
השלבים הבאים
אחרי שאפליקציית הלקוח תוגדר, תוכלו להתחיל לשלוח הודעות downstream באמצעות מלחין ההתראות. שליחת הודעת בדיקה לאפליקציה שפועלת ברקע
כדי להוסיף לאפליקציה התנהגות מתקדמת יותר, תצטרכו לבצע הטמעה בשרת.
לאחר מכן, בלקוח האפליקציה: