Compare commits

171 Commits

Author SHA1 Message Date
Yu Sung
d8c27ae225 feat(live): 라이브 방 뷰가 표시될 때 홈 뷰의 최상단 레이어에 표시되면서 최대한 다른 창의 간섭을 줄여 터치가 되지 않던 버그 수정 2025-11-03 11:15:49 +09:00
Yu Sung
b0857039d7 feature(home-tab): 비밀라이브 입장시 비밀번호 창이 표시되지 않던 버그 수정 2025-10-30 17:20:19 +09:00
Yu Sung
1159e5e53a feature(agora): rtm version 1.4.10 -> 2.2.4 2025-10-30 17:08:23 +09:00
Yu Sung
c7d165989c refactor(agora): 변경을 용이하게 하기 위해 RTM과 RTC코드 분리 및 재배치 2025-10-29 17:42:11 +09:00
Yu Sung
127f7c75f3 feat(creator-community): 이미지 표시되지 않던 버그 수정
- 프로필 이미지 - DownsampledKFImage. 적용
- 게시물 이미지 - AnimatedImage -> WebImage로 변경
2025-10-23 19:48:32 +09:00
Yu Sung
43d73058d6 feat(image): 마이페이지 DownsampledKFImage 적용
- 최근 들은 콘텐츠 수평 리스트 HStack → LazyHStack으로 교체해 프리로딩/메모리 개선
2025-10-23 19:14:46 +09:00
Yu Sung
d9fcdff7a2 feat(image): 메인 라이브 탭에 DownsampledKFImage 적용
- 수평 리스트 HStack → LazyHStack으로 교체해 프리로딩/메모리 개선
2025-10-23 19:03:54 +09:00
Yu Sung
8221746569 feat(image): 메인 홈, 채팅 - 톡 페이지에 DownsampledKFImage 적용
- 수평 리스트 HStack → LazyHStack으로 교체해 프리로딩/메모리 개선
2025-10-23 18:55:53 +09:00
Yu Sung
62012bd722 feat(image): DownsampledKFImage 추가 및 캐릭터/배너에 공통 적용
- KFImage 공통 옵션(다운샘플링, scaleFactor, backgroundDecode,
  cancelOnDisappear, retry) 캡슐화한 DownsampledKFImage 추가
- 채팅-캐릭터 탭 Character/Recent/배너 뷰에서 인라인 KFImage 제거 → 공통 뷰 적용
- 수평 리스트 HStack → LazyHStack으로 교체해 프리로딩/메모리 개선

Why: 대형 원본 디코딩으로 인한 메모리 스파이크 완화 및 일관된
이미지 로딩 정책 적용. 유지보수성 및 성능 향상.
2025-10-23 17:10:04 +09:00
Yu Sung
8c58c08a85 perf(banner): TabView 프리로딩 완화·다운샘플링·요청취소 적용
배너/캐러셀에서 인접 페이지 프리로딩과 원본 해상도 디코딩으로
발생하던 메모리 스파이크와 중복 로드를 완화했습니다.

- 각 페이지에서 이미지 URL을 onAppear에 바인딩, onDisappear에 nil 해제
  → 인접 페이지 프리로딩 시 중복 로드·디코딩 방지, 요청 취소 실효
- 모든 KFImage에 cancelOnDisappear(true) 일관 적용
- 큰 배너 이미지에 downsampling(size:) 적용(디코딩 메모리 절감)
- 자동 슬라이드 주기 3초 → 4초로 완화(동시 로드 빈도 감소)
- TabView 페이지를 서브뷰로 분리하여 뷰 로직 단순화 및 재사용성 향상

결과: 동시 디코딩 감소, 피크 메모리 사용량 하락, 자동 슬라이드 안정성 개선
2025-10-23 15:31:52 +09:00
Yu Sung
9568cb7ecd feat: KFImage를 사용하는 곳에 .cancelOnDisappear(true) 옵션 추가 2025-10-23 15:09:50 +09:00
Yu Sung
425a767927 perf(app): Kingfisher 캐시 상한 구성 및 메모리 정리 훅 추가
왜: 디코딩된 비트맵의 과도한 보존으로 피크 메모리 증가. 전역
상한/만료 설정과 시스템 이벤트 연동으로 안정화 필요.

무엇(`SodaLiveApp.swift`):
- `ImageCache.default` 구성
  - 메모리: `totalCostLimit=120MB`, `countLimit=200`, `expiration=300s`
  - 디스크: `sizeLimit=500MB`
- 훅 추가
  - `didReceiveMemoryWarning` → `clearMemoryCache()`
  - `didEnterBackground` → `cleanExpiredMemoryCache()`

