투케이2K

683. (Android/Java) Build.gradle target SDK 33 미만 Notification Permission 알림 권한 부여 팝업창 호출 본문

Android

683. (Android/Java) Build.gradle target SDK 33 미만 Notification Permission 알림 권한 부여 팝업창 호출

투케이2K 2023. 11. 9. 20:22

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[소스 코드]

 

    // -----------------------------------------------------------------------------------------
    // TODO [SEARCH FAST] : [target SDK 33 미만] : [안드로이드 13 이상] : [알림 권한 부여 팝업창 호출]
    // -----------------------------------------------------------------------------------------
    public static void showTargetMinNotificationPermisseion(Context mContext){

        /**
         * -------------------------------------------
         * [호출 방법] :
         *
         * C_Permission.showTargetMinNotificationPermisseion(A_Intro.this);
         * -------------------------------------------
         * TODO [Build.gradle] target SDK 33 미만 : [안드로이드 13 이상] : [노티피케이션 채널 생성 >> 자동 알림 권한 창 호출]
         * -------------------------------------------
         * TODO [Build.gradle] target SDK 33 이상 : [안드로이드 13 이상] : [필요 퍼미션 설정] : POST_NOTIFICATIONS 권한 동의
         * -------------------------------------------
         * <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
         * <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
         * -------------------------------------------
         * TODO [참고] :
         *
         * 1. build.gradle 타겟 버전 설정이 33 미만 인 경우는 노티피케이션 채널 생성 시점에 안드로이드 13 기기에서 자동 권한 동의 팝업창 알림 표시
         *   >> 안드로이드 13 기기 이상 부터는 앱 설치 시 [알림 권한] 이 기본 [Off] 상태 이다
         * 2. 안드로이드 13 기기 미만은 자동으로 앱 설치 시 [알림 권한] 이 기본 [On] 상태로 되어 있다
         * -------------------------------------------
         * */


        // [Context 지정]
        context = mContext;


        // [로직 처리 수행 실시]
        try {
            // ===============================================================
            S_Log._D_("알림 권한 요청 수행", null);
            // ===============================================================

            // TODO [Build VERSION 사용해 OS 정보 확인 실시]
            String deviceOs = String.valueOf(Build.VERSION.RELEASE);

            if (deviceOs != null && deviceOs.equals("") == false && deviceOs.equals("null") == false){

                double os = Double.valueOf(deviceOs);

                if (os >= 13){
                    S_Log._W_("알림 권한 : 안드로이드 OS 13 이상 >> 노티피케이션 채널 생성 : 알림 권한 창 호출", null);

                    // ----------------------------------------------------
                    // [참고 변수]
                    // ----------------------------------------------------
                    //public static final String HC_PUSH_DEFAULT_CHANNEL = "HC_PUSH_DEFAULT_CHANNEL"; // [푸시 기본 채널 명칭]
                    //public static final String HC_PUSH_GROUP_CHANNEL = "HC_PUSH_GROUP_CHANNEL"; // [푸시 그룹 채널 명칭]


                    // ----------------------------------------------------
                    // [노티피케이션 채널 생성]
                    // ----------------------------------------------------
                    int importance = NotificationManager.IMPORTANCE_HIGH; // [알림 중요도]
                    int prior = NotificationCompat.PRIORITY_HIGH; // [알림 중요도]

                    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){ // TODO [오레오 이상]

                        NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); // [노티피케이션 알림 서비스 객체 생성]
                        NotificationChannel notificationChannel = new NotificationChannel(S_FinalData.HC_PUSH_DEFAULT_CHANNEL, S_FinalData.HC_PUSH_GROUP_CHANNEL, importance); // [알림 채널 설정]
                        //notificationChannel.setVibrationPattern(new long[]{ 0 }); // [알림 진동 발생안함 설정 > 동적으로 진동 메소드 발생 시킴]
                        //notificationChannel.setVibrationPattern(new long[]{0, 300, 250, 300, 250, 300});
                        notificationChannel.enableVibration(true); // [노티피케이션 진동 설정]
                        notificationChannel.setShowBadge(true); // 뱃지 카운트 실시 (디폴트 true)
                        if (notificationManager.getNotificationChannel(S_FinalData.HC_PUSH_DEFAULT_CHANNEL) != null){ // [이미 만들어진 채널이 존재할 경우]
                        }
                        else {
                            notificationManager.createNotificationChannel(notificationChannel); // [알림 채널 생성 실시]
                        }
                        notificationManager.createNotificationChannel(notificationChannel);

                    }

                }
                else {
                    S_Log._E_("알림 권한 : 안드로이드 OS 13 미만 >> 자동 알림 권한 부여", null);
                }
            }
            else {
                S_Log._E_("알림 권한 : 디바이스 OS 버전 확인 불가", null);
            }

        }
        catch (Exception e){
            e.printStackTrace();
        }
    }

 

반응형
Comments