Notice
Recent Posts
Recent Comments
Link
투케이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();
}
}
반응형
'Android' 카테고리의 다른 글
Comments