구글 플레이 콘솔에 '결제 프로필' 관련 경고가 있었다.

해결 하기 위해 구글측에 문의도 수차례 보내고 해볼 수 있는 건 거의 다 해봤다.

들은 바에 따르면, 문제의 원인은 결제프로필 생성시에 통화를 USD로 설정 한 부분 때문이라고 한다. 그와 관련해서 구글 측 내부 시스템 간에 꼬이는 부분이 있어서 해결할 방법이 없다고 한다.(아직도 문제의 정확한 원인은 모른다. ㅡㅡ;)

누가 결제프로필을 생성했는지, 왜 USD로 설정이 되었는지 등에 대해서는 알 수 있는 방법이 없었다.

개발자 계정과 결제 프로필 생성한 시기가 워낙에 오래 되기도 했고 관리에 대한 정책이나 절차도 없었던 상황이라 그때 그때 상황에 맞게 담당자가 생성하고 설정했을 것이다.

결국 이 문제 해결을 위해 거의 2달을 소비하고 나서야 "앱 이전"을 단행했다.(앱 이전을 더 빨리 결정하고 진행했다면 좋았을거라는 아쉬움도 남는다.)

개발자 계정을 새로 만들고

"앱 이전"을 위해 구글 측의 가이드 대로 준비하고

앱 이전 신청 후 승인 까지 기다렸다가

승인 후에 GCP와 Firebase 이전까지 수행했다.

그리고 중요한 한가지는, 만약 인앱결제 서비스를 하고 있는 앱이라면 앱 이전 후에 앱을 꼭 새로운 버전으로 업데이트 등록 해야 한다.

업데이트 등록하지 않아서 앱이 스토어에서 사라지는 미친 상황을 당할 수 있다.

 

 

구독 정기결제를 구현하는 도중에 라이브러리가 업그레이드 되었다.

즉, 이전에 버전이 4.x.y 에서 5.x.y 가 되었다.

implementation "com.android.billingclient:billing:5.0.0"

이로 인해, deprecated 된 메서드가 많다.

https://developer.android.com/google/play/billing/migrate-gpblv5

 

Google Play 결제 라이브러리 4에서 5로의 이전 가이드  |  Google Play 결제 시스템  |  Android Developers

Google Play 결제 라이브러리 4에서 5로의 이전 가이드 이 주제에서는 Google Play 결제 라이브러리 4에서 Google Play 결제 라이브러리 5로 이전하는 방법과 새로운 정기 결제 기능을 사용하는 방법을 설

developer.android.com

겸사 겸사 현재 개발중인 인앱결제 부분을 마이그레이션 하기로 했다.

기 개발된 코드를 변경하는게 쉽지는 않지만, codeLab과 깃허브에 샘플 코드가 잘 작성되어 있으니 참고해서 개발한다면 큰 무리 없이 개발할 수 있을 것으로 예상된다.

 

코드랩

https://codelabs.developers.google.com/play-billing-codelab?hl=ko#0 

 

Play 결제 라이브러리 5를 사용하여 앱에서 정기 결제 항목 판매  |  Google Codelabs

이 Codelab에서는 기본 요금제 및 탄력 요금제를 비롯하여 자동 갱신되는 정기 결제와 선불 요금제를 구현하는 방법을 알아봅니다.

codelabs.developers.google.com

 

구글 인앱결제 샘플코드

https://github.com/android/play-billing-samples/tree/main/PlayBillingCodelab

 

GitHub - android/play-billing-samples: Samples for Google Play In-app Billing

Samples for Google Play In-app Billing. Contribute to android/play-billing-samples development by creating an account on GitHub.

github.com

 

안드로이드와 iOS에서 설치 및 실행 추적을 위해 다이나믹링크를 사용하기로 결정했다.

특히, 구글의 utm 데이터를 사용해야 하는 요구사항이 있었다.

 

1.  Firebase에서 다이나믹링크 생성하기

  1. Firebase > 참여 > Dynamic Links 페이지로 이동한다.
  2. "새 동적링크" 버튼을 클릭한다.
  3. 동적링크 만들기 페이지로 이동한다.
  4. 필요한 내용들을 차례대로 입력한다.
  5. 입력 항목 중에서 "캠페인 추적, 소셜 태그, 고급 옵션(선택사항)"이 UTM 관련 데이터이다.(아래 그림 참고)

