DateP
DateP 프로젝트: 구독 에러 수정 및 검증 테스트
Solo.dev
2025. 4. 13. 22:50
DateP 프로젝트: 구독 에러 수정 및 검증 테스트
1. "Purchase is not suitable to be purchased" 에러 해결
- 문제: 코드 A에서 Purchase is not suitable to be purchased 에러 발생, 코드 B에서 에러 해결.
- 코드 차이점 요약:
- finishTransaction 처리:
- 코드 A: isAcknowledgedAndroid 확인 후 호출, try-catch로 에러 처리 → 안정성↑, 그러나 에러 발생.
- 코드 B: 조건 없이 호출, 상위 catch로 에러 처리 → 간결함↑, 에러 해결.
- 디버깅 로그:
- 코드 A: updatedPurchases productIds, isSubscribed 등 추가 로그 → 디버깅 편리.
- 코드 B: 로그 축소 (필요한 것만 출력) → 간결.
- 에러 메시지:
- 코드 A: "Purchase is not suitable to be purchased" 기본 메시지 → 에러 발생 원인 불명확.
- 코드 B: "Check product status..."로 구체화 → 사용자 경험 약간 개선, 에러 해결.
- 코드 구조:
- 코드 A: 주석 많음 → 가독성↑, 유지보수 편리.
- 코드 B: 주석 없음 → 간결함↑.
- finishTransaction 처리:
- 결론:
- 차이: 코드 A는 디버깅과 안정성↑이나 에러 발생, 코드 B는 간결함↑에 에러 해결.
- 영향: 코드 B로 전환 후 구매 성공.
- free 플랜 표시 문제: startPurchase와 무관, UI (HomeScreen, translations) 확인 필요.
2. 테스트 결과
- 1. 처음 앱 실행 후 구독 로직 완료: 성공 ✅
- 설명: useEffect에서 loadSubscription 호출, checkSubscriptionStatus로 premium 구독 확인, AsyncStorage 및 Firebase 저장.
- 예상 동작: 홈 화면에 "Premium Plan", remainingUses: 100 표시.
- 로그: 구독 상품 정보 동기화 완료, DateP 구독 활성화됨.
- 의미: handleStartPurchase와 초기화 로직 정상 작동.
- 2. 구독 후 홈에서 기능 사용 시 제한 감소: 성공 ✅
- 설명: 추천 버튼 → useFeature → Firebase remainingUses 감소 (100 → 99).
- 예상 동작: 홈 화면에 "Premium Plan", remainingUses: 99 표시.
- 로그: useFeature 시작: plan=premium, remainingUses=100, premium 플랜 사용: 99/100.
- 의미: useFeature가 유료 플랜에서 정상 동작, Firebase 동기화 성공.
- 3. 앱 삭제 후 재설치 시 limit 복구: 성공 ✅
- 설명: 재설치 후 checkSubscriptionStatus로 Firebase remainingUses (예: 99) 로드.
- 예상 동작: 홈 화면에 "Premium Plan", remainingUses: 99 표시, AsyncStorage 재저장.
- 의미: 구독 복원 로직 안정적, 플레이 스토어와 Firebase 연동 성공.
- 4. 구독 취소 후 free로 전환: 성공 ✅
- 설명: 구독 취소 시 checkSubscriptionStatus가 빈 배열 반환, free 플랜으로 전환.
- 예상 동작: 홈 화면에 "Free Plan", remainingUses: 1 표시.
- 로그: 구독 상품 정보 동기화 완료.
- 의미: 구독 상태 동기화 로직이 취소 시 올바르게 free로 전환.
- 5. free 플랜에서 제한 감소: 성공 ✅
- 설명: free 플랜에서 useFeature 실행, freeRemainingUses 감소 (1 → 0).
- 예상 동작: 홈 화면에 "Free Plan", remainingUses: 0 표시, 다음 날 초기화.
- 의미: free 플랜 제한 로직 정상 작동.
- 6. free 플랜 표시 문제: 문제 발생 ⚠️ (해결됨)
- 설명: selectedPlan: free일 때 데이터 정상 전달되나 UI에 "Free Plan" 미표시.
- 추측:
- UI 렌더링 문제: HomeScreen의 selectedPlan 표시 오류.
- 상태 동기화 문제: useSubscription 상태 미반영.
- 다국어 처리 문제: translations에서 freePlan 키 누락.
- 조건부 렌더링 문제.
- 해결: isgptmode 조정으로 해결.
- 의미: 데이터 전달은 정상, UI 렌더링 문제 해결.
3. 해결된 문제
- 문제 6: free 플랜 표시 문제 → isgptmode 조정으로 해결.
- 문제 7: 번역 누락 적용 완료.
- 문제 8: 기존 restorePurchases 사용 안 하고 checkSubscriptionStatus로 복구 로직 완성.
4. 내일의 과제
- 문제 1: iOS 빌드 반영
- 설명: 현재 코드가 Android 기준, iOS 빌드 후 필요한 수정 반영.
- 문제 2: 장소 추천 textQuery 최적화
- 설명: 서버의 textQuery가 최소 5개 장소 보장해야 하나 현재 4개 키워드로 부족. 키워드 재설정 필요 (장소+키워드).