您好我正在尝试实施推送通知,如何显示为通知可以任何一个帮助,我能听,因为我收到通知但我无法看到消息,它显示为警报,但我希望作为通知可以任何一个帮助,在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),
),
],
),
));
}
}
答案 0 :(得分:5)
在Flutter中推送通知可能特别困难,因为要使其与Android&iOS的特定实现(当然两者都完全不同)一起使用,您必须做两次工作。
我一直在构建用于抖动的OneSignal SDK。几天之内就可以准备好了。我们尽最大努力简化推送通知,并且以符合GDPR的方式轻松使用我们的SDK。
回购在这里(https://github.com/OneSignal/OneSignal-Flutter-SDK),它是开源的,我们欢迎任何人的贡献。它充当原生Android和iOS OneSignal SDK的包装。
答案 1 :(得分:3)
如果您尝试将信息放在锁定屏幕上,请务必发送&#34;通知&#34;消息类型,而不是&#34;数据&#34;将传递给正在运行的应用程序的消息。您可以在Firebase开发者指南中了解有关different types of Firebase messages的更多信息。
答案 2 :(得分:1)
1。添加依赖性
我们使用名为firebase_messaging ...的插件来发送推送通知。
https://pub.dev/packages/firebase_messaging
打开您的pubspec.yaml文件并添加此依赖项
依赖性: firebase_messaging:^ 6.0.9
2。 Firebase帐户
在继续操作之前,请确保您具有Firebase帐户。
在下一步中,您应该可以下载 google-services.json 文件。
下载文件后,请确保将其复制到Android项目的app /文件夹中。
3。 Android清单
添加
<intent-filter>
<action android:name="FLUTTER_NOTIFICATION_CLICK" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
将这些行添加到[project] /android/build.gradle
dependencies {
classpath 'com.android.tools.build:gradle:4.0.0'
classpath 'com.google.gms:google-services:4.3.3'
}
将这些行添加到[project] /android/app/build.gradle
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.firebase:firebase-messaging:20.2.3'
implementation 'com.google.firebase:firebase-analytics:17.4.4'
// Add the SDK for Firebase Cloud Messaging
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
apply plugin: 'com.google.gms.google-services'
完成
答案 3 :(得分:1)
让我给你最突出的使用 Flutter 推送通知的解决方案,这是我今天遇到的,它是,locally
它是 samuelezedi.com 的一个包,它发送本地通知.安排它,最好的部分是它不需要像我们总是做的太多设置 flutter_local_notification
人们在使用它后失去他们的 Strands ?,它是如此复杂而且不适合初学者,所以我们找到了 {{1} } 本地会帮助你。
locally
看看这是多么容易发送推送通知,
使用 Locally locally = Locally(
context: context,
payload: 'test',
pageRoute: null, //Link to which page you want to open
appIcon: 'mipmap/ic_launcher', //Icon of your app, in android>app>src>main>res>drawable-v21 I put my png Icon..
);
locally.show(title: "Remaindero to use Toodolee", message: "Hey do this work");
代替 .show
这将有助于您安排时间
.schedule
他们的文档非常好,非常棒,像我这样的新手可以很好地理解它,我在这里找不到的一件事是对自定义声音的支持。
这是文档的链接。 https://pub.dev/packages/locally
非常感谢
答案 4 :(得分:-3)