שלח הודעת בדיקה לאפליקציה ברקע

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

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

  1. התקן ואתחל את ערכות ה-SDK של Firebase עבור Flutter אם עדיין לא עשית זאת.

  2. מהשורש של פרויקט Flutter שלך, הפעל את הפקודה הבאה כדי להתקין את הפלאגין:

    flutter pub add firebase_messaging
    
  3. לאחר השלמתו, בנה מחדש את אפליקציית Flutter שלך:

    flutter run
    

גש לאסימון הרישום

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

כדי לאחזר את אסימון הרישום הנוכחי עבור מופע אפליקציה, התקשר ל- getToken() . אם לא ניתנה הרשאת הודעה, שיטה זו תבקש מהמשתמש הרשאות הודעה. אחרת, הוא מחזיר אסימון או דוחה את העתיד עקב שגיאה.

final fcmToken = await FirebaseMessaging.instance.getToken();

שלח הודעת התראה על בדיקה

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

  2. ודא שהאפליקציה נמצאת ברקע במכשיר.

  3. במסוף Firebase, פתח את דף ההודעות .

  4. אם זו ההודעה הראשונה שלך, בחר צור את מסע הפרסום הראשון שלך .

    1. בחר הודעות Firebase Notification ובחר צור .
  5. אחרת, בכרטיסייה מסעות פרסום , בחר מסע פרסום חדש ולאחר מכן הודעות .

  6. הזן את טקסט ההודעה. כל שאר השדות הם אופציונליים.

  7. בחר שלח הודעת בדיקה מהחלונית הימנית.

  8. בשדה שכותרתו הוסף אסימון רישום של FCM , הזן את אסימון הרישום שהשגת בסעיף קודם של מדריך זה.

  9. בחר בדיקה .

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

לקבלת תובנות לגבי מסירת הודעות לאפליקציה שלך, עיין בלוח המחוונים לדיווח של FCM , שמתעד את מספר ההודעות שנשלחו ונפתחו במכשירי אפל ו-Android, יחד עם נתונים עבור "הופעות" (התראות שנראו על ידי משתמשים) עבור אפליקציות Android.

טיפול באינטראקציה

כאשר משתמשים מקישים על התראה, התנהגות ברירת המחדל הן באנדרואיד והן ב-iOS היא פתיחת האפליקציה. אם הבקשה תסתיים, היא תופעל, ואם היא ברקע, היא תובא לקדמת הבמה.

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

חבילת firebase-messaging מספקת שתי דרכים לטפל באינטראקציה זו:

  1. getInitialMessage() : אם היישום נפתח ממצב סיום, שיטה זו מחזירה Future המכיל RemoteMessage . לאחר צריכתו, ה- RemoteMessage יוסר.
  2. onMessageOpenedApp : Stream שמפרסם RemoteMessage כאשר האפליקציה נפתחת ממצב רקע.

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

class Application extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => _Application();
}

class _Application extends State<Application> {
  // In this example, suppose that all messages contain a data field with the key 'type'.
  Future<void> setupInteractedMessage() async {
    // Get any messages which caused the application to open from
    // a terminated state.
    RemoteMessage? initialMessage =
        await FirebaseMessaging.instance.getInitialMessage();

    // If the message also contains a data property with a "type" of "chat",
    // navigate to a chat screen
    if (initialMessage != null) {
      _handleMessage(initialMessage);
    }

    // Also handle any interaction when the app is in the background via a
    // Stream listener
    FirebaseMessaging.onMessageOpenedApp.listen(_handleMessage);
  }

  void _handleMessage(RemoteMessage message) {
    if (message.data['type'] == 'chat') {
      Navigator.pushNamed(context, '/chat',
        arguments: ChatArguments(message),
      );
    }
  }

  @override
  void initState() {
    super.initState();

    // Run code required to handle interacted messages in an async function
    // as initState() must not be async
    setupInteractedMessage();
  }

  @override
  Widget build(BuildContext context) {
    return Text("...");
  }
}

האופן שבו אתה מטפל באינטראקציה תלוי בהגדרת היישום שלך. הדוגמה שלמעלה מציגה דוגמה בסיסית לשימוש ב- StatefulWidget .

הצעדים הבאים

שלח הודעות לאפליקציות בחזית

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

מעבר להודעות הודעות

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

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