다이나믹 링크 생성

2. 삼성 브라우저에서 다이나믹 링크 클릭시 문제

다이나믹 링크를 클릭하여 앱이 실행되면 utm 값들을 확인할 수 있다. Firebase.dynamicLinks의 PendingDynamicLinkData 객체를 이용하면 된다.

하지만, 삼성브라우저에서 링크를 클릭해서 앱을 실행한 경우에는 utm 데이터가 제대로 수신 되지 않는다.

삼성브라우저 차원에서 다이나믹링크 정보를 전송할때 암호화를 하는지, 아니면 다른 처리를 하는지 정확한 이유는 알 수 없지만, 크롬브라우저를 통해서 전송된 데이터와는 다르게 표현되었다.

 

* 참고로 삼성브라우저의 "설정>유용한 기능"에 들어가면 '다른 앱에서 링크 열기' 항목이 있다. 기본은 비활성 상태인데, 이걸 활성 상태로 변경하면 데이터가 정상적으로 수신된다.

삼성브라우저 설정>유용한 기능

 

3. 해결

해결이라기 보다는 임시방편이 맞겠다.

다이나믹 링크 생성시에 2번 항목에서 입력하는 딥링크 URL에 utm 파라미터를 동일하게 넣어줬다.

 

4. 회고

웹과의 연동을 할때는 각 브라우저마다 테스트가 필요하다.

 

안드로이드 앱에서 구독상품 결제를 구현하면서 결제 상태 변경 시 '실시간 개발자 알림' 구현을 위해 작성하는 가이드이다.

 

Google Play Developer API는 Android에서 Google Play 결제 라이브러리를 보완하는 서버 간 API입니다.
이 API는 구매를 안전하게 인증하고 사용자에게 환불을 처리해 주는 등 Google Play 결제 라이브러리에서는 사용할 수 없는 기능을 제공합니다.

 

먼저, Google Play Developer API 프로젝트를 생성하고 연결한다. (가이드 참고)

  • 소유자 계정으로 Google Play Console에 로그인 한다.
  • 설정 > API 액세스 로 이동한다.

 

실시간 개발자 알림 구성

실시간 개발자 알림(RTDN)은 앱 내에서 사용자의 자격이 변경될 때마다 Google의 알림을 수신하는 메커니즘입니다. RTDN은 
Google Cloud Pub/Sub를 활용합니다. 이를 통해 설정된 URL로 푸시되거나 클라이언트 라이브러리를 사용하여 폴링되는 데이터를 수신할 수 있습니다. 이러한 알림을 사용하면 Google Play Developer API를 폴링할 필요 없이 정기 결제 상태 변경에 즉시 대응할 수 있습니다. Google Play Developer API를 비효율적으로 사용하면 API 할당량 제한이 초래될 수 있습니다.

 

아래에서 GCP의 Pub/Sub을 구성하고 Google Play Console의 앱과 연결하는 방법을 알아본다.

1. Cloud Pub/Sub 설정

GCP의 Pub/Sub 서비스를 생성한다. (Pub/Sub 아키텍처를 모른다면 참고)

계정과 프로젝트는 어떤 것에 해도 상관은 없지만, 가급적이면 Google Play Console의 API 액세스에 연결된 프로젝트에 구성하는게 좋겠다.

https://console.cloud.google.com/cloudpubsub

 

  1. 주제(Topic)를 만든다.
    https://cloud.google.com/pubsub/docs/publish-receive-messages-console?hl=ko#create_a_topic
  2. 주제에 게시 권한을 부여한다.(참고)
    Cloud Pub/Sub를 사용하려면 주제에 알림을 게시하는 권한을 Google Play에 부여해야 한다.
  3. 구독을 생성 및 추가한다.

주제 만들기와 구독 추가, 그리고 실행해 보는 방법 참고 https://cloud.google.com/pubsub/docs/publish-receive-messages-console?hl=ko#create_a_topic

 

