DateP

DateP 프로젝트: 구독 에러 수정 및 검증 테스트

Solo.dev 2025. 4. 13. 22:50
DateP 프로젝트: 구독 에러 수정 및 검증 테스트

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: 주석 없음 → 간결함↑.
  • 결론:
    • 차이: 코드 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 렌더링 문제: HomeScreenselectedPlan 표시 오류.
      • 상태 동기화 문제: useSubscription 상태 미반영.
      • 다국어 처리 문제: translations에서 freePlan 키 누락.
      • 조건부 렌더링 문제.
    • 해결: isgptmode 조정으로 해결.
    • 의미: 데이터 전달은 정상, UI 렌더링 문제 해결.

3. 해결된 문제

  • 문제 6: free 플랜 표시 문제 → isgptmode 조정으로 해결.
  • 문제 7: 번역 누락 적용 완료.
  • 문제 8: 기존 restorePurchases 사용 안 하고 checkSubscriptionStatus로 복구 로직 완성.

4. 내일의 과제

  • 문제 1: iOS 빌드 반영
    • 설명: 현재 코드가 Android 기준, iOS 빌드 후 필요한 수정 반영.
  • 문제 2: 장소 추천 textQuery 최적화
    • 설명: 서버의 textQuery가 최소 5개 장소 보장해야 하나 현재 4개 키워드로 부족. 키워드 재설정 필요 (장소+키워드).