구독 관리 시스템: 2025-04-08 진행 상황과 향후 계획
오늘 해결 및 진행 사항
-
에러 해결
- 에러:
[AsyncStorage] The value for key "purchaseDate" is not a string.
→ 해결 완료 - 원인:
purchaseDate숫자 형식을 문자열로 변환 - 불필요한 시간 관련 코드 제거
- 에러:
-
Alert 메시지 국제화
Alert하드코딩 문자열 제거
→{translations[language].적절한 변수 이름}적용useLanguage()훅은tsx전용
→ts파일에서 매개변수로language전달
(export const restorePurchases = async (language: LanguageCode): Promise)
-
서버 영수증 검증
- 1차 로컬 검증:
getAvailablePurchases의transactionId와 DB 비교
→ 로직 완성 (심사 통과 가능성 검토 필요) - 만료 처리:
getAvailablePurchases에 구독 정보 없으면 만료/취소 판단
→ 불안정 가능성
→ 서버 기반 영수증 검증 API 개발 검토
- 1차 로컬 검증:
-
구독 후 사용량 제한
- Firebase Realtime DB 구조 설계:
{ "purchases": { "transaction123": { "receiptDate": "2025-04-08", "plan": "basic", "remainingUses": 10 } } }
- 로컬에서
remainingUses감소 로직 필요
- Firebase Realtime DB 구조 설계:
-
앱 최초 실행 시 구독 플랜 동기화
- 1단계:
AsyncStorage에서plan복구 - 2단계:
plan없으면loadSubscription실행
→checkSubscriptionStatus호출
→purchases에서developerPayloadAndroid확인
→selectedPlan설정 및 저장
→checkAndResetUsage실행 - 요약:
AsyncStorage확인 후 서버 동기화
- 1단계:
테스트 결과
- 앱 진입 시
basic플랜 즉시 설정 확인 free플랜에서 구독 복원 미작동checkSubscriptionStatus실행 후basic설정
→ 프리미엄 상태였으나developerPayloadAndroid비어있음
→ 캐시 문제 의심 (추가 확인 필요)- 프리미엄 구독 정상 진행
- 앱 삭제 후 재설치 시 캐시 영향 추정
→ 구독 미반영 상태에서basic설정 (테스트 필요)
향후 테스트 계획
- 프리미엄 구독 반영:
프리미엄 구독 후 플랜 변경 및 기능 해제 확인 - 재설치 및 복구:
앱 삭제 후 재설치
→ 구매 복원으로 플랜 복구 및 에러 점검 - 구매 복원 확인:
UI 버튼으로 복구 기능 테스트 - 플랜 유지:
앱 재시작 시AsyncStorage플랜 로드 확인
다음 단계
- 테스트 및 분석:
테스트 실행 후 결과 기록 - 서버 API 개발:
영수증 검증 API로 구독 상태 관리 - 사용량 로직:
remainingUses감소 구현 - UI 연동:
구독 및 사용량 UI 반영 - 에러 관리:
예외 처리로 안정성 강화
'DateP' 카테고리의 다른 글
| DateP Project: sanitizePath 추가로 DB 저장/조회 안정화 (0) | 2025.04.11 |
|---|---|
| 구독 시스템 수정 방안 (0) | 2025.04.10 |
| PurchaseScreen 및 RestorePurchases 해결 정리 (0) | 2025.04.08 |
| 구독 로직 테스트 및 개선 항목 (0) | 2025.04.06 |
| 구독 로직 테스트 정리 (0) | 2025.04.05 |