콘텐츠로 건너뛰기

Android 앱 아이콘 변경

알림 센터의 알림 수에 따라 애플리케이션 아이콘을 변경하려면 아래 단계를 따르세요.

  1. ‘mipmap’ 폴더에 새 아이콘을 프로젝트에 추가합니다.
새 아이콘 파일이 추가된 Android Studio의 mipmap 폴더 구조를 보여주는 스크린샷
  1. 새 Activity 클래스를 생성합니다.
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivityAlias extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
  1. 아이콘 변경 로직을 포함하는 클래스를 생성합니다.
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.PackageManager;
public class MyPushReceiver {
public static void changeAppIcon(Context context, int count) {
PackageManager pm = context.getPackageManager();
if (count > 0) {
pm.setComponentEnabledSetting(
new ComponentName(context, "com.example.app.MainActivityAlias"),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP
);
pm.setComponentEnabledSetting(
new ComponentName(context, "com.example.app.MainActivity"),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP
);
} else {
pm.setComponentEnabledSetting(
new ComponentName(context, "com.example.app.MainActivity"),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP
);
pm.setComponentEnabledSetting(
new ComponentName(context, "com.example.app.MainActivityAlias"),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP
);
}
}
}
  1. NotificationServiceExtension 클래스에서 푸시 알림 수신/삭제 추적을 구현합니다.
@Override
public boolean onMessageReceived(final PushMessage message) {
super.onMessageReceived(message);
if (!message.isSilent()) {
/**
* 이 예시에서는 임의의 알림 수가 간단히 표시됩니다.
* 알림 수를 계산하는 로직은 직접 구현해야 합니다.
*/
int notificationCount = 1;
if (getApplicationContext() != null) {
MyPushReceiver.changeAppIcon(getApplicationContext(), notificationCount);
}
}
}
/**
* 알림 센터에서 푸시 알림 제거를 추적하기 위한 Pushwoosh 콜백입니다.
*/
@Override
protected void onMessageCanceled(PushMessage message) {
super.onMessageCanceled(message);
if (!message.isSilent()) {
/**
* 이 예시에서는 임의의 알림 수가 간단히 표시됩니다.
* 알림 수를 계산하는 로직은 직접 구현해야 합니다.
*/
int notificationCount = 0;
if (getApplicationContext() != null) {
MyPushReceiver.changeAppIcon(getApplicationContext(), notificationCount);
}
}
}
  1. 완료!

기기에서 어떻게 보이는지 예시

Anchor link to