web-dev-qa-db-ja.com

Android:OneSignal通知請求アイコンをカスタムアイコンまたはアプリアイコンに変更する方法は?

通知を受信すると、アプリアイコンやカスタムアイコンの代わりに請求書アイコンが表示され、コードから表示されるようにオーバーライドします。ダッシュボードからアイコンを変更することはできますが、コードから処理したい

統合

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

}

5
Mina Farid

OneSignalのデフォルトのベルアイコンの代わりに表示されるdrawablesディレクトリにic_stat_onesignal_defaultという名前のアイコンを作成する必要があります。 Android Asset Studio を使用して正しいサイズを作成し、デバイスで試す前に正しく表示されることを確認することをお勧めします。

Android 5.0 Lollipopのように、アプリアイコンを小さな通知アイコンとして使用しないでください。アイコンのアルファのみが使用されます。この場合、ほとんどのアプリアイコンは白い従者または円になります。 。

詳細については、以下のOneSignalのドキュメントページを参照してください。 https://documentation.onesignal.com/docs/customize-notification-icons

16
jkasten

次のサイズのアイコンを作成する必要があります:

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からアイコンを作成して、アイコンを確実に作成することをお勧めします異なるAndroidバージョンの場合。

2つのアイコンタイプが必要な場合は、1つは通知領域用、もう1つは通知ドロワー用です。次の手順を実行する必要があります。

1.-異なるサイズの同じ画像アイコンを作成します:mdpihdpixhdpixxhpi呼び出されます:ic_stat_one_signal_default

2.-サイズxxxhdpiの別の画像アイコンを作成します:ic_onesignal_large_icon_default

次のようになります: アイコン-通知領域/引き出し

詳細については、OneSignalの公式ドキュメントを参照してください。 https://documentation.onesignal.com/docs/customize-notification-icons

7
gquilarque