2. 앱에 실시간 개발자 알림 사용 설정

    1. Google Play Console을 엽니다.
    2. 앱을 선택합니다.
    3. 수익 창출 > 수익 창출 설정으로 이동합니다.
    4. 페이지 상단의 실시간 개발자 알림 섹션으로 스크롤합니다.

  1. 주제 이름 입력란에 이전에 구성한 전체 Cloud Pub/Sub 주제 이름을 입력합니다. 주제 이름의 형식은 projects/{project_id}/topics/{topic_name}이어야 합니다. 여기에서 project_id는 프로젝트의 고유 식별자이고 topic_name은 이전에 만든 주제의 이름입니다.
  2. 테스트 알림 보내기를 클릭하여 테스트 메시지를 보냅니다. 테스트 게시를 실행하면 모두 제대로 설정되고 구성되었는지 확인할 수 있습니다. 테스트 게시에 성공하면 테스트 게시에 성공했다는 메시지가 표시됩니다. 이 주제의 정기 결제에 연결했다면 테스트 메시지를 받아야 합니다.게시에 실패하면 오류가 표시됩니다. 주제 이름이 올바르고 google-play-developer-notifications@system.gserviceaccount.com 서비스 계정이 주제에 대한 Pub/Sub 게시자 액세스 권한을 보유하고 있는지 확인하세요.
  3. 풀 정기 결제의 경우 Cloud Console에서 정기 결제로 이동하고 메시지 보기를 클릭한 다음 메시지 가져오기를 진행합니다. Cloud Pub/Sub의 반복 전송을 방지하기 위해 가져온 모든 메시지를 확인해야 합니다. 푸시 정기 결제의 경우 테스트 메시지가 푸시 엔드포인트로 전달되었는지 확인합니다. 성공하는 경우 응답 코드가 메시지 확인 역할을 합니다.
  4. 변경사항 저장을 클릭합니다.

 

다음 단계

 

 

[참고] https://developer.android.google.cn/google/play/billing/getting-ready?hl=ko#dev-api

 

준비하기  |  Google Play 결제 시스템  |  Android Developers

참고: 이 주제를 읽기 전에 먼저 Play Console 고객센터 문서를 읽어야 합니다. 문서에서는 중요한 구매 관련 개념과 더불어 판매용 제품을 만들고 구성하는 방법을 설명합니다. 이 주제에서는 앱에

developer.android.google.cn

 

2022년 4월 24일
예정에 없던 북한산 백운봉 등산.
백운봉은 아직 무리라는 생각에 갈 생각이 전혀 없었고 지난번 코스와 다른 코스로 문수봉에나 다녀와야지 하고 갔다가 백운봉으로 급 변경.

10시도 아직 안됐는데 북한산성 입구부터 사람들이 매우 많다. 주차장은 거의 만차인듯 싶다.
요즘 날씨가 좋아서 그런지 어딜 가든 사람이 많다.

쭉~ 직진해서 간다. 옆으로 빠지면 어려운 코스 진입이라고 어느 블로그에서 봤다.

대서문을 지나고

더 가다 보면 보리사가 나온다.
북한산엔 절이 여러 곳에 있다.
오르다 보면, 이렇게 높은곳에까지 있다고? 할 정도로 높은 곳에 있는 절도 있다.

여기가 진짜 등산로 입구다.

400미터 남았다.
산은.. 다 왔다 싶을때부터 진짜 시작인 경우가 많다. ㅠ.ㅜ

백운봉암문을 지나면 진짜 다 온줄 알았다.
성벽을 따라 조금만 가면 백운봉이 나올것 같다.

성벽을 따라 오른다.

옆 봉우리가 정말 멋있다.

거의 정상에서 본 아까 그 옆 봉우리.
사람들도 엄청 많다.

여기가 정상이다.
저 태극기와 사진을 함께 찍으려면 줄 서야 한다. ㅡㅡ;
그래서 난 태극기만 찍는걸로.

경치가 정말 예술이다.
이래서 북한산~ 북한산 하나보다.

모든 바위에 많은 사람들.
바위는 왜 이렇게 멋진거야!

내려오면서 올라가는 사람들을 찍었다.
내려와서 보니 엄청 높다.

산에서만 7km 이상 걸었다니..
뿌듯하고 힘들다.

'ahikuya' 카테고리의 다른 글

