728x90
반응형
푸시알림을 클릭 했을 때 원하는 url또는 화면으로 이동하는 기능은 다른 앱을 사용 하시면서 많이 보셨을겁니다.
우선 푸시알림 사용 방법은
https://onedaycodeing.tistory.com/78
해당 게시글을 참조해주시고 해당 게시글은 FCM하시는 분들에게 유용합니다!!
보통 푸시 클릭시 앱 실행은
PendingIntent
해당 인텐트로 사용했는데요.
//푸시를 클릭했을때 이동//
Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("key",value);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 , intent, PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT);
//푸시를 클릭했을때 이동//
이런식으로 셋팅해주시면 putExtra에서 값을 넘겨주기때문에 메인에서 받아서 사용하시면 됩니다.
그리고 메니페스트에 singleInstance로 런처모드를 바꿔줍니다.
이렇게 하시면 앱이 실행중에 푸시알림을 터치해도 중복 실행을 막아줍니다.
android:launchMode="singleInstance"
String result = "";
try{
Intent psuhIntent = getIntent();
result = psuhIntent.getExtras().get("key").toString();
}
catch (Exception e){
result = "";
}
이렇게 메인에서 받으시면 값이 없을때는 catch를 타서 값을 공백으로 넣어줘서 널에러를 방지합니다.
이제 해당 try catch는 앱이 실행되지 않은 상태에서 동작하는 코드입니다.
@Override
protected void onNewIntent(Intent intent) {
try {
String url = URLDecoder.decode(intent.getExtras().getString("pushUrl"),"UTF-8");
if(url.length() > 5){
mWebView.loadUrl(url);
}
}
catch (Exception e) { }
super.onNewIntent(intent);
}
이렇게 onNewIntent를 오버라이드 해주시면 앱 동작중에 푸시를 클릭 했을 시 바로 호출됩니다.
그리고 원하는 부분으로 바로 이동 구현이 가능합니다.
여기서 중요한 포인트는
안드로이드 12 대응을 하기위해
PendingIntent.FLAG_MUTABLE
해당 플래그를 사용했는데요 이렇게만 사용하시면
메인에서 값을 추출할때 계속 같은값만 추출됩니다(처음에 추출한 값)
그래서
PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT
이렇게 같이 써주면 값도 신규로 업데이트되고 안드로이드12 타겟팅도 무사히 가능합니다.
ㄱ ㅏ ㄱ 푸시
ㅗ o ㅗ 푸시 :D
728x90
반응형
'Android' 카테고리의 다른 글
안드로이드 코틀린(Kotlin) 멀티파트(Multipart)를 이용하여 웹으로 사진 전송 (0) | 2022.01.17 |
---|---|
Android Kotiln(코틀린) 네이버 아이디 로그인하기 ( 안드로이드 12 이슈 대응 포함) (0) | 2022.01.03 |
안드로이드 12 PendingIntent 이슈 및 대응 (0) | 2021.12.06 |
안드로이드 12 타겟팅 시 필수 메니페스트 설정 (0) | 2021.12.06 |
<Kotlin 코틀린> 커스텀 다이얼로그 생성하기(아이폰 처럼 꾸며봤어요!) (0) | 2021.11.18 |
댓글