안드로이드

[Android] 푸시 원하는 화면이동 parentActivityName

코딩하는후운 2023. 4. 19. 09:25
반응형

안드로이드 푸시 & 스킴처리 & 앱 내부 알림 목록에서 이동 시
화면이동 처리에 관해.
원하는 동작 :
푸시 노티 클릭 시 메인화면 -> 원하는 화면 띄워주려고 함.
앱 내부 알림 클릭 시 메인화면 -> 원하는 화면 띄워주려고 함.
(보던 화면은 다 날아감)
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 되는 부분이네요

반응형