嗨我想在flutter中实现推送通知如何显示为通知可以任何一个帮助,我能够听,因为我收到通知但我无法看到消息,它显示为警报,但我想作为通知可以任何一个帮助,在Android或iOS我们应该在清单文件和应用程序委托文件中的这个在颤动
我的代码看起来像这样
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),
),
],
),
));
}
}
2 回答
Flutter中的推送通知可能特别困难,因为您必须做两倍的工作才能让他们使用Android和iOS的特定实现(当然,两者都非常不同) .
我一直在构建OneSignal SDK for flutter . 它将在几天内准备好 . 我们非常努力地尽可能地简化推送通知,并且很容易以符合GDPR的方式使用我们的SDK .
回购在这里(https://github.com/OneSignal/OneSignal-Flutter-SDK),它是's open source and we welcome contributions from anyone. It acts as a wrapper on top of the native Android & iOS OneSignal SDK' .
如果您're trying to put messages on the lock screen, make sure you'重新发送"notification"消息类型,而不是将传递给正在运行的应用程序的"data"消息 . 您可以在Firebase开发人员指南中了解有关different types of Firebase messages的更多信息 .