DateP
구독 시스템 수정 방안
Solo.dev
2025. 4. 10. 00:41
현재 상황
요구사항
- 사용자:
purchaseToken으로 구분 (로그인 없음) - 데이터:
plan과limit만 관리 - DB 형식 (Firebase Realtime DB):
{ "purchases": { "": { "plan": "basic", "limit": 50 } } }
문제점
- 구독 취소 후 재진입: 실시간성 부족 (
checkSubscriptionStatus캐시 지연) - 앱 재설치:
payload없어plan복구 불가 - 동기화 문제:
payload지원 중단으로 만료/취소 감지 어려움 AsyncStorage:plan있으면 체크 안 해 취소 미반영
시도한 해결책
getSubscriptions+getAvailablePurchases로 동기화 (실시간성 부족)- DB 연결 제안 (미구현)
startPurchase에서finishTransaction으로payload이동 (미확인)AsyncStorage항상 체크로 변경 (DB 필요)
버전 10 테스트 예상
plan→free: Olimit반영: Opayload반영: X- 재설치 복구: X
동기화 방법
방법 1: Firebase Functions
- 방법: Functions로 Google Play API 호출, DB 동기화
- 장점: 실시간성, 보안
- 단점: 설정 복잡
방법 2: getAvailablePurchases + DB
- 방법: 클라이언트에서
getAvailablePurchases로 확인, DB 업데이트 - 장점: 간단함
- 단점: 실시간성 제한
해결 방안
- 구독 시작:
purchaseToken,plan,limit을 DB에 저장 - 앱 시작: 동기화 후 DB에서 조회
- 사용: DB에서
limit감소 - 해결:
- 재설치: DB로 복구
- 만료/취소: 방법 1 (완벽), 방법 2 (부분적)
결론
- 현재:
payload없음, 동기화 부족 - 해결: Realtime DB 필요
- 방법 1: 실시간성 우선
- 방법 2: 단순성 우선
- 다음 단계: DB 연결 후 테스트