cách chuyển hướng người dùng đến một trang khi nhấp vào thông báo

Jan 06 2021

Tôi đang làm việc trên web và ứng dụng flashing với máy chủ firebase. Tôi gửi thông báo bằng các chức năng đám mây. Tôi muốn chuyển hướng người dùng đến một trang cụ thể khi họ nhận được thông báo và nhấp vào trang đó. Hiện tại, ứng dụng của tôi hiển thị 'trang chủ' khi tôi nhận được thông báo và nhấp vào nó. Làm cách nào để chuyển hướng đến 'trang chi tiết yêu cầu' thay vì 'trang chủ' khi người dùng nhận được thông báo và nhấp vào thông báo đó?

Trả lời

Shanto Jan 06 2021 at 21:19

Thêm tệp này vào bên trong tệp AndroidManifest

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

Dữ liệu thông báo bên trong, Thêm click_action và thông số bắt buộc của bạn để điều hướng đến một trang cụ thể

'data': {
     'click_action': 'FLUTTER_NOTIFICATION_CLICK',
     'product_id': 1,
     ...
   },

Khi người dùng nhấp vào thông báo, một trong ba sự kiện này sẽ kích hoạt tùy thuộc vào trạng thái ứng dụng của bạn.

_firebaseMessaging.configure(
  onMessage: (Map<String, dynamic> message) async {
    print("onMessage: $message"); _showItemDialog(message); }, onBackgroundMessage: myBackgroundMessageHandler, onLaunch: (Map<String, dynamic> message) async { print("onLaunch: $message");
    _navigateToItemDetail(message);
  },
  onResume: (Map<String, dynamic> message) async {
    print("onResume: $message");
    _navigateToItemDetail(message);
  },
);

Lấy lại dữ liệu thông báo từ tin nhắn và điều hướng đến trang mong muốn của bạn.

MuhammadTameemRafay Jan 06 2021 at 22:53

SecondScreen là tên lớp của màn hình khác.

_firebaseMessaging.configure(
      onMessage: (Map<String, dynamic> message) async {

         Navigator.push(context,
                MaterialPageRoute(builder: (BuildContext context) {
              return SecondScreen(
                message,
              );
            }));

        print("onMessage: $message");
        _showItemDialog(message);
      },
     
    );