通知を受信すると、アプリアイコンやカスタムアイコンの代わりに請求書アイコンが表示され、コードから表示されるようにオーバーライドします。ダッシュボードからアイコンを変更することはできますが、コードから処理したい
統合
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");
}
OneSignalのデフォルトのベルアイコンの代わりに表示されるdrawables
ディレクトリにic_stat_onesignal_default
という名前のアイコンを作成する必要があります。 Android Asset Studio を使用して正しいサイズを作成し、デバイスで試す前に正しく表示されることを確認することをお勧めします。
Android 5.0 Lollipopのように、アプリアイコンを小さな通知アイコンとして使用しないでください。アイコンのアルファのみが使用されます。この場合、ほとんどのアプリアイコンは白い従者または円になります。 。
詳細については、以下の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からアイコンを作成して、アイコンを確実に作成することをお勧めします異なるAndroidバージョンの場合。
2つのアイコンタイプが必要な場合は、1つは通知領域用、もう1つは通知ドロワー用です。次の手順を実行する必要があります。
1.-異なるサイズの同じ画像アイコンを作成します:mdpi
、hdpi
、xhdpi
、xxhpi
呼び出されます:ic_stat_one_signal_default
2.-サイズxxxhdpi
の別の画像アイコンを作成します:ic_onesignal_large_icon_default
次のようになります: アイコン-通知領域/引き出し
詳細については、OneSignalの公式ドキュメントを参照してください。 https://documentation.onesignal.com/docs/customize-notification-icons