투케이2K

416. (android/java) [android 12 / target 31] FCM 파이어베이스 푸시 알림 노티피케이션 클릭 PendingIntent 펜딩 인텐트 설정 본문

Android

416. (android/java) [android 12 / target 31] FCM 파이어베이스 푸시 알림 노티피케이션 클릭 PendingIntent 펜딩 인텐트 설정

투케이2K 2022. 11. 29. 09:32

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[소스 코드]

        // -----------------------------------------
        // [노티피케이션 알림 클릭 시 인텐트 설정 정의]
        Intent intent = null;
        PendingIntent pendingIntent = null;
        try {
            // -----------------------------------------
            // [메인 실행 중인 경우 >> 백그라운드에서 포그라운드 전환] / [메인 실행 중이 아닌 경우 >> 인트로 화면 설정]
            String checkMain = String.valueOf(topName);
            if (checkMain != null && checkMain.length()>0 && !checkMain.equals("") && !checkMain.contains("null")) { // 메인 화면 >> 실행 중인 경우
                intent = new Intent(getApplication(), P_PushAlert.class);
                intent.putExtra("id", String.valueOf(notiId));
                //intent = new Intent(getApplication(), A_Intro.class);
            }
            // -----------------------------------------
            else { // 메인 화면 >> 실행 중이 아닌 경우
                intent = new Intent(getApplication(), A_Intro.class);
            }
            topName = "";
            // -----------------------------------------
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            intent.addFlags (Intent.FLAG_ACTIVITY_NO_ANIMATION);
            intent.putExtra("tittle", S_FinalData.PUSH_TITLE);
            intent.putExtra("message", String.valueOf(messagae));
            intent.putExtra("totalPush", String.valueOf(totalData)); // [전달 받은 전체 포맷 타입]
            // -----------------------------------------
            // TODO [안드로이드 타겟 31 이상 분기 처리]
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S){ // [타겟 31 이상]
                pendingIntent = PendingIntent.getActivity(getApplication(), 1, intent,PendingIntent.FLAG_IMMUTABLE);
            }
            else { // [타겟 31 미만]
                pendingIntent = PendingIntent.getActivity(getApplication(), 1, intent,PendingIntent.FLAG_CANCEL_CURRENT);
            }
            // -----------------------------------------
        }
        catch (Exception e){
            e.printStackTrace();
        }
        // -----------------------------------------

 

반응형
Comments