【问题标题】:Android: OneSignal how to change Notification bill icon with custom icon or app icon?Android:OneSignal 如何使用自定义图标或应用程序图标更改通知账单图标?
【发布时间】:2017-04-01 13:00:44
【问题描述】:

收到通知时,会显示账单图标,而不是应用程序图标或自定义图标,我会覆盖它以从代码中显示。我可以从仪表板更改图标,但我想从代码中处理它

初始化

    OneSignal.startInit(this)
            .inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)// to hide dialog
            .setNotificationOpenedHandler(new ExampleNotificationOpenedHandler())
            .init();

接收器类

  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");

}

【问题讨论】:

    标签: android push-notification onesignal


    【解决方案1】:

    您需要在您的drawables 目录中创建一个名为ic_stat_onesignal_default 的图标,而不是OneSignal 的默认铃铛图标。建议使用 Android Asset Studio 来创建正确的尺寸,并确保在您的设备上尝试之前看起来正确。

    请注意,应用图标不应再用作小通知图标,因为在 Android 5.0 Lollipop 中只会使用图标的 alpha。在这种情况下,大多数应用程序图标将只是一个白色的乡绅或圆圈。

    有关详细信息,请参阅下面的 OneSignal 文档页面。 https://documentation.onesignal.com/docs/customize-notification-icons

    【讨论】:

    【解决方案2】:

    您必须为以下尺寸创建图标:

    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

    注意size drawable-xxxhdpi的名称不同。

    我建议使用 Android Asset Studio 或从 Android Studio->app->Image Asset 创建图标,以确保具有不同 Android 版本的图标。 p>

    如果您想要两种图标类型,一种用于通知区域,一种用于通知抽屉,您必须执行以下操作:

    1.- 为不同尺寸创建相同的图像图标:mdpihdpixhdpixxhpi 调用: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

    【讨论】:

    • 目前需要ic_stat_onesignal_defaultic_onesignal_large_icon_default
    猜你喜欢
    • 2013-08-02
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 2012-05-29
    • 2015-12-25
    • 2015-10-25
    • 2017-08-06
    • 1970-01-01
    相关资源
    最近更新 更多