im using awesome_notifications package for my notification, when im running on emulator it works fine the icon appear but in the real device it just blue circle or white circle.
NOTE: im testing with Redmi Note 9 12.5.5 Android 11
here is my icon
here is my notifications initialize code
AwesomeNotifications().initialize(
null,
[
// notification icon
NotificationChannel(
channelGroupKey: 'basic_test',
channelKey: 'basic',
channelName: 'Basic notifications',
channelDescription: 'Notification channel for basic tests',
channelShowBadge: true,
importance: NotificationImportance.High,
enableVibration: false,
),
],
);
here is my create notifications code
AwesomeNotifications().createNotification(
content: NotificationContent(
id: id,
channelKey: 'basic',
title: title,
body: body,
autoDismissible: false,
locked: showProgress ? true : false,
notificationLayout: showProgress
? NotificationLayout.ProgressBar
: NotificationLayout.Default,
progress: progress,
fullScreenIntent: true,
backgroundColor: MyThemes.colorBlue,
),
);
Related
I have a flutter app that uses local notifications https://pub.dev/packages/flutter_local_notifications.
I have a notification that is set to a certain date :
await flutterLocalNotificationsPlugin.initialize(initializationSettings,
onDidReceiveNotificationResponse: (NotificationResponse response) async {
print("FOREGORUND");
},
onDidReceiveBackgroundNotificationResponse: notificationTapBackground,
);
await flutterLocalNotificationsPlugin.zonedSchedule(
uid.hashCode,
title,
desc,
timez.TZDateTime.from(datex, timez.local),
NotificationDetails(
android: AndroidNotificationDetails(
'your channel id', 'your channel name',
channelDescription: 'your channel description',
actions: <AndroidNotificationAction>[
AndroidNotificationAction(
"CompleteID",
"Complete",
icon: DrawableResourceAndroidBitmap('complete_img'),
showsUserInterface: false,
cancelNotification: true,
),
],)
),
payload: uid,
androidAllowWhileIdle: true,
uiLocalNotificationDateInterpretation:
UILocalNotificationDateInterpretation.absoluteTime);
When I click on the complete action from the notification, the app calls "notificationTapBackground" even if the app is in foreground, so from notificationTapBackground isolate thread i can' t call setstate inside my app.
I would like to be able to click on the complete action from the notification and have :
the app calls notificationTapBackground, if the app is in the background
the app calls onDidReceiveNotificationRespons, if the app is in the foreground
all with the parameter showsUserInterface: false, inside notification actions.
I am developing a flutter application and displaying notifications with awesome_notifications package (https://pub.dev/packages/awesome_notifications). Below is my code.
await AwesomeNotifications().createNotification(
content: NotificationContent(
id: UniqueKey().hashCode,
groupKey: message.data["senderUid"],
channelKey: 'basic_channel',
title: message.data["title"],
body: message.data["body"],
summary: message.data["body"], // Anything you want here
bigPicture:
"https://upload.wikimedia.org/wikipedia/commons/thumb/a/a8/TEIDE.JPG/2560px-TEIDE.JPG",
notificationLayout: NotificationLayout.Messaging,
),
);
This code does not display any notifications. Instead if I remove the bigPicture, then it will show the message without the picture.
How can I show the notification image?
Use correct notificationLayout, in this case BigPicture.
So I have this app in flutter, in which there are two textfeilds.
One is 'Reminder title' and another is the description/message.
Now what I want is that to push a notification with the information from the textfeilds.
And I want the notification to be there until I mark it as done from the app.
Now I have been using flutter_local_notifications. But I have been getting errors by following their documentations. Actually no notification came after pressing the button.
I need help with some code to achieve the following purpose.
We can use awesome_notifications for this purpose, in case firebase and flutter_local_notification becomes problematic.
Basically you have to initialize a channel:
import 'package:awesome_notifications/awesome_notifications.dart';
AwesomeNotifications().initialize(
// set the icon to null if you want to use the default app icon
'resource://drawable/res_app_icon',
[
NotificationChannel(
channelGroupKey: 'basic_channel_group',
channelKey: 'basic_channel',
channelName: 'Basic notifications',
channelDescription: 'Notification channel for basic tests',
defaultColor: Color(0xFF9D50DD),
ledColor: Colors.white)
],
// Channel groups are only visual and are not required
channelGroups: [
NotificationChannelGroup(
channelGroupkey: 'basic_channel_group',
channelGroupName: 'Basic group')
],
debug: true
);
and then create desired notification by =>
AwesomeNotifications().createNotification(
content: NotificationContent(
id: 10,
channelKey: 'basic_channel',
title: 'Simple Notification',
body: 'Simple body'
)
);
Read their documentation for more information.
And here is their video tutorial.
On Android, I want to be able to show a persistent notification with two buttons even when the app is in the background or when the phone is locked. Basically, like a WhatsApp incoming call notification.
I know how to do it in Java but I don't know how to do it in Flutter. I've read similar questions on SO but none have provided a good answer.
FYI, I know how to send and receive FCM notifications. I know how to display a normal notification when a FCM message is sent while the app is in the background.
After wasting an entire week, here is the solution I found.
Keep your app running in the background and make sure it is not closed by the user. This tutorial explains how to do it: https://github.com/ppicas/flutter-android-background
If the solution above is too complicated, use the flutter_background to do more or less the same thing (the first solution is better because it also prevents the user from closing the app).
Make sure the flutter activity can be displayed over the lock screen by adding this to your activity's declaration in your manifest:
android:showWhenLocked="true"
Last thing is to use a wakelock in flutter when your app receives a notification, and you want to display a full screen "call received" widget.
You can use firebase_messaging and awesome_notifications
add this in your firebase background subscription handler
await AwesomeNotifications().createNotification(
content: NotificationContent(
id: createuniqueId(),
channelKey: 'basic_channel',
title: message.data['title'],
body: message.data['body'],
wakeUpScreen: true,
fullScreenIntent: true,
autoDismissible: false,
category: NotificationCategory.Call,
locked: true,
displayOnForeground: true,
),
actionButtons: [
NotificationActionButton(
key: 'accept',
label: 'Accept',
),
NotificationActionButton(
isDangerousOption: true,
key: 'reject',
label: 'Reject',
),
],
);
add this is your main()
AwesomeNotifications().initialize(
'resource://drawable/ic_icon',
[
NotificationChannel(
channelKey: 'basic_channel',
channelName: 'Basic Notification',
channelDescription: 'Hello world',
importance: NotificationImportance.High,
channelShowBadge: true,
vibrationPattern: highVibrationPattern
),
]
);
Is there a way to disable the vibration via push notification payload when notification displayed?
This is my sample payload.
$payload = array
(
'title' => 'Title',
'message' => 'Message',
'vibrate' => 0,
'content-available' => 1
);
But vibration is still working even I set the vibrate value to 0.
Any help will be greatly appreciated. Thank you!
Within the PushNotification.init() method you also need to set 'vibrate' to false, as it defaults to true for Android. iOS however does not have a similar setting, but setting sound to false may also work (i haven't tested this).
var push = PushNotification.init({
android: {
senderID: "12345679",
vibrate: false
},
ios: {
sound: false
},
windows: {}
});
https://github.com/phonegap/phonegap-plugin-push/blob/master/docs/API.md#pushnotificationinitoptions