BOKKi
BOKKi - Shoutout · 서로소개

내가 만든 앱과 웹,
다른 메이커의 화면에서도 소개하세요

Shoutout은 앱과 웹 서비스를 만든 사람들이 서로를 소개해 주는 공간이에요. 내 사이트·앱에서 다른 회원의 서비스를 소개하면, 내 서비스도 다른 회원의 사이트·앱에서 소개됩니다.

  • BOKKi 회원이면 누구나 참여
  • 운영자가 확인한 서비스만 소개
  • 소개 성과를 대시보드에서 확인

왜 Shoutout인가요

좋은 서비스는 다른 서비스를 통해 발견돼요

스토어나 검색만으로는 내 서비스가 눈에 띄기 어려워요. 비슷한 관심사의 사이트와 앱이 서로를 소개하면, 각자의 사용자에게 새로운 서비스를 보여줄 수 있어요.

소개 카드

BOKKi에 등록한 앱·웹 정보로 아이콘·이름·한 줄 설명이 담긴 소개 카드를 만들어요. 직접 만든 배너도 쓸 수 있어요.

서로 소개

내 사이트·앱의 소개 자리에 비슷한 분야의 서비스가 소개되고, 내 서비스도 다른 회원의 자리에서 소개돼요.

성과 확인

내 서비스가 몇 번 소개되고 몇 번 눌렸는지, 내 자리에서 얼마나 소개했는지 대시보드에서 볼 수 있어요.

참여 방법

3단계로 참여해요

BOKKi에 등록한 앱이 있으면 대시보드의 Shoutout 탭에서 바로 시작할 수 있어요.

1

소개 카드 등록

내 앱 목록에서 앱을 고르고 카드에 보일 이름·한 줄 설명·카테고리를 적어요. 운영자 확인 후 소개가 시작돼요.

2

소개 자리 만들기

내 사이트·앱에서 다른 서비스를 소개할 자리를 만들고, 받은 코드 두 줄(또는 SDK)을 넣어요. 운영자가 사이트·앱을 확인하면 카드가 나와요.

3

소개하고, 소개받기

내 자리에서 다른 서비스를 소개한 만큼 크레딧이 쌓이고, 그 크레딧으로 내 서비스가 다른 곳에서 소개돼요.

소개 규칙

모두에게 공평하도록 이렇게 운영해요

숫자는 10분마다 정산되고, 대시보드에서 언제든 확인할 수 있어요.

소개 크레딧내 자리에서 다른 서비스를 2번 소개하면 1크레딧이 쌓이고, 내 서비스가 1번 소개될 때 1크레딧을 써요.
모양별 가중치카드형 1 · 떠 있는 형 1 · 띠형 0.5. 띠형 자리에서는 자리 주인이 버는 크레딧도, 카드 주인이 쓰는 크레딧도 절반이에요. 배너가 없을 때 나오는 자동 카드도 직접 만든 배너와 같은 크기예요.
시작 크레딧참여하면 바로 100크레딧을 드려요.
소개로 인정되는 경우카드가 화면에 절반 이상, 1초 이상 보였을 때. 같은 사람이 같은 자리에서 같은 카드를 10분 구간 안에 다시 보면 한 번만 셉니다.
적립 확인 기간쌓인 크레딧은 정상적인 소개인지 확인하려고 최소 48시간 보류한 뒤(번 날로부터 3일 뒤) 쓸 수 있어요.
하루 적립 상한처음 100 → 2주 뒤 500 → 4주 뒤 1,000. 상한을 채운 날은 내 자리들의 소개를 더 세지 않아요. 소개 카드도 하루 500크레딧을 다 쓰면 다음 날까지 쉬어요.
크레딧 사용내 서비스 소개에는 가진 크레딧만큼만 쓰여요. 소개 카드 하나는 하루 최대 500크레딧까지 써요. 가중치 때문에 소수(예: 0.5)로 쌓이고 쓰일 수 있어요.
앱 웹뷰 자리소개 1회를 0.5회로 계산해요. (안드로이드 SDK·Flutter 패키지는 1회)
내 서비스끼리같은 회원의 서비스는 서로의 자리에 나오지 않아요. 원하면 섞어 보여줄 수 있지만 크레딧은 쌓이지 않아요.
카드 고르는 순서내 자리와 같은 카테고리 → 비슷한 분야 → 전체. 원하지 않는 카테고리는 막을 수 있어요.
BOKKi 추천소개 자리의 절반에는 BOKKi가 추천하는 서비스가 소개돼요. 이 소개도 크레딧에 똑같이 계산돼요.

