Android: OneSignal 如何用自定义图标或应用程序图标更改通知账单图标?
Android: OneSignal how to change Notification bill icon with custom icon or app icon?
当收到通知时,会显示账单图标,而不是应用程序图标或自定义图标,我覆盖它以从代码中显示。我可以从仪表板更改图标,但我想从代码中处理它
嵌入
OneSignal.startInit(this)
.inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)// to hide dialog
.setNotificationOpenedHandler(new ExampleNotificationOpenedHandler())
.init();
接收者class
class ExampleNotificationOpenedHandler implements OneSignal.NotificationOpenedHandler
{
// This fires when a notification is opened by tapping on it.
@Override
public void notificationOpened(OSNotificationOpenResult result)
{
OSNotificationAction.ActionType actionType = result.action.type;
JSONObject data = result.notification.payload.additionalData;
String customKey;
Intent intent = new Intent(Roshetta.app, SplashActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
int requestCode = 0;
PendingIntent pendingIntent = PendingIntent.getActivity(Roshetta.app, requestCode, intent, PendingIntent.FLAG_ONE_SHOT);
Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
android.support.v4.app.NotificationCompat.Builder noBuilder = new android.support.v4.app.NotificationCompat.Builder(Roshetta.app)
.setSmallIcon(R.mipmap.ic_launcher).setLargeIcon(largeIcon).setContentTitle(result.notification.payload.title)
.setContentText(result.notification.payload.body )
.setAutoCancel(true).setDefaults(android.app.Notification.DEFAULT_ALL)
.setContentIntent(pendingIntent).setSound(sound);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, noBuilder.build()); //0 = ID of notification
if (data != null)
{
customKey = data.optString("customkey", null);
if (customKey != null)
Log.i("OneSignalExample", "customkey set with value: " + customKey);
}
if (actionType == OSNotificationAction.ActionType.ActionTaken)
Log.i("OneSignalExample", "Button pressed with id: " + result.action.actionID);
Log.i("OneSignalExample", "ExampleNotificationOpenedHandler");
}
您需要在 drawables
目录中创建一个名为 ic_stat_onesignal_default
的图标,该图标将代替 OneSignal 的默认铃铛图标显示。建议使用 Android Asset Studio 创建正确的尺寸,并确保在您的设备上试用之前它看起来正确。
请注意,应用程序图标不应再用作小通知图标,因为在 Android 5.0 Lollipop 中只会使用图标的 alpha。在这种情况下,大多数应用程序图标将只是一个白色的乡绅或圆圈。
有关详细信息,请参阅下面的 OneSignal 文档页面。
https://documentation.onesignal.com/docs/customize-notification-icons
您必须创建以下尺寸的图标:
drawable-hdpi/ic_stat_one_signal_default.png
drawable-mdpi/ic_stat_one_signal_default.png
drawable-xhdpi/ic_stat_one_signal_default.png
drawable-xxhdpi/ic_stat_one_signal_default.png
drawable-xxxhdpi/ic_onesignal_large_icon_default.png
请注意,尺寸 drawable-xxxhdpi 的名称不同。
我建议使用 Android Asset Studio 或 Android Studio->app->Image Asset[=55 创建图标=] 确保具有不同 android 版本的图标。
如果您想要两种图标类型,一种用于通知区域,另一种用于通知抽屉,您必须执行以下操作:
1.- 为不同尺寸创建相同的图像图标:mdpi
、hdpi
、xhdpi
、xxhpi
调用:ic_stat_one_signal_default
2.- 为尺寸 xxxhdpi
创建一个不同的图像图标,名为:ic_onesignal_large_icon_default
看起来像:
Icon - Notification area/drawer
有关详细信息,请参阅 OneSignal 的官方文档。 https://documentation.onesignal.com/docs/customize-notification-icons
当收到通知时,会显示账单图标,而不是应用程序图标或自定义图标,我覆盖它以从代码中显示。我可以从仪表板更改图标,但我想从代码中处理它
嵌入
OneSignal.startInit(this)
.inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)// to hide dialog
.setNotificationOpenedHandler(new ExampleNotificationOpenedHandler())
.init();
接收者class
class ExampleNotificationOpenedHandler implements OneSignal.NotificationOpenedHandler
{
// This fires when a notification is opened by tapping on it.
@Override
public void notificationOpened(OSNotificationOpenResult result)
{
OSNotificationAction.ActionType actionType = result.action.type;
JSONObject data = result.notification.payload.additionalData;
String customKey;
Intent intent = new Intent(Roshetta.app, SplashActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
int requestCode = 0;
PendingIntent pendingIntent = PendingIntent.getActivity(Roshetta.app, requestCode, intent, PendingIntent.FLAG_ONE_SHOT);
Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
android.support.v4.app.NotificationCompat.Builder noBuilder = new android.support.v4.app.NotificationCompat.Builder(Roshetta.app)
.setSmallIcon(R.mipmap.ic_launcher).setLargeIcon(largeIcon).setContentTitle(result.notification.payload.title)
.setContentText(result.notification.payload.body )
.setAutoCancel(true).setDefaults(android.app.Notification.DEFAULT_ALL)
.setContentIntent(pendingIntent).setSound(sound);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, noBuilder.build()); //0 = ID of notification
if (data != null)
{
customKey = data.optString("customkey", null);
if (customKey != null)
Log.i("OneSignalExample", "customkey set with value: " + customKey);
}
if (actionType == OSNotificationAction.ActionType.ActionTaken)
Log.i("OneSignalExample", "Button pressed with id: " + result.action.actionID);
Log.i("OneSignalExample", "ExampleNotificationOpenedHandler");
}
您需要在 drawables
目录中创建一个名为 ic_stat_onesignal_default
的图标,该图标将代替 OneSignal 的默认铃铛图标显示。建议使用 Android Asset Studio 创建正确的尺寸,并确保在您的设备上试用之前它看起来正确。
请注意,应用程序图标不应再用作小通知图标,因为在 Android 5.0 Lollipop 中只会使用图标的 alpha。在这种情况下,大多数应用程序图标将只是一个白色的乡绅或圆圈。
有关详细信息,请参阅下面的 OneSignal 文档页面。 https://documentation.onesignal.com/docs/customize-notification-icons
您必须创建以下尺寸的图标:
drawable-hdpi/ic_stat_one_signal_default.png
drawable-mdpi/ic_stat_one_signal_default.png
drawable-xhdpi/ic_stat_one_signal_default.png
drawable-xxhdpi/ic_stat_one_signal_default.png
drawable-xxxhdpi/ic_onesignal_large_icon_default.png
请注意,尺寸 drawable-xxxhdpi 的名称不同。
我建议使用 Android Asset Studio 或 Android Studio->app->Image Asset[=55 创建图标=] 确保具有不同 android 版本的图标。
如果您想要两种图标类型,一种用于通知区域,另一种用于通知抽屉,您必须执行以下操作:
1.- 为不同尺寸创建相同的图像图标:mdpi
、hdpi
、xhdpi
、xxhpi
调用:ic_stat_one_signal_default
2.- 为尺寸 xxxhdpi
创建一个不同的图像图标,名为:ic_onesignal_large_icon_default
看起来像: Icon - Notification area/drawer
有关详细信息,请参阅 OneSignal 的官方文档。 https://documentation.onesignal.com/docs/customize-notification-icons