검증: 앱 기동/백그라운드/포어그라운드 전환 플로우 정상, 빌드 성공.
2025-10-23 14:49:04 +09:00
Yu Sung
1fc608a9af refactor: AsyncImage -> KFImage 로 변경 2025-10-23 14:42:50 +09:00
Yu Sung
b4e4f0f6ce fix(home): 인기 캐릭터 -> 인기 캐릭터 채팅 2025-10-20 22:31:18 +09:00
Yu Sung
3d4b32eb14 fix(ChatRoom): 채팅 quota 구매 캔 개수 표시 수정
- 기존: 30결제하고 바로 대화 시작 -> 수정: 10(채팅 12개) 바로 대화 시작
2025-10-20 21:39:02 +09:00
Yu Sung
ad26ab08ad feat(chat-home): 신규 캐릭터 전체보기 버튼 터치시 로그인/본인인증 단계 추가 2025-10-20 18:55:48 +09:00
Yu Sung
623375cd9f feat(creator-profile): 더보기 아이콘 흰색으로 변경, 최상단에 채널명 보이지 않도록 수정 2025-10-20 18:50:41 +09:00
Yu Sung
721a26bb7b feat(home): 홈 탭에 인기 캐릭터 순위 추가 2025-10-20 18:44:22 +09:00
Yu Sung
731ef8cee1 fix(creator-profile): 팔로우/팔로잉 버튼 변경 2025-10-20 14:30:04 +09:00
Yu Sung
8c3a0fc1c2 fix(creator-profile): 최신 콘텐츠 제목 2줄 제한 2025-10-17 17:14:55 +09:00
Yu Sung
e5e04952ca fix(creator-profile): 프로필 이미지 centerCrop 적용 2025-10-17 17:11:38 +09:00
Yu Sung
c76a1f581d fix(home): 최신 콘텐츠 그리드
- spacing 추가
2025-10-17 16:13:39 +09:00
Yu Sung
bfde23891f fix(mypage): 이미지를 resizing 하여 UI 전체가 우측으로 밀리던 버그 수정 2025-10-17 15:48:17 +09:00
Yu Sung
4dbbd2953a fix(temp): 작품별 탭 임시 제거 2025-10-17 14:40:04 +09:00
Yu Sung
efd4da6a9d feat(creator-channel): 닉네임, 팔로워 표시 UI 수정 2025-10-17 13:06:48 +09:00
Yu Sung
39f744f925 feat(creator-profile): 후원 랭킹 섹션, 팬 Talk 섹션 UI 변경 2025-10-17 09:22:00 +09:00
Yu Sung
788add773b feat(creator-profile): 시리즈 섹션 UI 변경 2025-10-17 07:24:58 +09:00
Yu Sung
84747cdea7 feat(creator-profile): 커뮤니티 섹션 UI 변경 2025-10-17 06:58:15 +09:00
Yu Sung
d178ba101f feat(creator-profile): 콘텐츠 섹션 UI 변경 2025-10-17 06:49:15 +09:00
Yu Sung
3de1b2a7d6 feat(creator-profile): 라이브 섹션 UI 변경 2025-10-17 06:17:36 +09:00
Yu Sung
491238a7eb feat(creator-profile): 최신 콘텐츠 UI 추가 2025-10-17 05:17:39 +09:00
Yu Sung
88a03ff5d5 feat(creator-channel): 프로필 이미지 표시 방식 변경 및 UI 표시 순서 변경 2025-10-17 04:20:01 +09:00
Yu Sung
76774d3d95 fix(creator-channel): 내 채널 커뮤니티 아이템이 위/아래가 잘리는 버그 수정
- HeightPreferenceKey를 사용해 아이템 사이즈 동적으로 갱신하여 LazyHStack의 사이즈를 현재 보이는 아이템의 사이즈로 설정하여 잘리는 버그 수정
2025-10-17 01:01:10 +09:00
Yu Sung
667195bd64 feat(creator-channel): 채널 상세조회 응답값에 최신 콘텐츠, 전체 콘텐츠 수, 구매한 콘텐츠 수 추가 2025-10-17 00:34:50 +09:00
Yu Sung
d1dcbfbd86 사용하지 않는 price: Int 제거 2025-10-03 00:59:31 +09:00
Yu Sung
81b01722ac feat(can-payment): 다국적 통화 표기 지원 및 결제 금액 표시 개선
- KRW 고정 표기에서 벗어나 PG/해외 결제 등 다양한 통화 표기를 정확히 지원하기 위함
2025-10-02 17:17:17 +09:00
Yu Sung
d045722b8d feat(can-charge): 이롬넷(Payverse) 통합결제 추가 2025-10-01 01:48:18 +09:00
Yu Sung
e62c89d7bc feat(original): 작품별 상세 UI
- 블러 처리한 배경의 세로 크기 절반으로 축소
2025-09-24 17:30:51 +09:00
Yu Sung
b6ca6331f3 feat(original): 작품별 상세 UI - 캐릭터
- 캐릭터를 한 줄에 2개 표시 되도록 수정
2025-09-24 16:58:56 +09:00
Yu Sung
91474b48b5 feat(original): 작품별 상세 UI 변경
- 캐릭터 / 작품 정보 탭 추가
- 작품 정보 탭 구성
  - 작품 소개
  - 원작 보러 가기
  - 상세 정보
    - 작가
    - 제작사
    - 원작
2025-09-23 14:32:16 +09:00
Yu Sung
d271f3624b fix: BootpayUI 4.4.10으로 업데이트
- 에러로 인해 빌드되지 않던 문제 수정
2025-09-23 13:26:10 +09:00
Yu Sung
d59d7c58a6 feat(character): 신규 캐릭터 전체보기 페이지 GRID
- 3단 구성에서 2단구성으로 변경
2025-09-17 02:39:52 +09:00
Yu Sung
16dcc9f0fe feat(chat-original): 원작 상세 화면 및 캐릭터 무한 스크롤 로딩 구현 2025-09-16 15:10:51 +09:00
Yu Sung
6a7a407a09 feat(chat-original): ChatTabView 작품별 탭 및 리스트 UI/API 연동 추가 2025-09-15 22:42:36 +09:00
Yu Sung
ed3f3f796a feat(chat-character): 신규 캐릭터 전체보기 화면 및 API 연동 추가 2025-09-13 02:24:52 +09:00
Yu Sung
49e014878d fix(character-banner): indicator 위치 수정 2025-09-12 01:45:47 +09:00
Yu Sung
5451c7ec5e feat(character): 본인인증 하지 않은 유저가 캐릭터 상세보기로 들어갈 때 본인인증 팝업 띄움 2025-09-12 01:27:37 +09:00
Yu Sung
da78b43f64 fix(chat): Release 빌드에서 타이핑 인디케이터 미갱신 문제 수정
- SwiftUI diff 꼬임 원인 제거: LazyVStack 아이템 id 네임스페이스 분리
  - 메시지 셀: "msg_\(index)"
  - 쿼터 안내: "quota_\(messages.count)"
  - 타이핑 인디케이터: "typing_\(messages.count)"
- 스크롤 타깃 id도 동일 네임스페이스로 일관화
- Combine 체인 메인 스레드 보장: sendMessage/enterRoom에 receive(on: .main) 적용
- 성공/실패/디코드 실패 모든 경로에서 showSendingMessage 정상 복구