넣는 방법

사이트·앱에 소개 자리 넣기

자리 ID는 대시보드 Shoutout → 소개 자리에서 자리를 만들면 받을 수 있어요. 어린이(만 14세 미만) 대상 사이트·앱에는 넣을 수 없어요.

웹사이트

카드를 보여줄 곳에 붙여 넣으세요. 등록한 도메인(과 하위 도메인)에서만 카드가 보이고 소개가 인정돼요. 운영자 승인 전에는 보이지 않으니 코드는 미리 넣어 두셔도 돼요.

<div data-bokki-x data-slot="자리ID"></div>
<script src="https://bokki.dev/ads/loader.js" defer></script>

React·Vue 같은 SPA 에서 화면을 바꾼 뒤 새 자리를 채우려면 window.BokkiAds && window.BokkiAds.render() 를 불러 주세요. 카드가 안 보이면 브라우저 개발자 도구 콘솔에서 [BOKKi Shoutout] 메시지로 이유를 볼 수 있어요. CSP 를 쓰는 사이트는 script-src·connect-src 에 https://bokki.dev, img-src 에 https: 를 허용해 주세요.

안드로이드 (Kotlin · Java)

외부 라이브러리 없이 동작하는 가벼운 SDK예요(kotlin-stdlib 만 함께). Android 5.0 이상. 자리에 등록한 패키지 이름과 앱의 applicationId 가 같아야 카드가 나와요 — 디버그 빌드에 applicationIdSuffix 가 붙으면 안 나오니 주의하세요(Logcat 의 BokkiShoutout 에서 이유 확인). 어린이 대상 앱에는 넣을 수 없어요. 앱을 Play에 올릴 때는 Play Console "데이터 보안"에 이 SDK가 처리하는 정보(카드 노출·클릭 기록, 접속 IP로 만든 일방향 값)를 함께 신고해 주세요.

// settings.gradle.kts
dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
        maven("https://bokki.dev/maven")   // Groovy: maven { url "https://bokki.dev/maven" }
    }
}

// app/build.gradle(.kts)
dependencies {
    implementation("dev.bokki:exchange:1.0.0")
}
<!-- 레이아웃 맨 위 태그에 xmlns:app="http://schemas.android.com/apk/res-auto" -->
<dev.bokki.exchange.BokkiExchangeView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:bokkiSlot="자리ID" />

// Jetpack Compose
AndroidView(factory = { BokkiExchangeView(it).apply { slotId = "자리ID" } })

Flutter (Android · iOS)

pub.dev 에 공개된 bokki_exchange 패키지예요. 소개 1회를 그대로 1회로 계산해요. Flutter 3.16 이상. 자리에 등록한 패키지 이름(iOS 는 Bundle ID)과 앱이 같아야 카드가 나와요 — Android 와 iOS 의 ID 가 다르면 자리를 따로 만들어 주세요. 카드가 안 보이면 디버그 콘솔의 [BOKKi Shoutout] 메시지에서 이유를 볼 수 있어요.

# 터미널
flutter pub add bokki_exchange

# 또는 pubspec.yaml
dependencies:
  bokki_exchange: ^1.0.0
import 'package:bokki_exchange/bokki_exchange.dart';

BokkiExchangeView(slotId: '자리ID')

그 밖의 앱 (웹뷰)

앱 안 웹뷰로 아래 주소를 열어 주세요. 높이는 카드형 약 180px, 띠형 약 100px. 소개 1회를 0.5회로 계산해요. 웹뷰는 JavaScript 를 켜고, 카드를 눌러 bokki.dev 밖으로 가는 이동(스토어·웹)은 앱 밖 브라우저로 넘겨 주세요. 그래야 작은 웹뷰 안에서 스토어가 열리지 않아요.

