Как реализовать push-уведомление во флаттере

Привет, я пытаюсь реализовать push-уведомление во флаттера, как отображать как уведомление, может ли кто-нибудь помочь, я могу слушать, поскольку получаю уведомление, но я не могу видеть сообщение и он появляется как предупреждение, но я хотите, как уведомление может помочь кому-либо, и в android или iOS мы должны прямо в файле манифеста файла и приложения делегировать, что об этом в flutter

и мой код выглядит следующим образом

 class PushMessagingExample extends StatefulWidget {
 @override
 _PushMessagingExampleState createState() => new _PushMessagingExampleState();
 }

class _PushMessagingExampleState extends State<PushMessagingExample> {
String _homeScreenText = "Waiting for token...";
bool _topicButtonsDisabled = false;

final FirebaseMessaging _firebaseMessaging = new FirebaseMessaging();
final TextEditingController _topicController =
new TextEditingController(text: 'topic');

Future<Null> _showItemDialog(Map<String, dynamic> message) async {
final Item item = _itemForMessage(message);
showDialog<Null>(
    context: context,
    child: new AlertDialog(
      content: new Text("Item ${message} has been updated"),
      actions: <Widget>[
        new FlatButton(
            child: const Text('CLOSE'),
            onPressed: () {
              Navigator.pop(context, false);
            }),
        new FlatButton(
            child: const Text('SHOW'),
            onPressed: () {
              Navigator.pop(context, true);
            }),
      ],
    )).then((bool shouldNavigate) {
  if (shouldNavigate == true) {
    _navigateToItemDetail(message);
  }
});
}

 Future<Null> _navigateToItemDetail(Map<String, dynamic> message) async     {
final Item item = _itemForMessage(message);
// Clear away dialogs
Navigator.popUntil(context, (Route<dynamic> route) => route is PageRoute);
if (!item.route.isCurrent) {
  Navigator.push(context, item.route);
}
}

  @override
 void initState() {
  super.initState();
_firebaseMessaging.configure(
  onMessage: (Map<String, dynamic> message) {
    print("onMessage: $message");
    print(message);
    _showItemDialog(message);
  },
  onLaunch: (Map<String, dynamic> message) {
    print("onLaunch: $message");
    print(message);
    _navigateToItemDetail(message);
  },
  onResume: (Map<String, dynamic> message) {
    print("onResume: $message");
    print(message);
    _navigateToItemDetail(message);
  },
);
_firebaseMessaging.requestNotificationPermissions(
    const IosNotificationSettings(sound: true, badge: true, alert: true));
_firebaseMessaging.onIosSettingsRegistered
    .listen((IosNotificationSettings settings) {
  print("Settings registered: $settings");
});
_firebaseMessaging.getToken().then((String token) {
  assert(token != null);
  setState(() {
    _homeScreenText = "Push Messaging token: $token";
  });
  print(_homeScreenText);
});
}

@override
Widget build(BuildContext context) {
return new Scaffold(


    body: new Material(
      child: new Column(
        children: <Widget>[
          new Center(
            child: new Text(_homeScreenText),
          ),

        ],
      ),
    ));
  }

  }

Ответ 1

Push-уведомления во Flutter могут быть особенно трудными, потому что вам нужно сделать вдвое больше работы, чтобы заставить их работать с конкретными реализациями Android и iOS (обе они, конечно, совершенно разные).

Я строил OneSignal SDK для флаттера. Он будет готов в течение нескольких дней. Мы прилагаем все усилия, чтобы максимально упростить push-уведомления, и наш SDK-совместимый способ легко использовать в соответствии с GDPR.

Репозиторий находится здесь (https://github.com/OneSignal/OneSignal-Flutter-SDK), он с открытым исходным кодом, и мы приветствуем вклады всех желающих. Он действует как оболочка над родным SDK для Android и iOS OneSignal.

Ответ 2

Если вы пытаетесь поместить сообщения на экран блокировки, убедитесь, что вы отправляете тип сообщения "уведомление", а не сообщение "данные", которое будет доставлено в работающее приложение. Подробнее о различных типах сообщений Firebase вы можете узнать в руководстве разработчика Firebase.

Ответ 3

Вы используете FCM настолько хорошо, что для Android это не должно быть проблемой, просто следуйте поваренной книге, и все будет в порядке, настоящая проблема связана с iOS, потому что вам нужно создать ключ, а затем сертификат для push-уведомлений, добавить это в подфайле и активировать его в xcode. Используйте эти ссылки для получения дополнительной информации: здесь и этот.