# Android 앱 아이콘 변경

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

1.  'mipmap' 폴더에 새 아이콘을 프로젝트에 추가합니다.

<img src="/android-notification-customisation-change-android-app-icon-1.webp" alt="새 아이콘 파일이 추가된 Android Studio의 mipmap 폴더 구조를 보여주는 스크린샷"/>

2. 새 Activity 클래스를 생성합니다.

```java
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);

    }
}
```

3. **아이콘 변경 로직을 포함하는 클래스를 생성합니다.**

```java
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
            );
        }
    }
}
```

4. **`NotificationServiceExtension` 클래스에서 푸시 알림 수신/삭제 추적을 구현합니다.**

```java
@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);
		}
	}
}
```

5. **완료!**

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

<video src="/android-notification-customisation-change-android-app-icon-2.webm" title="알림을 받거나 제거할 때 앱 아이콘이 동적으로 변경되는 것을 보여주는 애니메이션 데모" autoplay loop muted playsinline />