왜: 디버그에서는 보였으나 Release(TestFlight)에서 UI 반영이 유실됨.
동일 id 충돌 및 메인 스레드 미보장으로 SwiftUI diff/렌더링이 꼬인 것이 원인.
2025-09-12 00:26:07 +09:00
Yu Sung
5a16a6660d fix(icon): 앱 아이콘 변경 2025-09-11 22:54:40 +09:00
Yu Sung
9d0bdd34fd feat(splash): 스플래시 페이지 수정 2025-09-11 21:48:04 +09:00
Yu Sung
112d75084e feat(character): 인기 캐릭터 섹션 추가 2025-09-11 21:23:46 +09:00
Yu Sung
73ec0ce12e feat(main): 하단 탭 순서 변경 2025-09-11 19:27:23 +09:00
Yu Sung
b97df2a213 fix(chatroom-viewmodel): sendMessage의 [weak self] -> [unowned self]로 수정 2025-09-11 18:22:40 +09:00
Yu Sung
943356607b feat(chat): Talk 탭에 스크롤 페이지네이션 추가 2025-09-11 14:39:11 +09:00
Yu Sung
e1e3b7d95c fix(chat-room): 쿼터 UI를 totalRemaining 대신 nextRechargeAtEpoch 기준으로 갱신 2025-09-10 13:51:43 +09:00
Yu Sung
a2f81bd348 fix(chat-room): 채팅방
- 쿼터 상태 조회, 쿼터 구매 API URL 변경
2025-09-10 12:04:01 +09:00
Yu Sung
20fa1db718 feat(chat): 캐릭터 상세 이동 로직 ChatTabView로 이관 및 로그인/본인인증 처리 추가 2025-09-08 14:33:06 +09:00
Yu Sung
70b7801074 feat(character-detail): 캐릭터 정보 추가
- mbti, 나이, 성별 추가
2025-09-05 18:31:58 +09:00
Yu Sung
557a4421e7 feat(character-gallery): 이미지 구매 기능 추가 2025-09-05 17:59:26 +09:00
Yu Sung
6b24e908ca fix(character-gallery): 이미지 비율을 4:5 -> 2:3으로 수정 2025-09-05 16:51:33 +09:00
Yu Sung
3c61304b95 feat(chat-room): 상단 notice 숨기기 기능 구현 2025-09-05 16:45:31 +09:00
Yu Sung
9d00869a8d fix(character-detail tab): 선택된 탭 이름 색깔 3bb9f1로 변경 2025-09-05 14:19:06 +09:00
Yu Sung
6ece66a99c fix(character-detail): 상단 툴바 제목을 캐릭터 이름 -> 캐릭터 정보로 수정 2025-09-05 14:15:33 +09:00
Yu Sung
866b65d0ed 캐릭터 탭 - 섹션 사이 간격 48
채팅 캐릭터 이미지 비율 2:3으로 변경
채팅 배경 사진 -> 채팅 배경 이미지로 단어 변경
2025-09-05 14:11:27 +09:00
Yu Sung
6a8be323d6 feat(chag-room-bg): 선택된 배경 사진의 테두리 lineWidth 1 -> 5로 수정 2025-09-04 17:41:59 +09:00
Yu Sung
079f914128 feat(talk-tab): 아이템 터치시 채팅방 이동 기능 추가 2025-09-04 16:54:32 +09:00
Yu Sung
ac5563eaa7 fix(character-detail, gallery): 이미지 사이즈 수정 2025-09-04 16:51:13 +09:00
Yu Sung
ee67e1eab7 feat(chat-room-bg): 배경 이미지 변경 기능 추가 2025-09-04 16:44:57 +09:00
Yu Sung
a025e455a0 fix(chat-room): 채팅을 보내는 중에는 다음 채팅을 보낼 수 없도록 수정 2025-09-04 11:23:40 +09:00
Yu Sung
f6af20bd7e feat(chat-settings-view): 대화설정
- 배경 이미지 숨김
- 대화 초기화 기능 추가
2025-09-04 10:20:22 +09:00
Yu Sung
b06ffcc97c feat(chat-room): 채팅방 이미지 메시지
- 구매한 이미지 터치시 구매한 이미지만 모아볼 수 있는 뷰어 추가
2025-09-04 07:27:24 +09:00
Yu Sung
f98f625200 feat(chat-room): 채팅 쿼터 구매 기능 추가 2025-09-04 06:57:02 +09:00
Yu Sung
20801bdcfb feat(chat-room): 유료 메시지 구매 기능 추가 2025-09-04 06:34:00 +09:00
Yu Sung
6ce85a485a feat(chat-room): 채팅방에서 메시지 보내기 API 연동
- 타이핑 indicator 동작하지 않던 버그 수정
- 이미지 4:5 비율로 보이도록 수정
2025-09-04 05:10:32 +09:00
Yu Sung
2576c851ee feat(chat-room) 채팅방 API
- 채팅방 입장 API 연동
- 채팅 쿼터가 없을 때 표시할 UI 추가
2025-09-04 04:25:28 +09:00
Yu Sung
96cabbc6a7 feat(character-detail) 대화하기 버튼 액션 추가
- 채팅방 생성 API 호출
2025-09-04 01:31:36 +09:00
Yu Sung
154ca01a74 feat(chat-room) 채팅방 API
- 생성, 입장, 이전 메시지 로딩, 메시지 전송 API 추가
2025-09-04 00:49:16 +09:00
Yu Sung
b74ec15de4 feat(chat-room) 타이핑 중인 것을 알려주는 애니메이션 아이템 추가 2025-09-04 00:10:12 +09:00
Yu Sung
3ca85b248e feat(chat-room) AI 메시지에 이미지를 표시할 수 있도록 수정 2025-09-03 23:46:36 +09:00
Yu Sung
d251bd50d8 feat(chat-room) 채팅방 메시지 표시
- bottom 정렬되도록 수정
2025-09-03 23:28:18 +09:00
Yu Sung
1ec22717cb feat(chat-room) 채팅방
- 텍스트 메시지 UI 적용
2025-09-03 23:14:26 +09:00
Yu Sung
a42edbe99c feat(chat-room): 채팅방에 필요한 기본적인 파일 추가 2025-09-03 17:37:23 +09:00
Yu Sung
6b445fff7c feat(chat-room) 채팅방 골격 추가 2025-09-02 23:55:46 +09:00
Yu Sung
833fd0f1b0 fix(character-detail) 캐릭터 상세
- 화면이 좌우로 길어지면서 잘리던 버그 수정
2025-09-02 04:32:45 +09:00
Yu Sung
7b3bb79e2c fix(character): 최근 대화한 캐릭터
- 좌/우 padding 24 추가
2025-09-02 03:51:28 +09:00
Yu Sung
7c031daebf feat(character-detail, gallery): 캐릭터 상세 갤러리 - 이미지 리스트 API 연동
CharacterDetailView에 갤러리 탭을 추가하고, 갤러리 화면/상태 관리/네트워킹을
구현했습니다. 소유/미소유 UI, 페이지네이션, 이미지 뷰어, 오류 토스트를 포함합니다.

TODO: 이미지 구매 API 연동
2025-09-02 03:47:41 +09:00
Yu Sung
392184fd34 feat(character-detail/gallery): 갤러리 추가 및 이미지 목록 연동
- 에셋 추가: ic_new_lock
- 그리드 UI 적용
2025-09-02 02:37:35 +09:00
Yu Sung
f11120b8d0 feat(character-detail): 상세 화면 도입 및 네비게이션/API 연동 2025-09-02 01:10:41 +09:00
Yu Sung
26271e421d ic_can_circle로 되어 있는 이미지 ic_can으로 변경 2025-08-30 00:47:50 +09:00
Yu Sung
6afe04048f feat(chat-talk): 톡 목록 조회 API 연동 및 목록 UI 구성 2025-08-29 22:25:12 +09:00
Yu Sung
4dd1866169 feat(character): 캐릭터 메인 화면 구현 및 Combine 기반 리팩터링
- 배너/최근/신규/큐레이션 섹션 UI 구성 및 데이터 바인딩
- 네트워크 이미지 로더를 Kingfisher(KFImage)로 교체하여 캐싱/재시도 지원
- CharacterApi에 토큰 헤더 포함, GET /api/chat/character/main 연동
2025-08-29 20:58:57 +09:00
Yu Sung
1488ed5b89 feat(chat): 채팅 탭 추가 및 캐릭터/톡 내부 탭 구현
- ChatTabView 신설: 앱 바 + 내부 탭(캐릭터/톡) 전환 구성
- 커스텀 탭 적용
  - indicatorHeight: 4, indicatorColor: #3bb9f1
  - tabText color: #b0bec5
  - 폰트: 선택 전 Pretendard-Regular, 선택 후 Pretendard-Bold
