برای شروع کار با FCM، سادهترین مورد استفاده را بسازید: ارسال یک پیام اعلان آزمایشی از سازنده Notifications به یک دستگاه توسعهدهنده زمانی که برنامه در پسزمینه دستگاه است. این صفحه تمام مراحل را برای دستیابی به این هدف، از راهاندازی تا تأیید، فهرست میکند - اگر برنامه Flutter را برای FCM راهاندازی کرده باشید، ممکن است مراحلی را که قبلاً انجام دادهاید پوشش دهد.
افزونه FCM را نصب کنید
اگر قبلاً این کار را نکرده اید ، SDK های Firebase را برای Flutter نصب و مقداردهی اولیه کنید .
از ریشه پروژه Flutter خود، دستور زیر را برای نصب افزونه اجرا کنید:
flutter pub add firebase_messaging
پس از تکمیل، برنامه Flutter خود را بازسازی کنید:
flutter run
به رمز ثبت نام دسترسی پیدا کنید
برای ارسال پیام به یک دستگاه خاص، باید رمز ثبت نام آن دستگاه را بدانید. از آنجایی که برای تکمیل این آموزش باید توکن را در قسمتی در کنسول Notifications وارد کنید، پس از بازیابی آن حتماً آن را کپی کنید یا به طور ایمن ذخیره کنید.
برای بازیابی رمز ثبت نام فعلی برای یک نمونه برنامه، getToken()
فراخوانی کنید. اگر مجوز اعلان داده نشده باشد، این روش از کاربر مجوزهای اعلان می خواهد. در غیر این صورت، توکن را برمی گرداند یا به دلیل خطا، آینده را رد می کند.
final fcmToken = await FirebaseMessaging.instance.getToken();
یک پیام اعلان آزمایشی ارسال کنید
برنامه را روی دستگاه مورد نظر نصب و اجرا کنید. در دستگاههای اپل، باید درخواست مجوز برای دریافت اعلانهای از راه دور را بپذیرید.
مطمئن شوید که برنامه در پسزمینه دستگاه است.
در کنسول Firebase ، صفحه پیامرسانی را باز کنید.
اگر این اولین پیام شماست، ایجاد اولین کمپین خود را انتخاب کنید.
- پیامهای اعلان Firebase را انتخاب کنید و ایجاد را انتخاب کنید.
در غیر این صورت، در تب Campaigns ، کمپین جدید و سپس Notifications را انتخاب کنید.
متن پیام را وارد کنید تمام فیلدهای دیگر اختیاری هستند.
از قسمت سمت راست گزینه Send test message را انتخاب کنید.
در فیلد با عنوان افزودن نشانه ثبت FCM ، نشانه ثبت نامی را که در بخش قبلی این راهنما به دست آورده اید، وارد کنید.
تست را انتخاب کنید.
پس از انتخاب تست ، دستگاه مشتری مورد نظر (با برنامه در پسزمینه) باید اعلان را دریافت کند.
برای اطلاعات بیشتر در مورد تحویل پیام به برنامه خود، به داشبورد گزارش FCM مراجعه کنید، که تعداد پیامهای ارسال شده و باز شده در دستگاههای Apple و Android را به همراه دادههای «impressions» (اعلانهایی که کاربران مشاهده میکنند) را برای برنامههای 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 مراجعه کنید.
فراتر از پیام های اطلاع رسانی بروید
برای افزودن سایر رفتارهای پیشرفته تر به برنامه خود، به اجرای سرور نیاز دارید.
سپس، در سرویس گیرنده برنامه خود: