DateP

구독 시스템 문제 해결 및 Restore Function 개발 진행 상황

Solo.dev 2025. 5. 4. 23:36
구독 시스템 문제 해결 및 Restore Function 개발 진행 상황

프로젝트 진행 상황 요약

겪었던 문제점

  • 구독 갱신 시 DB 데이터 손실: purchaseToken을 DB 키로 사용했을 때 갱신 시 토큰 값이 바뀌면서 기존 데이터와 연결이 끊어졌습니다.
  • 플랜 정보 파악의 어려움: 앱 내 getAvailable 함수만으로는 정확한 오퍼 토큰 값이나 플랜 정보를 알기 어려웠습니다.
  • 앱 재설치 후 복구 불가: 사용자가 앱을 삭제했다 다시 설치했을 때 기존 구독 기록을 복구하는 기능이 없었습니다.

시도한 해결 방법

  • 안정적인 사용자 식별자 사용: DB 키를 purchaseToken 대신 Firebase Authentication 익명 사용자 ID (obfuscatedAccountIdAndroid 등)로 변경하여, 앱 삭제 전까지는 변하지 않는 ID로 DB 데이터를 관리하도록 했습니다. 구독 갱신 시에는 해당 ID로 데이터를 찾고 필요에 따라 업데이트할 계획입니다.
  • DB에 플랜 정보 직접 저장: 구독 정보에 plan 필드를 추가하여 DB에 직접 저장함으로써, 앱 내에서 항상 정확한 플랜 정보를 알 수 있도록 했습니다.
  • 구매 복구(Restore) 로직 구현: 앱 재설치 사용자를 위해 기존 구매 기록을 찾아 새로운 사용자 ID에 연결해주는 restorePurchase Firebase Function 개발을 진행했습니다.

남은 과제

  • Firebase Function TypeScript 에러 해결: 개발 중인 restorePurchase 함수에서 Module '"firebase-functions/v1/https"' has no exported member 'CallableRequest'. 에러가 발생하여 테스트가 중단되었습니다. 내일 이 문제를 해결해야 합니다.