flutterLocalNotificationsPlugin.show - android

My flutter app, show this notification when FCM is triggered.
await flutterLocalNotificationsPlugin.show(
0, "my app. Alert", "Alert text from App", platform
);
Is there any way to show a image in the notification bar and not only the text?
Something like:
await flutterLocalNotificationsPlugin.show(
0, "my app. Alert", "Alert text from App","url: myimage.com/sample.jpg", platform
);
Thanks

If you are using the flutter_local_notifications plugin, then you can do something like this for android:
Future<void> _showBigPictureNotification() async {
var largeIconPath = await _downloadAndSaveImage(
'http://via.placeholder.com/48x48', 'largeIcon');
var bigPicturePath = await _downloadAndSaveImage(
'http://via.placeholder.com/400x800', 'bigPicture');
var bigPictureStyleInformation = BigPictureStyleInformation(
bigPicturePath, BitmapSource.FilePath,
largeIcon: largeIconPath,
largeIconBitmapSource: BitmapSource.FilePath,
contentTitle: 'overridden <b>big</b> content title',
htmlFormatContentTitle: true,
summaryText: 'summary <i>text</i>',
htmlFormatSummaryText: true);
var androidPlatformChannelSpecifics = AndroidNotificationDetails(
'big text channel id',
'big text channel name',
'big text channel description',
style: AndroidNotificationStyle.BigPicture,
styleInformation: bigPictureStyleInformation);
var platformChannelSpecifics =
NotificationDetails(androidPlatformChannelSpecifics, null);
await flutterLocalNotificationsPlugin.show(
0, 'big text title', 'silent body', platformChannelSpecifics);
}
For more such examples, please refer the official example provided by the plugin developer, here.

Related

Flutter PUSH Notification icon not showing

I tried to add flutter app icon by using a package flutter_launcher_icon app icon is correct but icons shows in push notification show as a white box
Notification Icon Shows as a white box
Resource File
I added icons by using a package [flutter_launcher_icons]
Expected Output
same error have happened to me so i have used icon as xml file in android
we have to add that file name here
void showNotification(int orderCount) async {
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
var initializationSettingsAndroid = AndroidInitializationSettings('fav_icon');
var initializeSettings = InitializationSettings(android: initializationSettingsAndroid);
var res = await flutterLocalNotificationsPlugin.initialize(initializeSettings) ?? false;
Log.d("Notification manager initialized $res");
if (res) {
flutterLocalNotificationsPlugin.show(
1,
"Order",
"You have new notifications",
NotificationDetails(
android: AndroidNotificationDetails('NOTIFICATION', 'New order notifications',
channelDescription: 'Shows notifications when new orders are available',
importance: Importance.max,
priority: Priority.high,
playSound: true,
category: AndroidNotificationCategory.event,
color: MyColor.kSecondary)));
}
}

how to custom multi different sound of push notification in flutter

I want to set sound when push notification, but problem is app when update or install then sound is work ok and when i push local notification and change file of sound but sound notification not change follow. it still takes the old sound.
var platformChannelSpecificsAndroid = new AndroidNotificationDetails(
"fcm_default_channel",
"fcm_default_channel",
channelDescription: 'Channel to Received Push Notification',
playSound: true,
styleInformation: DefaultStyleInformation(true, true),
importance: Importance.max,
priority: Priority.high,
icon: 'launch_background',
sound: RawResourceAndroidNotificationSound(pushSound ?? ""),
);
var platformChannelSpecificsIos = new IOSNotificationDetails(
// presentSound: true
sound: pushSound ?? "");
var platformChannelSpecifics = new NotificationDetails(
android: platformChannelSpecificsAndroid,
iOS: platformChannelSpecificsIos);
new Future.delayed(Duration.zero, () {
flutterLocalNotificationsPlugin.show(
hashCode,
pushTitle,
pushText,
platformChannelSpecifics,
payload: payloadT,
);
});
I saw the same problem. I found this answer Play multiple different notification sounds from app . But it is only helpful for Kotlin

Local notification flutter :Error "Unhandled Exception: NoSuchMethodError: The method 'show' was called on null."

How i can create notification without click button?
how to initialize when opening the application a notification appears ?
String groupKey = 'com.android.example.WORK_EMAIL';
String groupChannelId = 'grouped channel id';
String groupChannelName = 'grouped channel name';
String groupChannelDescription = 'grouped channel description';
AndroidNotificationDetails firstNotificationAndroidSpecifics =
AndroidNotificationDetails(
groupChannelId, groupChannelName,
groupChannelDescription,
importance: Importance.Max,
priority: Priority.High,
groupKey: groupKey,
style: AndroidNotificationStyle.BigText,
styleInformation: BigTextStyleInformation(''),
);
final AndroidNotificationDetails android = AndroidNotificationDetails(
'ch_ID',
'Ch_Name',
'ch_Description',
priority: Priority.High,
importance: Importance.Max,
// add this line in your code
styleInformation: BigTextStyleInformation(''),
);
NotificationDetails firstNotificationPlatformSpecifics =
NotificationDetails(
firstNotificationAndroidSpecifics, null,);
flutterLocalNotificationsPlugin.show(
1, 'Confirmation ',
'Hello' , firstNotificationPlatformSpecifics);
how to launch a notification in flutter?

How to enable the "Show Notification as Pop Up" by default on android devices?