- HomeView/BottomTabView에 ChatTabView 연동
- CharacterView/TalkView 플레이스홀더 추가
2025-08-29 14:33:51 +09:00
Yu Sung
97a0798995 feat: 마이페이지
- 내 채널 보기 추가
2025-07-30 14:31:06 +09:00
Yu Sung
70af4cb3dd feat: 최근 들은 콘텐츠 로컬 DB 추가 2025-07-28 22:34:34 +09:00
Yu Sung
a73cafa08c feat: 설정 페이지
- 공지사항, 이벤트 메뉴 제거
2025-07-28 20:24:28 +09:00
Yu Sung
7d22a29517 feat: 상단에 최근 공지사항 표시 2025-07-28 20:08:27 +09:00
Yu Sung
b20a6cb0f6 feat: 고객센터 상단 로고 변경 2025-07-28 19:05:12 +09:00
Yu Sung
7f625c0a9d feat: 마이페이지
- 신규 UI
2025-07-28 18:59:26 +09:00
Yu Sung
1e693cb8d8 Locale 한글 추가 2025-07-22 06:14:45 +09:00
Yu Sung
a22594320f fix: 메인 홈 - 인기 크리에이터
- 이미지 crop 적용
2025-07-22 05:53:21 +09:00
Yu Sung
6fc6360f23 feat: 메인 라이브
- 라이브 예약중 UI 적용
2025-07-22 05:29:50 +09:00
Yu Sung
624c12817e feat: 메인 라이브
- 최근 종료한 라이브 UI 추가
2025-07-22 03:58:10 +09:00
Yu Sung
0b04aa20a3 feat: 메인 라이브
- 라이브 다시 듣기 UI 추가
2025-07-22 03:42:40 +09:00
Yu Sung
a744376847 feat: 메인 라이브
- 커뮤니티 신규 UI 사이즈 적용
2025-07-22 03:36:31 +09:00
Yu Sung
a4663d0853 feat: 메인 라이브
- 팔로잉 채널 신규 UI 사이즈 적용
2025-07-22 03:19:01 +09:00
Yu Sung
33195e5c8e feat: 메인 라이브
- 여러개로 나눠져 있던 API 하나로 병합
2025-07-22 03:11:21 +09:00
Yu Sung
5d0b23d10d feat: 메인 라이브
- 추천 라이브 배너 크기 조절
2025-07-22 02:13:16 +09:00
Yu Sung
15adbfe781 fix: 메인 라이브
- 안 쓰는 이벤트 코드 제거
2025-07-22 02:08:15 +09:00
Yu Sung
9f39f24da8 feat: 메인 라이브
- 지금 라이브 중 UI 적용
2025-07-22 01:48:00 +09:00
Yu Sung
7518ac7957 feat: 메인 라이브
- 새로운 UI의 기본 골격 적용
2025-07-22 01:18:21 +09:00
Yu Sung
967c83a122 fix: 메인 홈
- 섹션 제목 크기 26 -> 24 변경
- 라이브 이미지 pdf 파일로 변경
2025-07-22 01:12:07 +09:00
Yu Sung
0db3c2cc19 fix: 메인 홈
- 오디션 이미지 추가
- 오디션 리스트 페이지로 이동
2025-07-21 23:33:08 +09:00
Yu Sung
f3898ac415 fix: 메인 홈 - 라이브, 추천 채널
- 배경색 변경
2025-07-21 23:17:38 +09:00
Yu Sung
7318d7fcda fix: 메인 홈 - 인기 크리에이터
- 팔로우 수 제거
- 팔로우 버튼 추가
- 배경: 그라데이션 제거, 하나의 색으로 설정
2025-07-21 23:10:24 +09:00
Yu Sung
23053b4223 fix: 라이브
- 500캔 후원 채팅 배경 59548f -> c25264로 변경
2025-07-15 06:48:32 +09:00
Yu Sung
b8f679d233 fix: 메인 홈
- 콘텐츠 업로드 버튼 추가
2025-07-15 05:06:29 +09:00
Yu Sung
97c34dd33b fix: 메인 홈
- 추천 채널 : 모든 글자 색 white
- 보온 주간 차트 : row 사이 간격 16
2025-07-15 04:02:25 +09:00
Yu Sung
ea235b62d7 fix: 메인 홈
- 콘텐츠 폰트 pretendard로 변경
- 시리즈 이미지 하단에 블랙 제거
2025-07-15 03:47:50 +09:00
Yu Sung
48e60bff57 fix: 메인 홈 - 인기 크리에이터
- 프로필 이미지 사이즈 65 -> 70 변경
2025-07-15 03:43:28 +09:00
Yu Sung
8158a910ed fix: 메인 홈 - 이벤트 배너 영역
- 기존 홈 탭 상단에 있는 배너 임시 추가
2025-07-15 03:31:08 +09:00
Yu Sung
e39b93b152 fix: 메인 홈 - 보온 주간 차트
- 랭킹 숫자에 너비 지정하여 9위와 10위 커버이미지 정렬이 맞지 않는 버그 수정
2025-07-15 01:25:03 +09:00
Yu Sung
fee79f83b9 fix: 메인 홈 - 시리즈 아이템
- 이미지 하단에 검정색을 높이 35로 입혀서 총 화수가 안보이던 문제 수정
2025-07-15 01:06:40 +09:00
Yu Sung
dc83c627c3 fix: 메인 홈 - 시리즈 아이템
- 완결 마크 위치 수정: 오른쪽 아래 => 왼쪽 위
2025-07-15 00:57:15 +09:00
Yu Sung
ef11a0ae28 fix: 메인 홈 - 보온 주간 차트 사이즈 수정
- 아이템 사이즈 282 -> 280
- 아이템 항목 사이즈 합계: 180 -> 252
- 순위 글자 크기: 16.7 -> 24
2025-07-15 00:46:07 +09:00
Yu Sung
0e1b3dece3 fix: 포인트 아이콘 이미지 변경 2025-07-15 00:19:06 +09:00
Yu Sung
8aa8c3e9ec feat: 메인 홈
- 캔 충전 아이콘 변경
- 검색, 구매목록 아이콘 추가
2025-07-15 00:16:05 +09:00
Yu Sung
61b2f9cd89 fix: 메인 홈 - 이벤트 배너, 오디션 배너 사이즈 수정
- 이벤트 배너: 좌우 마진 제거
- 오디션 배너: 좌우 마진 제거, 352x120 비율로 변경
2025-07-15 00:09:45 +09:00
Yu Sung
1dc07c674f fix: 메인 홈 - 추천 채널
- 좋아요, 댓글 수 아이콘 변경
2025-07-14 23:48:17 +09:00
Yu Sung
d7f462a2f0 fix: 메인 홈 - 인기 크리에이터
- 프로필 이미지 사이즈 65로 변경
2025-07-14 23:38:08 +09:00
Yu Sung
de6b581220 fix: 메인 홈 - 보온 주간 차트
- 아이템 사이즈 수정
2025-07-14 23:34:07 +09:00
Yu Sung
eb9ef3065b fix: 메인 홈 - 시리즈
- 이미지 사이즈 수정: 168*238 => 160*227
2025-07-14 23:22:01 +09:00
Yu Sung
67f286687f fix: 메인 홈 - 최신 콘텐츠
- 아이템 width: 168 => 160 수정
2025-07-14 23:17:00 +09:00
Yu Sung
9c32c4ab3b fix: 메인 홈 - 인기 크리에이터
- 프로필 이미지 사이즈 60으로 변경
2025-07-14 23:08:14 +09:00
Yu Sung
6c7790cbff fix: 메인 홈 - 지금 라이브 중
- 아이템 배경색 변경
- 라이브 제목과 크리에이터 닉네임 순서 변경
2025-07-14 23:06:39 +09:00
Yu Sung
4b337700d5 feat: 스플래시 변경 2025-07-14 21:46:34 +09:00
Yu Sung
153eff2401 feat: 메인 홈 - 추천 채널의 크리에이터, 시리즈 아이템
- 터치시 로그인이 되어 있지 않으면 로그인 페이지로 이동
2025-07-14 20:05:52 +09:00
Yu Sung
3bc42b6e01 feat: 메인 홈 - 인기 크리에이터, 최신 콘텐츠
- 터치시 로그인이 되어 있지 않으면 로그인 페이지로 이동
2025-07-14 19:59:43 +09:00
Yu Sung
87b43bd2c2 feat: 메인 홈 - 라이브 중
- 터치 액션 추가
2025-07-14 19:52:16 +09:00
Yu Sung
4c3fa0fbb5 feat: 메인 홈 - 크리에이터 랭킹, 추천 채널
- 터치시 크리에이터 채널로 이동하는 기능 추가
2025-07-14 18:47:21 +09:00
Yu Sung
d05aea3ff9 feat: 메인 홈
- 큐레이션 영역 UI 추가
2025-07-14 18:41:59 +09:00
Yu Sung
0f658d07af feat: 홈 메인
- 추천 채널 UI 추가
2025-07-14 14:21:31 +09:00
Yu Sung
b6e5b629ae fix: 새로운 콘텐츠 전체보기
- AppBar 제목 : 새로운 단편 -> 최신 콘텐츠로 변경
2025-07-14 11:47:05 +09:00
Yu Sung
07c73366e9 feat: 메인 홈
- 주간 차트, 무료 콘텐츠 UI 추가
2025-07-12 02:50:24 +09:00
Yu Sung
6a9854bdd7 feat: 메인 홈
- 요일별 시리즈, 오디션 추가
2025-07-12 01:20:02 +09:00
Yu Sung
5a9b95c2bf feat: 메인 홈
- 라이브, 인기 크리, 최신 콘텐츠, 이벤트 배너 UI 추가
2025-07-11 22:31:15 +09:00
Yu Sung
e121ec1ee4 feat: 신규 홈 추가 2025-07-11 12:18:37 +09:00
Yu Sung
fca5425e81 feat: 하단 탭 아이콘 변경 2025-07-10 19:18:50 +09:00
Yu Sung
da3ca96960 feat: 커뮤니티 글쓰기/수정
- 이미지 gif 등록 기능 추가
2025-07-03 18:01:06 +09:00
Yu Sung
419feeab6d feat: 커뮤니티 전체보기
- gif 재생 되도록 추가
2025-07-03 15:56:41 +09:00
Yu Sung
69c7fb4c0b fix: 커뮤니티 댓글
- 무료 커뮤니티 글, 내 커뮤니티 글 에서 비밀댓글 체크박스가 보이지 않도록 수정
2025-06-13 21:06:20 +09:00
Yu Sung
a815bcfbf4 feat: 팔로워 리스트
- 프로필 이미지를 터치하면 프로필 다이얼로그 표시
2025-06-13 19:56:44 +09:00
Yu Sung
24c97dbe51 feat: 커뮤니티 댓글
- 유료 커뮤니티 구매시 비밀 댓글 쓰기 기능 추가
2025-06-13 19:18:37 +09:00
Yu Sung
522a177063 feat: 쿠폰 등록 후 마이페이지가 새로고침 되도록 수정 2025-06-10 21:28:11 +09:00
Yu Sung
ed2928141d feat: 인기 단편 전체보기
- 인기 단편 전체보기에 포인트 사용 여부 표시
2025-06-10 21:15:02 +09:00
Yu Sung
6b0ea91ceb feat: 쿠폰 등록
- 쿠폰 등록 후 캔 내역 페이지가 아닌 바로 이전 페이지로 이동하도록 수정
2025-06-10 20:49:43 +09:00
Yu Sung
c0cb7fb301 feat: 쿠폰 등록 안내 문구 수정 2025-06-10 19:54:04 +09:00
Yu Sung
86cf466838 feat: 콘텐츠 메인 - 새로운 콘텐츠, 큐레이션, 채널별 인기 콘텐츠, 시리즈 상세, 크리에이터 채널 콘텐츠 리스트
- 포인트 사용 가능 여부 표시
2025-06-10 19:43:29 +09:00
Yu Sung
842da82faf feat: 콘텐츠 수정
- 태그 수정 기능 추가
- 포인트 사용여부 수정 기능 추가
2025-06-04 17:40:02 +09:00
Yu Sung
677e8cac0a fix: 콘텐츠 수정 - 토스트, 수정 버튼 배경색 수정 2025-06-04 16:38:44 +09:00
Yu Sung
7aa040c492 feat: 콘텐츠 업로드
- 포인트 사용 가능 여부 추가
2025-06-02 15:21:24 +09:00
Yu Sung
4664fd42c7 feat: 라이브 후원 메시지 글자 수 조정
- 200자 -> 1000자
2025-05-23 19:40:38 +09:00
Yu Sung
1c03f476d8 feat: 구매 확인 Dialog
- 포인트 사용이 가능한 경우 포인트를 같이 표시하도록 수정
2025-05-20 18:57:53 +09:00
Yu Sung
ec8b866c3e fix: 앱 실행시 처음 실행하는 유저 정보 조회
- point를 가져와서 UserDefaults에 저장
2025-05-20 18:02:51 +09:00
Yu Sung
ba7630c986 feat: 포인트 소멸 안내 메시지 추가 2025-05-20 17:43:06 +09:00
Yu Sung
a92e04044e fix: data message 푸시
- userNotificationCenter willPresent withCompletionHandler 메서드에 POINT_GRANTED메시지를 캐시할 수 있도록 코드 추가
2025-05-20 17:34:34 +09:00
Yu Sung
65373ae418 feat: 포인트 내역 UI 추가 2025-05-20 14:07:03 +09:00
Yu Sung
f30db6c34a fix: 로그아웃시 UserDefaults에서 푸시토큰을 삭제하지 않도록 수정 2025-05-17 21:46:37 +09:00
Yu Sung
f66cb877f9 refactor: periodicPlaybackTimer 계산시 initialDelay와 repeating에 있는 같은 값을 period 변수로 선언 2025-05-17 21:34:44 +09:00
Yu Sung
0e61ee1adf feat: 라이브 30분 연속 청취시 트래킹 API 호출 기능 추가 2025-05-17 17:29:48 +09:00
Yu Sung
35d98b2378 fix: 라이브 시작 푸시를 터치하여 앱을 실행했을 때 스플래시 화면에서 화면 이동이 되지 않던 버그 수정 2025-05-14 17:48:45 +09:00
Yu Sung
f3c5e29b60 fix: swift 6 경고 제거 2025-05-14 17:20:35 +09:00
340 changed files with 13619 additions and 2697 deletions

