как добавить кнопки в уведомление firebase messaging?

#android #firebase #flutter #notifications #firebase-cloud-messaging

# #Android #firebase #флаттер #уведомления #firebase-облако-обмен сообщениями

Вопрос:

Я новичок в flutter, я использую firebase-Messaging для отправки уведомлений на устройство. мы используем веб-API, которые отправляют запрос в firebase для отправки уведомлений, а firebase отправляет уведомления на Android. Я хочу, чтобы в заголовке и теле уведомления отображались две кнопки (принять и отклонить), например, опция watts app notification «отметить как прочитанное». Я хочу что-то подобное.

Файл манифеста Android, который я добавил:

 <intent-filter>
            <action android:name="FLUTTER_NOTIFICATION_CLICK" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
 

код flutter

  final FirebaseMessaging _firebaseMessaging = FirebaseMessaging(); 
if(user != null)
{
  Navigator.push(context,
            MaterialPageRoute(builder: (context) => InitialPage()));

          _firebaseMessaging.onTokenRefresh.listen(sendTokenToServer);
          _firebaseMessaging.getToken();
       //   _firebaseMessaging.subscribeToTopic('all');

          _firebaseMessaging.configure(
            onMessage: (Map<String, dynamic> message) async {
              print("onMessage: $message");
              final notification = message['data'];

            },
            onLaunch: (Map<String, dynamic> message) async {
              print("onLaunch: $message");
            },
            onResume: (Map<String, dynamic> message) async {
              print("onResume: $message");
            },
          );
          _firebaseMessaging.requestNotificationPermissions(
              const IosNotificationSettings(sound: true, badge: true, alert: true));


      } 
 

код службы веб-api

  public class NotificationController : ApiController
{
    //api/user
    public IHttpActionResult GetUsers()
    {
       
            WebRequest tRequest = WebRequest.Create("https://fcm.googleapis.com/fcm/send");
            tRequest.Method = "post";
            //serverKey - Key from Firebase cloud messaging server  
            tRequest.Headers.Add(string.Format("Authorization: key={0}", "xxxxxxxxxxxxxxxxxxxxxx"));
            //Sender Id - From firebase project setting  
            tRequest.Headers.Add(string.Format("Sender: id={0}", "123456"));
            tRequest.ContentType = "application/json";
        var payload = new
        {
            
            to = "wwwwwwwwwwww",
            priority = "high",
            content_available = true,
            notification = new
            {
                body = "test body",
                title = "Test title",
                badge = 1,
               
                },
                data = new
                {
                    key1 = "value1",
                    key2 = "value2"
                }

            };

            string postbody = JsonConvert.SerializeObject(payload).ToString();
            Byte[] byteArray = Encoding.UTF8.GetBytes(postbody);
            tRequest.ContentLength = byteArray.Length;
            using (Stream dataStream = tRequest.GetRequestStream())
            {
                dataStream.Write(byteArray, 0, byteArray.Length);
                using (WebResponse tResponse = tRequest.GetResponse())
                {
                    using (Stream dataStreamResponse = tResponse.GetResponseStream())
                    {
                        if (dataStreamResponse != null) using (StreamReader tReader = new StreamReader(dataStreamResponse))
                            {
                                String sResponseFromServer = tReader.ReadToEnd();
                                //result.Response = sResponseFromServer;
                            }
                    }
                }
            }

            return Ok("test service");
       
       
       
    }

}
 

Ответ №1:

Служба обмена сообщениями Firebase Cloud для push-уведомлений не предоставляет возможности добавлять кнопки действий в макеты уведомлений. Итак, чтобы добавить кнопку действия в уведомления, единственный способ, который у нас есть сейчас, — создать уведомление на родном языке и интегрировать его с Flutter.

Проверьте этот средний пост

Комментарии:

1. спасибо за ваш ответ 🙂 У меня есть еще один вопрос, пожалуйста … когда мое приложение на переднем плане и отправляет ему уведомление, оно не отображается как уведомление, я имею в виду, что на устройство не поступает уведомление. как я могу с этим справиться

2. Вы можете использовать пакеты flutter_local_notifications, чтобы показывать уведомления, когда приложение получает их напрямую pub.dev/packages/flutter_local_notifications

3. Имеет ли этот ответ отношение и к Firebase в Capcitor?