ViaLink
/문서

인증

모든 API 호출은 X-API-Key 헤더로 인증합니다. 대시보드에서 앱을 등록하면 API Key가 발급됩니다.

요청 헤더

http
X-API-Key: <your_api_key>

Dashboard 사용자는 JWT 기반 세션 인증을 사용합니다.

http
Authorization: Bearer <JWT>

Base URL

모든 API 요청의 기본 URL입니다.

text
https://vialink.app

Android SDK

API 24 (7.0)+, Kotlin 1.9+ · Gradle

설치

Gradle에 의존성을 추가합니다.

kotlin
// build.gradle.kts (app)
dependencies {
    implementation("com.vialink:sdk:1.0.0")
}

초기화

Application.onCreate()에서 SDK를 초기화합니다.

kotlin
// Application.kt
class MyApp : Application() {
    override fun onCreate() {
        super.onCreate()

        ViaLinkSDK.init(this, "YOUR_API_KEY")
    }
}

이벤트 추적

커스텀 이벤트를 추적합니다. SDK가 30초마다 배치로 전송합니다.

kotlin
// 구매 완료
ViaLinkSDK.track("purchase", mapOf(
    "product_id" to "12345",
    "revenue" to 29900,
    "currency" to "KRW"
))

// 회원가입
ViaLinkSDK.track("signup")

// 장바구니 추가
ViaLinkSDK.track("add_to_cart", mapOf("product_id" to "12345"))

iOS SDK

iOS 15.0+, Swift 5.9+ · Swift Package Manager

설치

Xcode에서 Swift Package를 추가합니다.

text
Xcode > File > Add Package Dependencies
URL: https://github.com/aresjoydev/vialink-ios-sdk

초기화

AppDelegate 또는 SwiftUI App의 init에서 SDK를 초기화합니다.

swift
import ViaLinkCore

// AppDelegate
func application(_ application: UIApplication,
                 didFinishLaunchingWithOptions ...) -> Bool {
    ViaLinkSDK.shared.configure(apiKey: "YOUR_API_KEY")
    return true
}

// 또는 SwiftUI App
@main
struct MyApp: App {
    init() {
        ViaLinkSDK.shared.configure(apiKey: "YOUR_API_KEY")
    }

    var body: some Scene {
        WindowGroup {
            ContentView()
                .onOpenURL { url in
                    ViaLinkSDK.shared.handleURL(url)
                }
        }
    }
}

이벤트 추적

커스텀 이벤트를 추적합니다.

swift
// 구매 완료
ViaLinkSDK.shared.track("purchase", data: [
    "product_id": "12345",
    "revenue": "29900",
    "currency": "KRW"
])

// 회원가입
ViaLinkSDK.shared.track("signup")

Web SDK

Chrome 80+, Safari 14+, Firefox 78+ · npm / CDN

설치

npm 또는 CDN으로 설치합니다.

bash
npm install vialink-web-sdk

초기화

SDK를 초기화합니다. 페이지 이탈 시에도 이벤트가 전송됩니다.

typescript
import { ViaLinkWebSDK } from 'vialink-web-sdk';

const sdk = ViaLinkWebSDK.init({
  apiKey: 'YOUR_API_KEY'
});

이벤트 추적

커스텀 이벤트를 추적합니다. 30초 배치 전송 + 페이지 이탈 시 sendBeacon으로 전송합니다.

typescript
// 구매 완료
sdk.track('purchase', {
  product_id: '12345',
  revenue: 29900,
  currency: 'KRW'
});

// 즉시 전송
await sdk.flush();

스마트 앱 배너

모바일 웹에서 앱 설치를 유도하는 배너를 표시합니다.

typescript
sdk.showBanner({
  title: '앱에서 보기',
  description: '더 빠른 경험을 위해 앱을 사용하세요',
  buttonText: '열기',
  iosStoreUrl: 'https://apps.apple.com/app/id123456',
  androidStoreUrl: 'https://play.google.com/store/apps/...',
  position: 'bottom',
  theme: 'light'
});