I am working on a food delivery app with Flutter. I have recently Implemented the flutter_local_notifications and the notification is working fine. But there's one problem is that the notification doesn't show as pop up by default. The "Show as pop up" option is disabled by default in the notification settings.
Is there any way that when the app is installed the "Show as pop up" option is enabled by default.
Here's my Notification Configuration Code:
void registerNotification() {
// This function registers the user for recieving push notifications.
// After registering the user, it creates a new field inside 'userForChat' Database
// The field is called : 'pushToken' which is later used on to configure Firebase Automatic Cloud Messaging
firebaseMessaging.requestNotificationPermissions();
firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) {
print('onMessage: $message');
Platform.isAndroid
? showNotification(message['notification'])
: showNotification(message['aps']['alert']);
return;
},
onResume: (Map<String, dynamic> message) {
print('onResume: $message');
return;
},
onLaunch: (Map<String, dynamic> message) {
print('onLaunch: $message');
return;
},
);
// Token for Firebase Messaging
firebaseMessaging.getToken().then((token) {
print('token: $token');
Firestore.instance
.collection('usersForChat')
.document(currentUserId)
.updateData(
{'pushToken': token}); //Sets the firebase Token into the database
}).catchError((onError) {
setState(() {});
});
}
void configLocalNotification() {
var initializationSettingsAndroid = AndroidInitializationSettings(
'mipmap/ic_launcher');
var initializationSettingsIOS = IOSInitializationSettings();
var initializationSettings = InitializationSettings(
initializationSettingsAndroid, initializationSettingsIOS);
flutterLocalNotificationsPlugin.initialize(initializationSettings);
}
void showNotification(message) async {
// This function takes the notfication message as input triggers the notification to show the message.
// The input is in a json format so you have to decode the json with dart:convert.
// IMPORTANT: Specify the Application package name according to the OS.
//For Android, Use the android app package name from firebase
//For iOS, Use the iOS app package name from firebase
var androidPlatformChannelSpecifics = AndroidNotificationDetails(
// add your apps package name for each OS(Android:iOS)
Platform.isAndroid
? 'com.jexmovers.app' //Update the package name to your app's package names
: 'com.jexmovers.ios', //Update the package name to your app's package names
'JexMovers Chat',
'App that lets you contact with your food delivery person',
playSound: true,
enableVibration: true,
importance: Importance.Max,
priority: Priority.Max,
visibility: NotificationVisibility.Public,
enableLights: true,
);
var iOSPlatformChannelSpecifics = IOSNotificationDetails();
var platformChannelSpecifics = NotificationDetails(
androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);
print(message);
print(message['body'].toString());
print(json.encode(message));
await flutterLocalNotificationsPlugin.show(
0,
message['title'].toString(),
message['body'].toString(),
platformChannelSpecifics,
payload: json.encode(message),
);
}

Call a HTTP request in flutter local notification

I would like to ask if there's a http get in flutter local notifications? My aim here is when the flutter notification will show, a http get request will be triggered
This my http request for my api:
final String url = 'http://192.168.43.45:8000/api';//url in my request
List data;
Future<String> getData() async {
var response =await http.get(
Uri.encodeFull(url),
headers:{"Accept":"application/json"}
);//get data and decode it to json
}
This code will initialize the notifications:
initializeNotifications() async {
var initializationSettingsAndroid =
AndroidInitializationSettings('#mipmap/launcher_icon');//icon will display when notification appears
var initializationSettingsIOS = IOSInitializationSettings();
var initializationSettings = InitializationSettings(
initializationSettingsAndroid, initializationSettingsIOS);
await flutterLocalNotificationsPlugin.initialize(initializationSettings,
onSelectNotification: onSelectNotification);
}
Future onSelectNotification(String payload) async {
if (payload != null) {
debugPrint('notification payload: ' + payload);
}
await Navigator.push(
context,
new MaterialPageRoute(builder: (context) => HomePage()),
);
}
Code for the notification when click it will redirect to homePage:
Future<void> scheduleNotification(Medicine medicine) async {
var hour = int.parse(medicine.startTime[0] + medicine.startTime[1]);
var ogValue = hour;
var minute = int.parse(medicine.startTime[2] + medicine.startTime[3]);
var androidPlatformChannelSpecifics = AndroidNotificationDetails(
'repeatDailyAtTime channel id',
'repeatDailyAtTime channel name',
'repeatDailyAtTime description',
importance: Importance.Max,
ledColor: Color(0xFF3EB16F),
ledOffMs: 1000,
ledOnMs: 1000,
enableLights: true,
);
//notification details
var iOSPlatformChannelSpecifics = IOSNotificationDetails();
var platformChannelSpecifics = NotificationDetails(
androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);
//this code will show the whats the notification must appear
await flutterLocalNotificationsPlugin.showDailyAtTime(
int.parse(medicine.notificationIDs[i]),
'Mediminder: ${medicine.medicineName}',
medicine.medicineType.toString() !=
MedicineType.None.toString()
? 'It is time to take your Medicine, according to schedule'
: 'It is time to take your medicine, according to schedule',
Time(hour, minute,),
platformChannelSpecifics);
hour = ogValue;
}
//await flutterLocalNotificationsPlugin.cancelAll();//cancel the flutter notifications
}
}
it seems that you are using flutter_local_notifications, looking at their documentation i don't think it's possible to you to handle the onReceive notification, this is done internally by the package.
But maybe you could implement your own receiver class extending BroadCastReceiver and listen for the same action that the packages send, from there you'll be able to send HTTP requests.
Take a look at this question, maybe it helps.

Categories

Resources