本地通知訊息
最新更新:2022-11-29
低級通知
- 沒有鈴聲 / 震動 /led 燈
- 僅在通知欄展示通知訊息
NotificationMessage notificationMessage = new NotificationMessage().setMessageId("low_priority_" + System.currentTimeMillis())
.setTitle(this.getApplicationContext().getPackageName()).setContent("this is a low priority notification")
.setPriority(Notification.PRIORITY_LOW);
MTPushPrivatesApi.showNotification(this, notificationMessage);
NotificationMessage notificationMessage = new NotificationMessage().setMessageId("low_priority_" + System.currentTimeMillis())
.setTitle(this.getApplicationContext().getPackageName()).setContent("this is a low priority notification")
.setPriority(Notification.PRIORITY_LOW);
MTPushPrivatesApi.showNotification(this, notificationMessage);
此代碼塊在浮窗中顯示
普通通知
- 有鈴聲 / 震動 /led 燈,可通过 defaultProperties 配置鈴聲 / 震動 /led 燈
- 在通知欄展示通知訊息
- 在状态欄展示通知小图标
NotificationMessage notificationMessage = new NotificationMessage().setMessageId("normal_priority_" + System.currentTimeMillis())
.setTitle(this.getApplicationContext().getPackageName()).setContent("this is a normal priority notification")
// 这里演示仅鈴聲和震動生效
.setDefaultProperties(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE)
.setPriority(Notification.PRIORITY_DEFAULT);
MTPushPrivatesApi.showNotification(this, notificationMessage);
NotificationMessage notificationMessage = new NotificationMessage().setMessageId("normal_priority_" + System.currentTimeMillis())
.setTitle(this.getApplicationContext().getPackageName()).setContent("this is a normal priority notification")
// 这里演示仅鈴聲和震動生效
.setDefaultProperties(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE)
.setPriority(Notification.PRIORITY_DEFAULT);
MTPushPrivatesApi.showNotification(this, notificationMessage);
此代碼塊在浮窗中顯示
高級通知
- 有鈴聲 / 震動 /led 燈,可通过 defaultProperties 配置鈴聲 / 震動 /led 燈
- 在通知欄展示通知訊息
- 在状态欄展示通知小图标
- 設置應用程式允許懸浮窗後,可在屏幕頂部懸浮窗彈出
NotificationMessage notificationMessage = new NotificationMessage().setMessageId("high_priority_" + System.currentTimeMillis())
.setTitle(this.getApplicationContext().getPackageName()).setContent("this is a high priority notification")
// 这里演示鈴聲 / 震動 /led 燈全部生效
.setDefaultProperties(Notification.DEFAULT_ALL)
.setPriority(Notification.PRIORITY_HIGH);
MTPushPrivatesApi.showNotification(this, notificationMessage);
NotificationMessage notificationMessage = new NotificationMessage().setMessageId("high_priority_" + System.currentTimeMillis())
.setTitle(this.getApplicationContext().getPackageName()).setContent("this is a high priority notification")
// 这里演示鈴聲 / 震動 /led 燈全部生效
.setDefaultProperties(Notification.DEFAULT_ALL)
.setPriority(Notification.PRIORITY_HIGH);
MTPushPrivatesApi.showNotification(this, notificationMessage);
此代碼塊在浮窗中顯示
大文本風格通知
NotificationMessage notificationMessage = new NotificationMessage().setMessageId("big_text_" + System.currentTimeMillis())
.setTitle(this.getApplicationContext().getPackageName()).setContent("this is a big text notification")
.setStyle(NotificationMessage.NOTIFICATION_STYLE_BIG_TEXT)
.setBigText("《再別康橋》是現代詩人徐志摩膾炙人口的詩篇,是新月派詩歌的代表作品。全詩以離別康橋時感情起伏為線索,抒發了對康橋依依惜別的深情。語言輕盈柔和,形式精巧圓熟,詩人用虛實相間的手法,描繪了一幅幅流動的畫面,構成了一處處美妙的意境,細緻入微地將詩人對康橋的愛戀,對往昔生活的懷念,對眼前的無可奈何的離愁,表現得真摯、濃郁、雋永,是徐志摩詩作中的絕唱。");
MTPushPrivatesApi.showNotification(this, notificationMessage);
NotificationMessage notificationMessage = new NotificationMessage().setMessageId("big_text_" + System.currentTimeMillis())
.setTitle(this.getApplicationContext().getPackageName()).setContent("this is a big text notification")
.setStyle(NotificationMessage.NOTIFICATION_STYLE_BIG_TEXT)
.setBigText("《再別康橋》是現代詩人徐志摩膾炙人口的詩篇,是新月派詩歌的代表作品。全詩以離別康橋時感情起伏為線索,抒發了對康橋依依惜別的深情。語言輕盈柔和,形式精巧圓熟,詩人用虛實相間的手法,描繪了一幅幅流動的畫面,構成了一處處美妙的意境,細緻入微地將詩人對康橋的愛戀,對往昔生活的懷念,對眼前的無可奈何的離愁,表現得真摯、濃郁、雋永,是徐志摩詩作中的絕唱。");
MTPushPrivatesApi.showNotification(this, notificationMessage);
此代碼塊在浮窗中顯示
收件箱風格通知
NotificationMessage notificationMessage = new NotificationMessage().setMessageId("inbox_" + System.currentTimeMillis())
.setTitle(this.getApplicationContext().getPackageName()).setContent("this is a inbox notification")
.setStyle(MTPushPrivatesApi.NOTIFICATION_STYLE_INBOX)
.setInbox(new String[]{"this is inbox one", "this is inbox two", "this is inbox three"});
MTPushPrivatesApi.showNotification(this, notificationMessage);
NotificationMessage notificationMessage = new NotificationMessage().setMessageId("inbox_" + System.currentTimeMillis())
.setTitle(this.getApplicationContext().getPackageName()).setContent("this is a inbox notification")
.setStyle(MTPushPrivatesApi.NOTIFICATION_STYLE_INBOX)
.setInbox(new String[]{"this is inbox one", "this is inbox two", "this is inbox three"});
MTPushPrivatesApi.showNotification(this, notificationMessage);
此代碼塊在浮窗中顯示
大圖片風格通知
NotificationMessage notificationMessage = new NotificationMessage().setMessageId("big_picture_" + System.currentTimeMillis())
.setTitle(this.getApplicationContext().getPackageName()).setContent("this is a big picture notification")
.setStyle(MTPushPrivatesApi.NOTIFICATION_STYLE_BIG_PICTURE)
.setBigPicture("https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=96071541,1913562332&fm=26&gp=0.jpg");
MTPushPrivatesApi.showNotification(this, notificationMessage);
NotificationMessage notificationMessage = new NotificationMessage().setMessageId("big_picture_" + System.currentTimeMillis())
.setTitle(this.getApplicationContext().getPackageName()).setContent("this is a big picture notification")
.setStyle(MTPushPrivatesApi.NOTIFICATION_STYLE_BIG_PICTURE)
.setBigPicture("https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=96071541,1913562332&fm=26&gp=0.jpg");
MTPushPrivatesApi.showNotification(this, notificationMessage);
此代碼塊在浮窗中顯示
自訂角標通知
- 僅支持華為 / 榮耀 / 小米
- 小米設備上,刪除通知,角標數量自動減 1
- 華為 / 榮耀設備上,刪除通知,角標數量不會自動減 1,需要調用
MTPushPrivatesApi.setNotificationBadge(context,number)
設置最終角標數量
NotificationMessage notificationMessage = new NotificationMessage().setMessageId("badge_" + System.currentTimeMillis())
.setTitle(this.getApplicationContext().getPackageName()).setContent("this is a badge notification")
// 累加逻辑,这里演示角標數量 +1
.setBadge(1);
MTPushPrivatesApi.showNotification(this, notificationMessage);
NotificationMessage notificationMessage = new NotificationMessage().setMessageId("badge_" + System.currentTimeMillis())
.setTitle(this.getApplicationContext().getPackageName()).setContent("this is a badge notification")
// 累加逻辑,这里演示角標數量 +1
.setBadge(1);
MTPushPrivatesApi.showNotification(this, notificationMessage);
此代碼塊在浮窗中顯示
自訂鈴聲通知
- 需要提前在 res/raw/ 下放好對應鈴聲,這里以 "coin.mp3" 舉例
- Android8.0 開始,鈴聲在 channel 中設置
NotificationMessage notificationMessage = new NotificationMessage().setMessageId("sound_" + System.currentTimeMillis())
.setTitle(this.getApplicationContext().getPackageName()).setContent("this is a sound notification")
.setSound("coin");
MTPushPrivatesApi.showNotification(this, notificationMessage);
NotificationMessage notificationMessage = new NotificationMessage().setMessageId("sound_" + System.currentTimeMillis())
.setTitle(this.getApplicationContext().getPackageName()).setContent("this is a sound notification")
.setSound("coin");
MTPushPrivatesApi.showNotification(this, notificationMessage);
此代碼塊在浮窗中顯示
自訂 channel 通知
NotificationChannel notificationChannel = buildChannel();
NotificationMessage notificationMessage = new NotificationMessage().setMessageId("channel_" + System.currentTimeMillis())
.setTitle(this.getApplicationContext().getPackageName()).setContent("this is a channel notification")
.setChannelId(Build.VERSION.SDK_INT < Build.VERSION_CODES.O ? "" : notificationChannel.getId());
MTPushPrivatesApi.showNotification(this, notificationMessage);
// 演示如何創建一個 channel,普通級別,附帶鈴聲 coin
private NotificationChannel buildChannel() {
try {if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {return null;}
NotificationManager notificationManager = (NotificationManager) this.getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
if (notificationManager == null) {return null;}
String sound = "coin";
// channel id
String channelId = "money";
// channel 名稱
String channelName = "金錢";
// channel 優先級
int importance = NotificationManager.IMPORTANCE_DEFAULT;
// channel 描述
String channelDescription = "用于演示 channel,带自訂鈴聲";
NotificationChannel channel = notificationManager.getNotificationChannel(channelId);
if (channel == null) {channel = new NotificationChannel(channelId, channelName, importance);
channel.setDescription(channelDescription);
channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
Uri soundUri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + this.getPackageName() + "/raw/" + sound);
channel.setSound(soundUri, Notification.AUDIO_ATTRIBUTES_DEFAULT);
notificationManager.createNotificationChannel(channel);
} else {Log.d(TAG, "channel: [" + channelId + "] is already exists");}
return channel;
} catch (Throwable throwable) {throwable.printStackTrace();
}
return null;
}
NotificationChannel notificationChannel = buildChannel();
NotificationMessage notificationMessage = new NotificationMessage().setMessageId("channel_" + System.currentTimeMillis())
.setTitle(this.getApplicationContext().getPackageName()).setContent("this is a channel notification")
.setChannelId(Build.VERSION.SDK_INT < Build.VERSION_CODES.O ? "" : notificationChannel.getId());
MTPushPrivatesApi.showNotification(this, notificationMessage);
// 演示如何創建一個 channel,普通級別,附帶鈴聲 coin
private NotificationChannel buildChannel() {
try {if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {return null;}
NotificationManager notificationManager = (NotificationManager) this.getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
if (notificationManager == null) {return null;}
String sound = "coin";
// channel id
String channelId = "money";
// channel 名稱
String channelName = "金錢";
// channel 優先級
int importance = NotificationManager.IMPORTANCE_DEFAULT;
// channel 描述
String channelDescription = "用于演示 channel,带自訂鈴聲";
NotificationChannel channel = notificationManager.getNotificationChannel(channelId);
if (channel == null) {channel = new NotificationChannel(channelId, channelName, importance);
channel.setDescription(channelDescription);
channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
Uri soundUri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + this.getPackageName() + "/raw/" + sound);
channel.setSound(soundUri, Notification.AUDIO_ATTRIBUTES_DEFAULT);
notificationManager.createNotificationChannel(channel);
} else {Log.d(TAG, "channel: [" + channelId + "] is already exists");}
return channel;
} catch (Throwable throwable) {throwable.printStackTrace();
}
return null;
}
此代碼塊在浮窗中顯示
自訂佈局通知
// 這裡定義一個常量,代表自訂佈局的 builderId
private static final int BUILDER_ID = 1001;
// 首先設置自訂佈局到 Engagelab 私有云 SDK
NotificationLayout customBuilder = new NotificationLayout().setLayoutId(R.layout.custom_notification_layout)
.setIconViewId(R.id.iv_notification_icon)
.setIconResourceId(R.drawable.mtpush_notification_icon)
.setTitleViewId(R.id.tv_notification_title)
.setContentViewId(R.id.tv_notification_content)
.setTimeViewId(R.id.tv_notification_time);
MTPushPrivatesApi.setNotificationLayout(this.getApplicationContext(), BUILDER_ID, customBuilder);
// 之後傳送自訂佈局通知
NotificationMessage notificationMessage = new NotificationMessage().setMessageId("custom_layout_" + System.currentTimeMillis())
.setBuilderId(BUILDER_ID)
.setTitle(this.getApplicationContext().getPackageName()).setContent("this is a custom layout notification");
MTPushPrivatesApi.showNotification(this, notificationMessage);
// 這裡定義一個常量,代表自訂佈局的 builderId
private static final int BUILDER_ID = 1001;
// 首先設置自訂佈局到 Engagelab 私有云 SDK
NotificationLayout customBuilder = new NotificationLayout().setLayoutId(R.layout.custom_notification_layout)
.setIconViewId(R.id.iv_notification_icon)
.setIconResourceId(R.drawable.mtpush_notification_icon)
.setTitleViewId(R.id.tv_notification_title)
.setContentViewId(R.id.tv_notification_content)
.setTimeViewId(R.id.tv_notification_time);
MTPushPrivatesApi.setNotificationLayout(this.getApplicationContext(), BUILDER_ID, customBuilder);
// 之後傳送自訂佈局通知
NotificationMessage notificationMessage = new NotificationMessage().setMessageId("custom_layout_" + System.currentTimeMillis())
.setBuilderId(BUILDER_ID)
.setTitle(this.getApplicationContext().getPackageName()).setContent("this is a custom layout notification");
MTPushPrivatesApi.showNotification(this, notificationMessage);
此代碼塊在浮窗中顯示
自訂跳转通知
// 首先獲取 intentUri
Intent intent = new Intent();
intent.setClassName(this.getPackageName(), IntentActivity.class.getCanonicalName());
intent.setAction(ExampleGlobal.ACTION_INTENT_NOTIFICATION);
Bundle bundle = new Bundle();
bundle.putString("description", "this is a intent notification");
bundle.putString("form", MainActivity.class.getSimpleName());
bundle.putString("to", IntentActivity.class.getSimpleName());
intent.putExtras(bundle);
String intentUri = intent.toURI();
// 之後傳送自訂跳转通知
NotificationMessage notificationMessage = new NotificationMessage().setMessageId("intent_" + System.currentTimeMillis())
.setTitle(this.getApplicationContext().getPackageName()).setContentText("this is a intent notification")
.setContent(intentUri);
MTPushPrivatesApi.showNotification(this, notificationMessage);
// 首先獲取 intentUri
Intent intent = new Intent();
intent.setClassName(this.getPackageName(), IntentActivity.class.getCanonicalName());
intent.setAction(ExampleGlobal.ACTION_INTENT_NOTIFICATION);
Bundle bundle = new Bundle();
bundle.putString("description", "this is a intent notification");
bundle.putString("form", MainActivity.class.getSimpleName());
bundle.putString("to", IntentActivity.class.getSimpleName());
intent.putExtras(bundle);
String intentUri = intent.toURI();
// 之後傳送自訂跳转通知
NotificationMessage notificationMessage = new NotificationMessage().setMessageId("intent_" + System.currentTimeMillis())
.setTitle(this.getApplicationContext().getPackageName()).setContentText("this is a intent notification")
.setContent(intentUri);
MTPushPrivatesApi.showNotification(this, notificationMessage);
此代碼塊在浮窗中顯示