dart - 如何在 flutter 中实现推送通知

您好我正在尝试在 flutter 中实现推送通知如何显示为通知可以任何人提供帮助,我可以在收到通知时收听但我无法看到消息并且它显示为警报但我希望通知可以帮助任何人,在 android 或 iOS 中,我们应该在 list 文件和应用程序委托(delegate)文件中正确处理 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),
          ),

        ],
      ),
    ));
  }

  }

最佳答案

在 Flutter 中推送通知可能特别困难,因为您必须做两倍的工作才能让它们与 Android 和 iOS 的特定实现一起工作(当然,两者完全不同)。

我一直在为 flutter 构建 OneSignal SDK。它会在几天内准备好。我们非常努力地尽可能简化推送通知,并且很容易以符合 GDPR 的方式使用我们的 SDK。

repo 在这里 (https://github.com/OneSignal/OneSignal-Flutter-SDK),它是开源的,我们欢迎任何人的贡献。它充当原生 Android 和 iOS OneSignal SDK 之上的包装器。

https://stackoverflow.com/questions/46578907/

相关文章:

dart - Flutter BLoC 模式 - 如何在流事件后导航到另一个屏幕?

android - Flutter 上的小部件的 onResume() 和 onPause()

android - 如何在 TextFormField 中显示/隐藏密码?

android - flutter : How can I add divider between

dart - 如何使用 image.file 加载图像

dart - Flutter:如何制作随机颜色生成器背景

dart - 如何在 Flutter 中播放自定义声音?

flutter - 如何更改 FloatingActionButton 的大小?

flutter - 如何在 AppBar 中用图像替换标题

dart - Flutter ListView 项目点击监听器