PIP 상태에서 카카오로그인시 calback 호출이 안됨

앱ID: 130989
complieSdk 34
minSdk 21
targetSdkVersion 34
JavaVersion Version 11

카카오 SDK 버전
implementation “com.kakao.sdk:v2-all:2.12.0”

PIP상태에서 카카오 로그인시 loginWithKakaoTalk 통해 토큰이 카카오로그인 버튼을 두번 눌러야 callback 되는 현상으로 문의드립니다.

  1. 앱실행
  2. MainActivity : 앱 메인화면
  3. WebActivity : 동영상재생화면 이동 링크 실행
  4. MLViewPagerActivty : 동영상재생 화면, 동영상 화면에서 백키눌러 화면 이탈시, PIP 제공
  5. WebActivty : 로그인 화면 이동
  6. WebActivity : 카카오로그인 선택
  7. UserApiClient.getInstance().loginWithKakaoTalk 호출후 토큰 callback대기 상태에서 값이 안넘어옴
    1. UserApiClient.getInstance().loginWithKakaoTalk
    2. AuthCodeClient.instance.authorizeWithKakaoTalk 토큰
  8. TalkAuthCodeActivity > Callback 없음. 한번더 카카오로그인을 누르거나 다시 동영상화면 진입후 calback이 수신됨

일반적인 WebActivity에 로그인페이지에서 카카오로그인을 하면 한번에 정상로그인이 되지만,
동영상 PIP가 있는 상태에서는 callback이 한번에 안넘오는 현상이 있습니다.
PIP 상태에서도 카카오로그인을 정상적으로 사용하기 위한 가이드를 제공받아 볼수있을까요?

안녕하세요.

어떤 상황인지 유추할 수 있도록 재현 영상 첨부해주시겠어요?

@tim.l 안녕하세요, 메시지 통해서 영상 첨부드렸습니다. 추가 내용 필요하시면 공유드리겠습니다.

1개의 좋아요

@cdefwww 안녕하세요.

공유 주신 내용을 바탕으로 해당 사항을 재현해보았습니다.

액티비티를 PIP 모드로 변경할 시, 액티비티는 기존의 task와 분리되어 별도의 task를 갖게 됩니다. (참고)
카카오 로그인 시도 시 singleTask인 로그인 액티비티를 호출하는데, 액티비티가 실행되면서 pip 액티비티의 task에 속하게 됩니다. 이에 따라, 로그인이 pip 액티비티가 속한 task 내에서 실행되게 되어 실제 로그인을 실행시킨 액티비티에서 결과를 못 받는 현상이 발생합니다.

로그인이 pip에서 실행되는 것을 방지하기 위해서는 pip 액티비티에 별도의 taskAffinity를 제공하여 해결 가능합니다.

<activity android:name=".MLViewPagerActivity"
              ...(중략)...
              android:taskAffinity=".MLViewPagerActivity" />

cc. @tim.l @tony.mb

3개의 좋아요

안녕하세요!
가이드 주신 taskAffinity로 PIP동작 task를 분리하니 정상동작 확인됩니다.
관련속성 추가후 내부 로직상 side effect이 없는지 검증하겠습니다.

도움주셔서 감사합니다 :pray:

2개의 좋아요