4
.gitignore vendored
View File

@@ -7,6 +7,7 @@
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
@@ -276,4 +277,7 @@ xcuserdata
/*.gcno
**/xcshareddata/WorkspaceSettings.xcsettings
.kiro/
.junie/
# End of https://www.toptal.com/developers/gitignore/api/macos,xcode,appcode,swift,swiftpackagemanager,swiftpm,fastlane,cocoapods

20
Podfile
View File

@@ -6,7 +6,8 @@ target 'SodaLive' do
use_frameworks!
# Pods for SodaLive
pod 'BootpayUI', '4.4.6'
pod 'BootpayUI', '4.4.10'
pod 'AgoraRtm', '2.2.4'
end
@@ -15,10 +16,25 @@ target 'SodaLive-dev' do
use_frameworks!
# Pods for SodaLive-dev
pod 'BootpayUI', '4.4.6'
pod 'BootpayUI', '4.4.10'
pod 'AgoraRtm', '2.2.4'
end
pre_install do |installer|
# Path to the AgoraRtm Pod directory inside the CocoaPods sandbox
rtm_pod_path = File.join(installer.sandbox.root, 'AgoraRtm')
# Full path to aosl.xcframework
aosl_xcframework_path = File.join(rtm_pod_path, 'aosl.xcframework')
if File.exist?(aosl_xcframework_path)
puts "Deleting aosl.xcframework from #{aosl_xcframework_path}"
FileUtils.rm_rf(aosl_xcframework_path)
else
puts "aosl.xcframework not found, skipping deletion."
end
end
post_install do |installer|
installer.generated_projects.each do |project|
project.targets.each do |target|