북한산 문수봉  (0) 2022.04.17
북악산  (0) 2022.04.04
관악산 등산  (0) 2022.03.19
연탄 봉사  (0) 2022.03.19

북한산 사모바위 코스로 다녀왔다.

구기분소를 지나간다. 저 곳엔 국립공원 레인저 분들이 계신다.

북한산에는 아직 벚꽃과 개나리, 그리고 철쭉이 만발하다.

한시간 넘게 걸려 대남문에 도착했다.
등산초보에게도 많이 어렵지 않은 코스인듯 하다.

대남문 위에서 바라본.. 저 봉우리는 어디일까?

드디어 오늘의 목적지인 문수봉에 도착!
전망이 끝내준다.

정상에 앉아서 출발 전에 사온 김밥을 먹고 후식으로는 믹스커피 한잔 ㅎㅎ

분명 이름이 있는 유명한 봉우리일텐데.. 내가 너무 모른다. 비봉이던가.. 족두리봉이던가.. 아래 사진이 족두리봉인가..


능선을 따라 내려 가서 불광역쪽으로 나가려고 했는데, 올라오는 등산객도 많고 생각보다 시간도 많이 지체되어서 구기터널쪽으로 선회하여 하산했다.

날씨도 좋고 기온도 적당해서 등산하기에 참 좋은 날이었다.

'ahikuya' 카테고리의 다른 글

북한산 백운봉  (0) 2022.04.24
북악산  (0) 2022.04.04
관악산 등산  (0) 2022.03.19
연탄 봉사  (0) 2022.03.19

북악산에 다녀왔다.

'ahikuya' 카테고리의 다른 글

북한산 백운봉  (0) 2022.04.24
북한산 문수봉  (0) 2022.04.17
관악산 등산  (0) 2022.03.19
연탄 봉사  (0) 2022.03.19

지금 읽고 있는 책.

 

http://www.yes24.com/Product/Goods/60530085

 

누구나 좋아하는 사람들의 비밀 - YES24

“나는 1만 명에게 공감 대화법”을 배웠다!『누구나 좋아하는 사람들의 비밀』“왜 나는 인복이 없을까?” “왜 나의 진심을 알아주지 않는 걸까?” “왜 내 사과가 통하지 않는 걸까?” “그

www.yes24.com

 

잘 듣고 공감하고 응원하자.

3월9일 관악산

산 정상부에는 바위로 이루어져 있는데 그 모습이 갓을 쓰고 있는 모습을 닮아 관악산(冠岳山)이라고 부르게 되었다. <출처 - 네이버
백과사전 https://m.terms.naver.com/entry.naver?docId=1064572&cid=40942&categoryId=33147>


아침 7시40분에 집을 나섰다.
서울대 건설환경종합연구소 앞에 있는 등산로 입구에서 등산을 시작했다.

관악산 등산로 입구

3월 초인데도 계곡이 얼어있다.

아직 얼어있는 계곡


계단 무엇!?
이만큼 올라왔는데.. 더 올라가야 한다.


정상인줄 알았던..


여기가 정상
관악산이라 쓰인 바위가 포토존이다.
아래쪽에는 사진 찍으려고 사람들 줄 서 있음


하산길에 연주암에 들렀다.


마지막 믹스커피 한잔~


오랜만에 하는 등산이라 그랬는지 하산길에 오금 통증이 발생했다.
평소에 스트레칭이나 간단한 운동을 해야 한다.

'ahikuya' 카테고리의 다른 글

북한산 백운봉  (0) 2022.04.24
북한산 문수봉  (0) 2022.04.17
북악산  (0) 2022.04.04
연탄 봉사  (0) 2022.03.19

사회공헌 위원회에서 연탄 봉사활동.
눈이 오는 악천후에도 불구하고 20여명에 가까운 기술사님들이 모여 연탄봉사 활동을 했다.

해장국으로 마무리.

http://www.itdaily.kr/news/articleView.html?idxno=207014

'ahikuya' 카테고리의 다른 글

북한산 백운봉  (0) 2022.04.24
북한산 문수봉  (0) 2022.04.17
북악산  (0) 2022.04.04
관악산 등산  (0) 2022.03.19

+ Recent posts