https://bokki.dev/x/embed?slot=자리ID
// iOS (WKNavigationDelegate)
func webView(_ w: WKWebView, decidePolicyFor a: WKNavigationAction,
             decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
    if let url = a.request.url, !(url.host == "bokki.dev" && url.path.hasPrefix("/x/")) {
        UIApplication.shared.open(url); decisionHandler(.cancel); return
    }
    decisionHandler(.allow)
}

// Android (WebView)
webView.settings.javaScriptEnabled = true
webView.settings.domStorageEnabled = true
webView.webViewClient = object : WebViewClient() {
    override fun shouldOverrideUrlLoading(v: WebView, r: WebResourceRequest): Boolean {
        if (r.url.host == "bokki.dev" && r.url.path?.startsWith("/x/") == true) return false
        v.context.startActivity(Intent(Intent.ACTION_VIEW, r.url)); return true
    }
}

소개 카드

배너가 없어도 카드가 자동으로 만들어져요

앱 아이콘·이름·한 줄 설명으로 깔끔한 카드를 만들어 드려요. 직접 만든 배너를 올리면 그 배너를 먼저 써요.

직접 만든 배너 (선택)

  • 띠형 960×150
  • 카드형 960×480
  • 같은 비율이면 더 커도 돼요 (예: 1920×960, 1920×300)
  • PNG·JPG·WebP, 1MB 이하. 올리면 확인 후 쓰여요.

이런 서비스는 소개할 수 없어요

  • 성인·도박·불법 내용, 다른 앱을 사칭하는 앱
  • 링크가 열리지 않거나 설명과 다른 앱
  • 개인정보를 몰래 모으는 앱
  • 근거 없는 건강·치료 효과, 투자 수익 보장, 대출·가상자산 권유

꼭 지켜 주세요

공정한 소개를 위한 약속

모두가 같은 조건으로 참여하는 Shoutout이라, 아래 행동이 확인되면 크레딧 취소나 참여 정지를 할 수 있어요.

숨겨 놓기카드를 아주 작게, 투명하게, 다른 요소 뒤에 숨기는 것
억지 노출·클릭자동 새로고침, 프로그램으로 노출·클릭 만들기, 클릭을 부탁하거나 보상을 주는 것
속이는 배치카드를 앱 메뉴나 버튼처럼 보이게 놓아 실수로 누르게 하는 것

자주 묻는 질문

궁금한 점

 

참여 비용이 있나요?

없어요. 크레딧은 내 자리에서 다른 서비스를 소개해서 쌓는 방식이라 결제가 필요 없어요.

사이트나 앱의 방문자가 적어도 참여할 수 있나요?

네. 시작 크레딧 100으로 내 서비스를 먼저 소개할 수 있고, 방문자가 적어도 소개한 만큼 크레딧이 쌓여요.

내 사이트에 어떤 서비스가 소개될지 고를 수 있나요?

내 자리의 주제를 정하면 비슷한 분야의 서비스가 먼저 소개되고, 원하지 않는 카테고리는 막을 수 있어요. 모든 서비스는 운영자 확인을 거쳐요.

카드에 왜 '광고'라고 표시되나요?

다른 서비스를 소개하는 카드라는 것을 이용자가 분명히 알 수 있도록 표시해요. 표시를 지우거나 가리면 안 돼요.

카드를 누르면 어디로 가나요?

기본은 서비스의 스토어나 웹사이트예요. 원하면 내 랜딩페이지(확인 필요)나 BOKKi 내 소개 페이지로 보낼 수 있어요.

그만두고 싶으면요?

대시보드에서 "Shoutout 나가기"를 누르고, 사이트·앱에 넣은 코드를 빼면 돼요.

내 서비스가 소개될 곳,
Shoutout으로 넓혀 보세요

BOKKi 계정이 없다면 먼저 내 소개 페이지를 만들어 주세요.