DateP
구독 시스템 문제 해결 및 Restore Function 개발 진행 상황
Solo.dev
2025. 5. 4. 23:36
프로젝트 진행 상황 요약
겪었던 문제점
- 구독 갱신 시 DB 데이터 손실:
purchaseToken을 DB 키로 사용했을 때 갱신 시 토큰 값이 바뀌면서 기존 데이터와 연결이 끊어졌습니다. - 플랜 정보 파악의 어려움: 앱 내
getAvailable함수만으로는 정확한 오퍼 토큰 값이나 플랜 정보를 알기 어려웠습니다. - 앱 재설치 후 복구 불가: 사용자가 앱을 삭제했다 다시 설치했을 때 기존 구독 기록을 복구하는 기능이 없었습니다.
시도한 해결 방법
- 안정적인 사용자 식별자 사용: DB 키를
purchaseToken대신 Firebase Authentication 익명 사용자 ID (obfuscatedAccountIdAndroid등)로 변경하여, 앱 삭제 전까지는 변하지 않는 ID로 DB 데이터를 관리하도록 했습니다. 구독 갱신 시에는 해당 ID로 데이터를 찾고 필요에 따라 업데이트할 계획입니다. - DB에 플랜 정보 직접 저장: 구독 정보에
plan필드를 추가하여 DB에 직접 저장함으로써, 앱 내에서 항상 정확한 플랜 정보를 알 수 있도록 했습니다. - 구매 복구(Restore) 로직 구현: 앱 재설치 사용자를 위해 기존 구매 기록을 찾아 새로운 사용자 ID에 연결해주는
restorePurchaseFirebase Function 개발을 진행했습니다.
남은 과제
- Firebase Function TypeScript 에러 해결: 개발 중인
restorePurchase함수에서Module '"firebase-functions/v1/https"' has no exported member 'CallableRequest'.에러가 발생하여 테스트가 중단되었습니다. 내일 이 문제를 해결해야 합니다.