View File

@@ -1,10 +1,15 @@
PODS:
- AgoraRtm (2.2.4):
- AgoraRtm/RtmBasic (= 2.2.4)
- AgoraRtm/RtmKit (= 2.2.4)
- AgoraRtm/RtmBasic (2.2.4)
- AgoraRtm/RtmKit (2.2.4)
- Alamofire (5.10.2)
- Bootpay (4.4.6):
- CryptoSwift
- NVActivityIndicatorView
- ObjectMapper
- BootpayUI (4.4.6):
- BootpayUI (4.4.10):
- Alamofire
- Bootpay (~> 4.4.6)
- CryptoSwift
@@ -20,10 +25,12 @@ PODS:
- SwiftyJSON (5.0.2)
DEPENDENCIES:
- BootpayUI (= 4.4.6)
- AgoraRtm (= 2.2.4)
- BootpayUI (= 4.4.10)
SPEC REPOS:
trunk:
- AgoraRtm
- Alamofire
- Bootpay
- BootpayUI
@@ -34,15 +41,16 @@ SPEC REPOS:
- SwiftyJSON
SPEC CHECKSUMS:
AgoraRtm: 534144434383d41b3b0ebfae2a961ef0f51b0645
Alamofire: 7193b3b92c74a07f85569e1a6c4f4237291e7496
Bootpay: cd7f0542b096ab0af0b09a6e12a6b87f2cbbb531
BootpayUI: bf37f6d2aba74fb5fa1331fbb7188027487041f9
BootpayUI: beec5b0bba002b4dbced8c0ecace571ed6a017bc
CryptoSwift: e64e11850ede528a02a0f3e768cec8e9d92ecb90
NVActivityIndicatorView: fe52a6a68664c2df8991d7d9e3d86d8d19453c53
ObjectMapper: e6e4d91ff7f2861df7aecc536c92d8363f4c9677
SnapKit: d612e99e678a2d3b95bf60b0705ed0a35c03484a
SwiftyJSON: f5b1bf1cd8dd53cd25887ac0eabcfd92301c6a5a
PODFILE CHECKSUM: 60f01d7963f5f5ca52a566ebb5c88570e2896b99
PODFILE CHECKSUM: 197d8c8b434dbcc335438281fc68e94718f6a8e1
COCOAPODS: 1.16.2

View File

