gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:30:31 24 4
gpt4 key购买 nike

您好我正在尝试在 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 之上的包装器。

关于dart - 如何在 flutter 中实现推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46578907/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com