// 배너 숨기기
sdk.hideBanner();

React Native SDK

React Native 0.73+, TypeScript 5+ · npm / yarn

설치

npm 또는 yarn으로 설치합니다.

bash
npm install vialink-react-native-sdk
# 또는
yarn add vialink-react-native-sdk

초기화

App.tsx 최상위에서 SDK를 초기화합니다.

typescript
import { ViaLinkSDK } from 'vialink-react-native-sdk';

// App.tsx
function App() {
  useEffect(() => {
    ViaLinkSDK.shared.configure('YOUR_API_KEY');

    return () => {
      ViaLinkSDK.shared.destroy();
    };
  }, []);

  return <Navigation />;
}

이벤트 추적

커스텀 이벤트를 추적합니다.

typescript
// 구매 완료
ViaLinkSDK.shared.track('purchase', {
  product_id: '12345',
  revenue: 29900,
  currency: 'KRW'
});

// 회원가입
ViaLinkSDK.shared.track('signup');

플랫폼 설정

iOS와 Android에 각각 딥링크 설정이 필요합니다.

json
// app.json (Expo)
{
  "expo": {
    "ios": {
      "associatedDomains": ["applinks:vialink.app"]
    },
    "android": {
      "intentFilters": [{
        "action": "VIEW",
        "autoVerify": true,
        "data": [{
          "scheme": "https",
          "host": "vialink.app",
          "pathPrefix": "/{your-slug}/"
        }],
        "category": ["BROWSABLE", "DEFAULT"]
      }]
    }
  }
}

Unity SDK

Unity 2021.3+ LTS, C# 9+ · Unity Package Manager (UPM)

설치

UPM으로 패키지를 추가합니다.

text
Window > Package Manager > + > Add package from git URL:
https://github.com/aresjoydev/vialink-unity-sdk.git

초기화

첫 씬에 ViaLinkSDK 프리팹을 배치하고 초기화합니다.

csharp
using ViaLink;

public class GameManager : MonoBehaviour
{
    void Start()
    {
        ViaLinkSDK.Instance.Initialize("YOUR_API_KEY");
    }
}

이벤트 추적

커스텀 이벤트를 추적합니다.

csharp
// 인앱 구매
ViaLinkSDK.Instance.TrackEvent("purchase",
    new Dictionary<string, object>
    {
        { "product_id", "gem_pack_100" },
        { "revenue", 4900 },
        { "currency", "KRW" }
    });

// 레벨 클리어
ViaLinkSDK.Instance.TrackEvent("level_clear",
    new Dictionary<string, object>
    {
        { "level", 10 }
    });

Flutter SDK

Flutter 3.19+, Dart 3.11+ · pub.dev

설치

pubspec.yaml에 의존성을 추가합니다.

bash
flutter pub add vialink_flutter_plugin

초기화

앱 시작 시 SDK를 초기화합니다.

dart
import 'package:vialink_flutter_plugin/vialink_flutter_plugin.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await ViaLinkSDK.instance.configure(apiKey: 'YOUR_API_KEY');

  runApp(const MyApp());
}

이벤트 추적

커스텀 이벤트를 추적합니다.

dart
// 구매 완료
ViaLinkSDK.instance.track('purchase', data: {
  'product_id': '12345',
  'revenue': 29900,
  'currency': 'KRW',
});

// 회원가입
ViaLinkSDK.instance.track('signup');

플랫폼 설정

iOS와 Android에 각각 딥링크 설정이 필요합니다.

yaml
# iOS: ios/Runner/Runner.entitlements
# Associated Domains 추가:
#   applinks:vialink.app

# Android: android/app/src/main/AndroidManifest.xml
# <intent-filter android:autoVerify="true">
#   <action android:name="android.intent.action.VIEW" />
#   <category android:name="android.intent.category.DEFAULT" />
#   <category android:name="android.intent.category.BROWSABLE" />
#   <data
#     android:scheme="https"
#     android:host="vialink.app"
#     android:pathPrefix="/{your-slug}/" />
# </intent-filter>