@@ -1,13 +1,22 @@
{
"originHash" : "13d9b1c547710ff7af1ec6171e21afef48167b871cb597062e7133fa01a478fc",
"originHash" : "1f28da3687662a2a9efe60ffc2ca2499be411b5b0a1e07f72559059c40728121",
"pins" : [
{
"identity" : "abseil-cpp-binary",
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/abseil-cpp-binary.git",
"state" : {
"revision" : "748c7837511d0e6a507737353af268484e1745e2",
"version" : "1.2024011601.1"
"revision" : "194a6706acbd25e4ef639bcaddea16e8758a3e27",
"version" : "1.2024011602.0"
}
},
{
"identity" : "agorainfra_ios",
"kind" : "remoteSourceControl",
"location" : "https://github.com/AgoraIO/AgoraInfra_iOS.git",
"state" : {
"revision" : "0071cecee99160f056c943ee6bfca06685ffa3d7",
"version" : "1.3.0"
}
},
{
@@ -15,17 +24,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/AgoraIO/AgoraRtcEngine_iOS.git",
"state" : {
"revision" : "2e035dbfd39dea92ba9efd6447cd976fba85d5ff",
"version" : "4.2.2"
}
},
{
"identity" : "agorartm_ios",
"kind" : "remoteSourceControl",
"location" : "https://github.com/AgoraIO/AgoraRtm_iOS",
"state" : {
"revision" : "8d8d126da7e420798f39d1d95b6148eeb93971aa",
"version" : "1.4.10"
"revision" : "c1224ad3e316db15a4ac48a6ff08208f7bcf5238",
"version" : "4.6.0"
}
},
{
@@ -33,8 +33,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/Alamofire/Alamofire.git",
"state" : {
"revision" : "bc268c28fb170f494de9e9927c371b8342979ece",
"version" : "5.7.1"
"revision" : "513364f870f6bfc468f9d2ff0a95caccc10044c5",
"version" : "5.10.2"
}
},
{
@@ -42,8 +42,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/app-check.git",
"state" : {
"revision" : "076b241a625e25eac22f8849be256dfb960fcdfe",
"version" : "10.19.1"
"revision" : "3b62f154d00019ae29a71e9738800bb6f18b236d",
"version" : "10.19.2"
}
},
{
@@ -51,17 +51,17 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/AppsFlyerSDK/AppsFlyerFramework-Static",
"state" : {
"revision" : "2369fd501848792ec268dd47d3105bc42f9203da",
"version" : "6.16.1"
"revision" : "1741d025d5bdd8a64c42854ba0fcfd7f768e4594",
"version" : "6.17.5"
}
},
{
"identity" : "facebook-ios-sdk",
"kind" : "remoteSourceControl",
"location" : "https://github.com/facebook/facebook-ios-sdk",
"location" : "https://github.com/facebook/facebook-ios-sdk.git",
"state" : {
"revision" : "b28dde427715b45a26ebebf697929f4a81b15e04",
"version" : "18.0.0"
"revision" : "a77ba210bf6534564ad4027fce2fef65babfadf8",
"version" : "18.0.1"
}
},
{
@@ -69,8 +69,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/firebase/firebase-ios-sdk.git",
"state" : {
"revision" : "9d17b500cd98d9a7009751ad62f802e152e97021",
"version" : "10.26.0"
"revision" : "eca84fd638116dd6adb633b5a3f31cc7befcbb7d",
"version" : "10.29.0"
}
},
{
@@ -78,8 +78,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/GoogleAppMeasurement.git",
"state" : {
"revision" : "16244d177c4e989f87b25e9db1012b382cfedc55",
"version" : "10.25.0"
"revision" : "fe727587518729046fc1465625b9afd80b5ab361",
"version" : "10.28.0"
}
},
{
@@ -96,8 +96,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/GoogleUtilities.git",
"state" : {
"revision" : "26c898aed8bed13b8a63057ee26500abbbcb8d55",
"version" : "7.13.1"
"revision" : "57a1d307f42df690fdef2637f3e5b776da02aad6",
"version" : "7.13.3"
}
},
{
@@ -114,8 +114,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/gtm-session-fetcher.git",
"state" : {
"revision" : "d415594121c9e8a4f9d79cecee0965cf35e74dbd",
"version" : "3.1.1"
"revision" : "a2ab612cb980066ee56d90d60d8462992c07f24b",
"version" : "3.5.0"
}
},
{
@@ -132,8 +132,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/onevcat/Kingfisher.git",
"state" : {
"revision" : "c75584ac759cbb16b204d0a7de3ebf53ea6b304d",
"version" : "7.9.0"
"revision" : "2ef543ee21d63734e1c004ad6c870255e8716c50",
"version" : "7.12.0"
}
},
{
@@ -141,8 +141,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/firebase/leveldb.git",
"state" : {
"revision" : "0706abcc6b0bd9cedfbb015ba840e4a780b5159b",
"version" : "1.22.2"
"revision" : "a0bc79961d7be727d258d33d5a6b2f1023270ba1",
"version" : "1.22.5"
}
},
{
@@ -159,8 +159,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/firebase/nanopb.git",
"state" : {
"revision" : "819d0a2173aff699fb8c364b6fb906f7cdb1a692",
"version" : "2.30909.0"
"revision" : "b7e1104502eca3a213b46303391ca4d3bc8ddec1",
"version" : "2.30910.0"
}
},
{
@@ -168,8 +168,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/team-michael/notifly-ios-sdk",
"state" : {
"revision" : "e3a0a4669c4f8c8c48d811d1831e803447612ec2",
"version" : "1.16.0"
"revision" : "406d95344b7adb71adcc9e46960fec50d608e576",
"version" : "1.17.3"
}
},
{
@@ -178,7 +178,7 @@
"location" : "https://github.com/objectbox/objectbox-swift-spm",
"state" : {
"branch" : "main",
"revision" : "01fdb75f9c6da0c2a378598ef0c4bac6e777f3c1"
"revision" : "28c3261c9836cd3f4d64ab6419a3628d2b167811"
}
},
{
@@ -195,8 +195,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/google/promises.git",
"state" : {
"revision" : "e70e889c0196c76d22759eb50d6a0270ca9f1d9e",
"version" : "2.3.1"
"revision" : "540318ecedd63d883069ae7f1ed811a2df00b6ac",
"version" : "2.4.0"
}
},
{
@@ -222,8 +222,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/NuPlay/RichText.git",
"state" : {
"revision" : "ff468d18b066ea5838a2d3f9cb572d55b8ebdb11",
"version" : "2.3.0"
"revision" : "ec3469ee47c17e0f90e4b43f23d7e19bc42e069b",
"version" : "2.7.0"
}
},
{
@@ -231,8 +231,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/ReactiveX/RxSwift.git",
"state" : {
"revision" : "9dcaa4b333db437b0fbfaf453fad29069044a8b4",
"version" : "6.6.0"
"revision" : "5dd1907d64f0d36f158f61a466bab75067224893",
"version" : "6.9.0"
}
},
{
@@ -240,8 +240,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/SDWebImage/SDWebImage.git",
"state" : {
"revision" : "59730af512c06fb569c119d737df4c1c499e001d",
"version" : "5.18.10"
"revision" : "34cf2423a2c4088d06a3b08655603b5bc3eeeb3a",
"version" : "5.21.2"
}
},
{
@@ -249,8 +249,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/SDWebImage/SDWebImageSwiftUI.git",
"state" : {
"revision" : "261b6cec35686d2dc192b809ab50742b4502a73b",
"version" : "2.2.6"
"revision" : "53573d6dd017e354c0e7d8f1c86b77ef1383c996",
"version" : "2.2.7"
}
},
{
@@ -258,8 +258,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-protobuf.git",
"state" : {
"revision" : "ce20dc083ee485524b802669890291c0d8090170",
"version" : "1.22.1"
"revision" : "2547102afd04fe49f1b286090f13ebce07284980",
"version" : "1.31.1"
}
},
{

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

View File

@@ -1,7 +1,7 @@
{
"images" : [
{
"filename" : "launcher_1024x1024.png",
"filename" : "1024x1024.jpg",
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -1,6 +1,7 @@
{
"images" : [
{
"filename" : "ic_can.png",
"idiom" : "universal",
"scale" : "1x"
},
@@ -9,7 +10,6 @@
"scale" : "2x"
},
{
"filename" : "ic_can.png",
"idiom" : "universal",
"scale" : "3x"
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -1,6 +1,7 @@
{
"images" : [
{
"filename" : "ic_can_circle.png",
"idiom" : "universal",
"scale" : "1x"
},
@@ -9,7 +10,6 @@
"scale" : "2x"
},
{
"filename" : "ic_message_square_777.png",
"idiom" : "universal",
"scale" : "3x"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -1,6 +1,7 @@
{
"images" : [
{
"filename" : "ic_chat.png",
"idiom" : "universal",
"scale" : "1x"
},
@@ -9,7 +10,6 @@
"scale" : "2x"
},
{
"filename" : "splash_text2.png",
"idiom" : "universal",
"scale" : "3x"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 B

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_chat_selected.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 519 B

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_comment_78909c.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 656 B

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_comment_white.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 B

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_heart_78909c.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 677 B

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_heart_white.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 B

View File

@@ -1,6 +1,7 @@
{
"images" : [
{
"filename" : "ic_home.png",
"idiom" : "universal",
"scale" : "1x"
},
@@ -9,7 +10,6 @@
"scale" : "2x"
},
{
"filename" : "splash_text1.png",
"idiom" : "universal",
"scale" : "3x"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 B

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_home_selected.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 B

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_live.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 426 B

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_live_selected.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 764 B

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "ic_logo_service_center.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 471 B

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_my.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 B

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_my_auth.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_my_block.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_my_coupon.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_my_event.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_my_notice.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_my_selected.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 B

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_my_service_center.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_my_storage.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_new_lock.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 B

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_new_share.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 B

View File

@@ -1,6 +1,7 @@
{
"images" : [
{
"filename" : "ic_point.png",
"idiom" : "universal",
"scale" : "1x"
},
@@ -9,7 +10,6 @@
"scale" : "2x"
},
{
"filename" : "ic_point.png",
"idiom" : "universal",
"scale" : "3x"
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_search_white.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 B

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_storage.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 B

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_subscribe.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 B

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_subscribe_selected.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 631 B

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "ic_time.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 B

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "img_banner_audition.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "img_introduce_voiceon.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

View File

@@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "img_live.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "img_text_logo.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "rank_1.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

View File

@@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "rank_2.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

View File

@@ -0,0 +1,12 @@
{
"images" : [
{
"filename" : "rank_3.pdf",
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 MiB

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "splash_text_logo.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="23605" systemVersion="23G93" minimumToolsVersion="Automatic" sourceLanguage="Swift" usedWithSwiftData="YES" userDefinedModelVersionIdentifier="">
<entity name="RecentContent" representedClassName=".RecentContent" syncable="YES">
<attribute name="contentId" optional="YES" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES"/>
<attribute name="coverImageUrl" optional="YES" attributeType="String"/>
<attribute name="creatorNickname" optional="YES" attributeType="String"/>
<attribute name="listenedAt" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
<attribute name="title" optional="YES" attributeType="String"/>
</entity>
</model>

View File

@@ -2,8 +2,6 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSAdvertisingAttributionReportEndpoint</key>
<string>https://appsflyer-skadnetwork.com/</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
@@ -33,6 +31,8 @@
<false/>
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-1299501215847962~3447556960</string>
<key>NSAdvertisingAttributionReportEndpoint</key>
<string>https://appsflyer-skadnetwork.com/</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
@@ -242,6 +242,10 @@
<string>gmarket_sans_bold.otf</string>
<string>gmarket_sans_medium.otf</string>
<string>gmarket_sans_light.otf</string>
<string>Pretendard-Bold.otf</string>
<string>Pretendard-Medium.otf</string>
<string>Pretendard-Light.otf</string>
<string>Pretendard-Regular.otf</string>
</array>
<key>UIBackgroundModes</key>
<array>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -2,8 +2,6 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSAdvertisingAttributionReportEndpoint</key>
<string>https://appsflyer-skadnetwork.com/</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
@@ -33,6 +31,8 @@
<false/>
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-1299501215847962~8852459715</string>
<key>NSAdvertisingAttributionReportEndpoint</key>
<string>https://appsflyer-skadnetwork.com/</string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
@@ -242,6 +242,10 @@
<string>gmarket_sans_bold.otf</string>
<string>gmarket_sans_medium.otf</string>
<string>gmarket_sans_light.otf</string>
<string>Pretendard-Bold.otf</string>
<string>Pretendard-Medium.otf</string>
<string>Pretendard-Light.otf</string>
<string>Pretendard-Regular.otf</string>
</array>
<key>UIBackgroundModes</key>
<array>

View File

@@ -0,0 +1,31 @@
//
// Untitled.swift
// SodaLive
//
// Created by klaus on 9/29/25.
//
<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width,initial-scale=1"/>
<!-- PayVerse SDK -->
<script src="https://ui.payverseglobal.com/js/payments.js"></script>
</head>
<body>
<script>
// 안드로이드에서 JSON 문자열을 넘기면 이 함수를 호출
function startPay(payloadJson) {
try {
const p = JSON.parse(payloadJson);
// 즉시 실행: 페이지가 열리자마자 결제창 시작
window.payVerse.requestUI(p);
} catch (e) {
console.error('startPay error', e);
alert('결제 초기화에 실패했습니다.');
}
}
</script>
</body>
</html>

View File

@@ -0,0 +1,58 @@
<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width,initial-scale=1"/>
<title>PayVerse Starter</title>
<style>
html, body { margin:0; padding:0; height:100%; background:#111; color:#fff; font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; }
#app { padding:16px; }
#back { position:fixed; top:16px; left:16px; background:#333; color:#fff; border:none; padding:10px 14px; border-radius:8px; }
.log { font-size:12px; opacity:.8; white-space:pre-wrap; word-break:break-word; }
</style>
<!-- PayVerse SDK -->
<script src="https://ui-snd.payverseglobal.com/js/payments.js"
onload="console.log('✅ PayVerse SDK loaded');"
onerror="console.error('❌ PayVerse SDK failed to load');"></script>
</head>
<body>
<div id="app">
<h2>PayVerse Starter</h2>
<p>결제 모듈 로드를 준비중입니다...</p>
<div class="log" id="log"></div>
</div>
<script>
// 간단한 로깅 유틸 (iOS 콘솔 브릿지와 함께 동작)
(function(){
var el = document.getElementById('log');
var old = console.log;
console.log = function(){
var msg = Array.prototype.slice.call(arguments).join(' ');
if (el) { el.textContent += msg + "\n"; }
try { window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.console && window.webkit.messageHandlers.console.postMessage(msg); } catch(e) {}
old && old.apply(console, arguments);
};
})();
// 네이티브에서 JSON 문자열을 넘기면 이 함수를 호출
function startPay(payloadJson) {
try {
console.log('startPay called with payload:', payloadJson);
var p = JSON.parse(payloadJson);
if (!window.payVerse || !window.payVerse.requestUI) {
console.log('❌ payVerse SDK not ready');
alert('결제 모듈 초기화 중입니다. 잠시 후 다시 시도해주세요.');
return;
}
console.log('▶ calling payVerse.requestUI...');
window.payVerse.requestUI(p);
} catch (e) {
console.log('❌ startPay error:', e && e.message ? e.message : e);
alert('결제 초기화에 실패했습니다.');
}
}
</script>
</body>
</html>

View File

@@ -4,10 +4,6 @@
<dict>
<key>aps-environment</key>
<string>development</string>
<key>com.apple.developer.applesignin</key>
<array>
<string>Default</string>
</array>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:voiceon.onelink.me</string>

Some files were not shown because too many files have changed in this diff Show More