5.0以上(不包含5.0),系統默認通知欄圖標爲系統啓動圖標,會自動將通知欄的圖標(有色區域)全部填充爲白色,像一個白色格子,這是Google 爲了實現材料設計規範,特意爲之。爲了去除白色圖標,鏤空背景即可:
系統啓動圖標ic_launcher.png
指定最頂層狀態欄的小圖標ic_notif.png,圖片大小(60*60到80*80像素爲佳)
這裏貼出極光官方API的說明,但第一種方法好像並沒什麼用,第二種還需要服務端提供樣式id(notificationID),當然服務器給出不同的ID就能得到相應的樣式,在極光推送網頁上也要填上相應的ID(範圍1-1000),id爲0時爲系統默認。樣式詳細過程見: 用了極光推送的項目,可以配置自定義通知
http://docs.jpush.io/client/android_tutorials/#_11
http://docs.jpush.io/client/android_tutorials/#_11
客戶端定義通知欄樣式
自定義的通知欄樣式,是在客戶端進行的。請參考 通知欄樣式定製API 來看所支持的功能。
自定義通知欄樣式設計
- 有個 PushNotificationBuilder 概念,開發者使用 setPushNotificationBuilder 方法爲某種類型的 PushNotificationBuilder 指定編號。
- setPushNotificationBuilder 可以在 JPushInterface.init() 之後任何地方調用,可以是開發者應用的邏輯來觸發調用,或者初始化時調用。
- 只需要設置一次,JPush SDK 會記住這個設置。在下次收到推送通知時,就根據通知裏指定的編號來找到 PushNotificationBuilder 來展現、執行。
API - setDefaultPushNotificationBuilder 設置默認
此 API 改變默認的編號爲 0 的通知欄樣式。
API - setPushNotificationBuilder 指定編號
此 API 爲開發者指定的編號,設置一個自定義的 PushNotificationBuilder(通知樣式構建器)。
Example - 基礎的 PushNotificationBuilder
定製聲音、震動、閃燈等 Notification 樣式。
BasicPushNotificationBuilder builder = new BasicPushNotificationBuilder(MainActivity.this);
builder.statusBarDrawable = R.drawable.jpush_notification_icon;
builder.notificationFlags = Notification.FLAG_AUTO_CANCEL; //設置爲自動消失
builder.notificationDefaults = Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE | Notification.DEFAULT_LIGHTS; // 設置爲鈴聲與震動都要
JPushInterface.setPushNotificationBuilder(1, builder);
Example - 高級自定義的 PushNotificationBuilder
基於基礎的 PushNotificationBuilder,可進一步地定製 Notification 的 Layout。
這裏作爲 example 的 customer_notitfication_layout 在我們的 example 項目的 /res/layout/ 下可以找到。你完全可以用自己的 layout。
CustomPushNotificationBuilder builder = new
CustomPushNotificationBuilder(MainActivity.this,
R.layout.customer_notitfication_layout,
R.id.icon,
R.id.title,
R.id.text);
// 指定定製的 Notification Layout
builder.statusBarDrawable = R.drawable.your_notification_icon;
// 指定最頂層狀態欄小圖標
builder.layoutIconDrawable = R.drawable.your_2_notification_icon;
// 指定下拉狀態欄時顯示的通知圖標
JPushInterface.setPushNotificationBuilder(2, builder);
如果只想在客戶端設置,一直使用自己定義的樣式,請看下面
代碼示例:
/** * 當用戶需要定製默認的通知欄樣式時,則可調用此方法。 */ private void setDefaultPushNotificationBuilder(Context context) { CustomPushNotificationBuilder builder = new CustomPushNotificationBuilder(context, R.layout.customer_notitfication_layout, R.id.notif_icon, R.id.notif_title, R.id.notif_text); // 指定定製的 Notification Layout builder.statusBarDrawable = R.drawable.ic_notif; // 指定最頂層狀態欄小圖標 builder.layoutIconDrawable = R.drawable.ic_launcher; // 指定下拉狀態欄時顯示的通知圖標 JPushInterface.setDefaultPushNotificationBuilder(builder); }
在極光推送註冊方法下的JpushInterface.init(),方法下調用自定義的樣式即可(只需要調用一次)
private void registerPush() { // JPush JPushInterface.setDebugMode(true); JPushInterface.init(this.getApplicationContext()); setDefaultPushNotificationBuilder(PushProcessService.this);
}
完成上面的步驟即可。