הגדרת אפליקציית לקוח של העברת הודעות בענן ב-Firebase ב-Flutter

כדי להגדיר לקוח FCM ב-Flutter, פועלים לפי השלבים הבאים.

הגדרה ודרישות ספציפיות לפלטפורמה

חלק מהשלבים הנדרשים תלויים בפלטפורמה שמטרגטים.

‫iOS+‎

הפעלת יכולות של אפליקציות ב-Xcode

כדי שהאפליקציה תוכל להתחיל לקבל הודעות, צריך להפעיל הודעות פוש ומצבי רקע בפרויקט Xcode.

  1. פותחים את סביבת העבודה של פרויקט Xcode (ios/Runner.xcworkspace).
  2. הפעלת התראות.
  3. מפעילים את השליפה ברקע ואת ההתראות מרחוק מצבי ההפעלה ברקע.

העלאת מפתח אימות של APNs

לפני שמשתמשים ב-FCM, צריך להעלות את אישור APNs ל-Firebase. אם עדיין אין לכם אישור APNs, אתם צריכים ליצור אותו ב-Apple Developer Member Center.

  1. בפרויקט במסוף Firebase, לוחצים על סמל גלגל השיניים, בוחרים באפשרות הגדרות הפרויקט ואז בוחרים בכרטיסייה Cloud Messaging.
  2. לוחצים על הלחצן העלאת אישור כדי להעלות את אישור הפיתוח, את אישור הייצור או את שניהם. צריך להזין לפחות תמונה אחת.
  3. לכל אישור, בוחרים את קובץ ה-‎ .p12 ומזינים את הסיסמה, אם יש כזו. מוודאים שמזהה החבילה של האישור הזה זהה למזהה החבילה של האפליקציה. בוחרים באפשרות שמירה.

שינוי פונקציונליות של שיטה

כדי להשתמש בפלאגין FCM Flutter במכשירי Apple, אסור להשבית את החלפת השיטה. נדרש Swizzling, ובלעדיו, תכונות מרכזיות של Firebase כמו טיפול באסימון FCM לא פועלות כמו שצריך.

Android

Google Play Services

לקוחות FCM צריכים מכשירים עם Android בגרסה 4.4 ומעלה שמותקנים בהם שירותי Google Play, או אמולטור עם Android בגרסה 4.4 עם Google APIs. חשוב לדעת שאפשר לפרוס את אפליקציות Android לא רק דרך חנות Google Play.

אפליקציות שמסתמכות על Play Services SDK צריכות תמיד לבדוק במכשיר אם יש APK תואם של Google Play Services לפני שהן ניגשות לתכונות של Google Play Services. מומלץ לעשות את זה בשני מקומות: בשיטה onCreate() של הפעילות הראשית ובשיטה onResume() שלה. הבדיקה ב-onCreate() מוודאת שאי אפשר להשתמש באפליקציה בלי שהבדיקה תצליח. הבדיקה ב-onResume() מבטיחה שאם המשתמש יחזור לאפליקציה הפועלת באמצעים אחרים, כמו באמצעות לחצן החזרה, הבדיקה עדיין תתבצע.

אם במכשיר לא מותקנת גרסה תואמת של Google Play Services, האפליקציה יכולה לקרוא ל-GoogleApiAvailability.makeGooglePlayServicesAvailable() כדי לאפשר למשתמשים להוריד את Google Play Services מ-Play Store.

אינטרנט

הגדרת פרטי כניסה לאינטרנט באמצעות FCM

ממשק האינטרנט של FCM משתמש בפרטי כניסה לאינטרנט שנקראים 'זיהוי שרת אפליקציות מרצון' או מפתחות VAPID, כדי לאשר בקשות לשליחה לשירותי הודעות פוש נתמכים באינטרנט. כדי להירשם לקבלת הודעות פוש באפליקציה, צריך לשייך זוג מפתחות לפרויקט Firebase. אפשר ליצור זוג מפתחות חדש או לייבא זוג מפתחות קיים דרך מסוף Firebase.

יצירת זוג מפתחות חדש
  1. פותחים את הכרטיסייה Cloud Messaging (הודעות Cloud) בחלונית Settings (הגדרות) במסוף Firebase וגוללים לקטע Web configuration (הגדרות לאתר).

  2. בכרטיסייה Web Push certificates, לוחצים על Generate Key Pair. במסוף מוצגת הודעה שזוג המפתחות נוצר, ומוצגת מחרוזת המפתח הציבורי והתאריך שבו הוא נוסף.

ייבוא של צמד מפתחות קיים

אם יש לכם צמד מפתחות קיים שאתם כבר משתמשים בו באפליקציית האינטרנט, אתם יכולים לייבא אותו ל-FCM כדי שתוכלו להגיע למופעים הקיימים של אפליקציית האינטרנט באמצעות ממשקי ה-API של FCM. כדי לייבא מפתחות, צריכה להיות לכם גישה ברמת הבעלים לפרויקט Firebase. מייבאים את המפתח הציבורי והמפתח הפרטי הקיימים בפורמט קידוד base64 בטוח לכתובות URL:

  1. פותחים את הכרטיסייה Cloud Messaging (הודעות Cloud) בחלונית Settings (הגדרות) במסוף Firebase וגוללים לקטע Web configuration (הגדרות לאתר).

  2. בכרטיסייה אישורים של הודעות פוש באינטרנט, מחפשים את הטקסט של הקישור 'ייבוא של צמד מפתחות קיים' ולוחצים עליו.

  3. בתיבת הדו-שיח Import a key pair (ייבוא זוג מפתחות), מזינים את המפתחות הציבורי והפרטי בשדות המתאימים ולוחצים על Import (ייבוא). במסוף מוצגים מחרוזת המפתח הציבורי והתאריך שבו הוא נוסף.

מידע נוסף על הפורמט של המפתחות ועל אופן היצירה שלהם זמין במאמר בנושא מפתחות של שרת אפליקציות.

התקנת הפלאגין של FCM

  1. אם עוד לא עשיתם זאת, מתקינים ומפעילים את הפלאגינים של Firebase ל-Flutter.

  2. מהרמה הבסיסית (root) של פרויקט Flutter, מריצים את הפקודה הבאה כדי להתקין את הפלאגין:

    flutter pub add firebase_messaging
    
  3. בסיום התהליך, בונים מחדש את אפליקציית 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");

כדי לקבל התראה בכל פעם שהטוקן מתעדכן, צריך להירשם לonTokenRefreshstream:

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. אם אתם מעדיפים למנוע יצירה אוטומטית של טוקנים, אתם יכולים להשבית את האתחול האוטומטי בזמן הבנייה.

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);

הערך הזה נשמר גם אחרי הפעלה מחדש של האפליקציה.

השלבים הבאים

אחרי שמגדירים את אפליקציית הלקוח, אפשר להתחיל לשלוח הודעות במורד הזרם באמצעות כלי ההודעות. איך שולחים הודעת בדיקה לאפליקציה שפועלת ברקע

כדי להוסיף לאפליקציה התנהגויות אחרות ומתקדמות יותר, תצטרכו הטמעה בשרת.

לאחר מכן, בלקוח האפליקציה: