כדי להתחיל להשתמש ב-FCM, צריך ליצור את תרחיש השימוש הפשוט ביותר: שליחת הודעת בדיקה מ מרכז ההודעות למכשיר פיתוח כשהאפליקציה פועלת ברקע במכשיר. בדף הזה מפורטים כל השלבים להשגת המטרה הזו, מההגדרה ועד האימות. יכול להיות שחלק מהשלבים כבר בוצעו אם הגדרתם אפליקציית Flutter ל-FCM.
התקנת הפלאגין של FCM
אם עוד לא עשיתם זאת, מתקינים ומפעילים את Firebase SDKs for Flutter.
מהרמה הבסיסית (root) של פרויקט Flutter, מריצים את הפקודה הבאה כדי להתקין את הפלאגין:
flutter pub add firebase_messaging
בסיום התהליך, בונים מחדש את אפליקציית Flutter:
flutter run
גישה לטוקן הרישום
כדי לשלוח הודעה למכשיר ספציפי, צריך לדעת את טוקן הרישום של המכשיר. כדי להשלים את המדריך הזה, תצטרכו להזין את האסימון בשדה במסוף ההתראות. לכן, הקפידו להעתיק את האסימון או לשמור אותו בצורה מאובטחת אחרי שתאחזרו אותו.
כדי לאחזר את אסימון הרישום הנוכחי של מופע אפליקציה, קוראים ל-getToken()
. אם לא ניתנה הרשאה לשליחת התראות, השיטה הזו תבקש מהמשתמש הרשאות לשליחת התראות. אחרת, הפונקציה מחזירה אסימון או דוחה את הבקשה בגלל שגיאה.
final fcmToken = await FirebaseMessaging.instance.getToken();
שליחת הודעת בדיקה
מתקינים את האפליקציה ומפעילים אותה במכשיר היעד. במכשירי Apple, צריך לאשר את הבקשה להרשאה לקבל התראות מרחוק.
מוודאים שהאפליקציה פועלת ברקע במכשיר.
במסוף Firebase, פותחים את הדף 'העברת הודעות'.
אם זו ההודעה הראשונה שלכם, בוחרים באפשרות יצירת הקמפיין הראשון.
- בוחרים באפשרות הודעות התראה של Firebase ולוחצים על יצירה.
אחרת, בכרטיסייה קמפיינים, בוחרים באפשרות קמפיין חדש ואז באפשרות התראות.
מזינים את הטקסט של ההודעה. כל שאר השדות הם אופציונליים.
בחלונית השמאלית, לוחצים על שליחת הודעת בדיקה.
בשדה עם התווית הוספת אסימון רישום ל-FCM, מזינים את אסימון הרישום שקיבלתם בקטע הקודם של המדריך הזה.
בוחרים באפשרות בדיקה.
אחרי שתבחרו באפשרות בדיקה, ההתראה אמורה להתקבל במכשיר הלקוח המטורגט (כשהאפליקציה פועלת ברקע).
כדי לקבל תובנות לגבי מסירת הודעות לאפליקציה, אפשר לעיין בלוח הבקרה של דיווח ב-FCM, שבו מתועד מספר ההודעות שנשלחו ונפתחו במכשירי Apple ובמכשירי Android, וגם נתונים לגבי 'חשיפות' (התראות שהמשתמשים ראו) באפליקציות ל-Android.
טיפול באינטראקציה
כשמשתמשים מקישים על התראה, התנהגות ברירת המחדל גם ב-Android וגם ב-iOS היא פתיחת האפליקציה. אם האפליקציה מסתיימת, היא תופעל, ואם היא ברקע, היא תועבר לחזית.
בהתאם לתוכן ההתראה, יכול להיות שתרצו לטפל באינטראקציה של המשתמש כשהאפליקציה נפתחת. לדוגמה, אם הודעת צ'אט חדשה נשלחת באמצעות התראה והמשתמש בוחר אותה, יכול להיות שתרצו לפתוח את השיחה הספציפית כשהאפליקציה תיפתח.
חבילת firebase-messaging
מספקת שתי דרכים לטפל באינטראקציה הזו:
-
getInitialMessage()
: אם האפליקציה נפתחת ממצב שהיא לא פעילה, השיטה הזו מחזירהFuture
שמכילRemoteMessage
. אחרי השימוש, הרישיון ל-RemoteMessage
יוסר. -
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 כדי להתחיל לשלוח הודעות לאפליקציות שפועלות בחזית.
מעבר להודעות התראה
כדי להוסיף לאפליקציה התנהגויות אחרות ומתקדמות יותר, תצטרכו הטמעה בשרת.
לאחר מכן, בלקוח האפליקציה: