daangn/SushiBelt
UIScrollView 내 각 뷰의 노출 비율을 측정하는 iOS 광고 인상 추적 라이브러리
88+0이번 주0 찜
9포크0이슈
중간맛 분석
Swift 기반의 iOS 라이브러리로, CocoaPods와 Swift Manager 모두 지원합니다. 델리게이트와 데이터소스 패턴으로 구현되어 있어 기존 iOS 개발 경험이 있다면 쉽게 통합할 수 있습니다. 기본 인덱스·IndexPath 외에도 커스텀 식별자를 지원하며, 가시성 계산 로직과 비교 메커니즘을 확장할 수 있습니다. 데모는 Example 디렉토리의 포드 설치 후 실행 가능합니다.
이런 레포예요
이럴 때 쓰면 좋아요
- 앱 내 광고 노출 수를 정확히 집계할 때
- 뉴스피드나 이커머스 상품 목록에서 사용자가 본 항목을 추적할 때
- 분석을 위해 뷰의 화면 노출 시작/종료 시점을 쌍으로 기록할 때
핵심 기능
항목별 맞춤형 가시성 임계값 설정스크롤 방향을 고려한 정확한 노출 비율 계산대칭형 진입/이탈 추적으로 노출 세션 측정
대안 대비 차별점
항목별로 다른 노출 임계값을 지정할 수 있고, 스크롤 방향을 실시간으로 반영하며, 진입과 이탈을 대칭으로 추적하는 정밀한 설계로 광고나 분석 추적에 특화되어 있습니다.
준비물
- iOS 12.0 이상
- CocoaPods 또는 Swift Package Manager
바로 시작하기
- 레포지토리를 클론하고 Example 디렉토리에서 CocoaPods 의존성을 설치합니다.
git clone https://github.com/daangn/SushiBelt.git
cd SushiBelt/Example
pod install
- SushiBeltTracker를 생성하고 초기화합니다.
let tracker = SushiBeltTracker()
tracker.delegate = someObject
tracker.dataSource = someObject
tracker.scrollView = someScrollView
- 데이터소스를 구현하여 추적 영역과 각 항목의 목표 가시성을 정의합니다.
extension SomeObject: SushiBeltTrackerDataSource {
func trackingRect(_ tracker: SushiBeltTracker) -> CGRect {
return CGRect(...)
}
func visibleRatioForItem(_ tracker: SushiBeltTracker, item: SushiBeltTrackerItem) -> CGFloat {
return 0.5
}
}
- 델리게이트를 구현하여 진입/이탈 이벤트를 처리합니다.
extension SomeObject: SushiBeltTrackerDelegate {
func didEnter(_ tracker: SushiBeltTracker, item: SushiBeltTrackerItem) {
// 노출 임계값 도달
}
func didExit(_ tracker: SushiBeltTracker, item: SushiBeltTrackerItem) {
// 노출 임계값 미만으로 하강
}
}
별 추이 · 7일
88+0 / 7일
활용성 · 따라 만들기 좋은가
샘플 점수 14/100
- 관대한 라이선스
- 테스트 있음
- 예제 디렉토리
- 최근 활동
- AGENTS.md
- llms.txt
- 템플릿
🟢 최근 활동 있음 · 2022년 생성
이 레포에 깃밥 배지 달기
[](https://www.gitbap.com/r/daangn/SushiBelt)🔌 클로드에서 바로 써보기
깃밥을 클로드에 연결하면 이런 레포를 클로드·커서·Codex에서 바로 찾고 체험할 수 있어요.
방법 ① 커넥터 URL
클로드 설정 → 커넥터에 이 주소를 붙여넣기.
https://www.gitbap.com/api/mcp방법 ② 플러그인 (체험까지)
플러그인을 설치하면 /gitbap-trending·/gitbap-try 슬래시 커맨드로 레포를 그 자리에서 체험. Claude Code에서 아래 두 줄을 차례로 실행하세요.
/plugin marketplace add jakeparkcolde/gitbap-cowork/plugin install gitbap-cowork@gitbapAI가 README 기반으로 요약했습니다 · 원문 보기