안드로이드 푸시 & 스킴처리 & 앱 내부 알림 목록에서 이동 시
화면이동 처리에 관해.
원하는 동작 :
푸시 노티 클릭 시 메인화면 -> 원하는 화면 띄워주려고 함.
앱 내부 알림 클릭 시 메인화면 -> 원하는 화면 띄워주려고 함.
(보던 화면은 다 날아감)
1. 푸시(FCM)에서 Intent를 이용해 매니페스트에 parentActivityName가 지정되어있으면 notification 클릭 시 해당
'parentActivityName'가 부모가 되고 호출한 Intent가 뜬다.
나의 소스를 보니 아래 소스처럼 PendingIntent를 만들고 있었다.
addNextIntentWithParentStack 이 부분이 푸시 클릭 시 parentActivityName를 앞에 깔고 호출된다.(다른 화면 다 종료됨.)
PendingIntent pendingIntent =
TaskStackBuilder.create(MyApp.get())
// add all of DetailsActivity's parents to the stack,
// followed by DetailsActivity itself
.addNextIntentWithParentStack(notiIntent)
.getPendingIntent(notiId, PendingIntentKt.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT);
예)
android:parentActivityName=". MainActivity"로 선언 시 푸시 왔을 때 notification을 클릭하면
MainActivity -> 푸시에 설정된 화면으로 뜬다.나는 MainActivity가 SingleTask로 되어있어서 다른 화면들이 다 날아감.
2. 앱 스킴처리
SchemeActivity로 스킴처리하는 액티비티로 가게 함.
매니페스트에 intent-filter로 걸어둠.
<intent-filter>
<data android:scheme="@string/app_scheme" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
parentActivityName와는 관계없음!
3. 앱 내부 알림 목록에서 이동시
intent = Intent(Intent.ACTION_VIEW)
액션 뷰로 인텐트 시켜서 호출하면 스킴처리가 된다.
나는 SchemeActivity에는 원하는 화면을 정의해두지 않고, (정의하지 않으면 메인으로 이동시킴)
메인에서 스킴 처리함.(원하는 화면으로 이동)
3번은 처리하기 나름입니다!
1번이 푸시 노티 클릭 시 parentActivityName를 활용해서 parentActivity 되는 부분이네요
'안드로이드' 카테고리의 다른 글
Android 갤러리 contentResolver DATE_TAKEN 문제 (0) | 2023.05.10 |
---|---|
안드로이드 에뮬레이터 먹통이 되었을 때 (0) | 2023.04.25 |
웹뷰 shouldOverrideUrlLoading 호출되지 않을 때. (0) | 2023.04.04 |
[Android] 통화관련 블루투스 Audio (Audio Control) (0) | 2023.01.06 |
Google Cloud Speech (STT) 설정 (0) | 2022.11.24 |