모바일 SDK 연동 가이드 — iOS·Android 앱에서 딥링크와 이벤트 추적 시작하기
FINGERPUSH.LINK 모바일 SDK를 iOS·Android 앱에 연동하는 방법을 단계별로 설명합니다. 디퍼드 딥링크 수신, 앱 설치 추적, 사용자 이벤트 전송까지.
SDK를 연동하면 뭐가 달라지나요?
SDK 없이도 FINGERPUSH.LINK의 기본 기능(단축 URL, 클릭 통계, 디퍼드 딥링크)은 작동합니다. 하지만 SDK를 연동하면 앱 안에서 일어나는 모든 것을 추적할 수 있습니다.
| 기능 | SDK 없이 | SDK 연동 |
|---|---|---|
| 클릭 추적 | ✅ | ✅ |
| 디퍼드 딥링크 (기본) | ✅ 핑거프린트 | ✅ 정밀 매칭 |
| 앱 설치 확인 | △ 추정 | ✅ 정확 |
| 앱 내 이벤트 추적 | ❌ | ✅ 가입·구매·커스텀 |
| 8단계 퍼널 완성 | ❌ (3단계까지) | ✅ 전체 8단계 |
| 크로스플랫폼 세션 | ❌ | ✅ 웹↔앱 연결 |
iOS SDK 연동 (v1.0.0-rc02, iOS 15.0+)
1단계: SDK 설치
현재 xcframework 직접 설치 방식을 지원합니다.
- fplink.xcframework.zip 다운로드 (약 309KB)
- 압축 해제 후
fplink.xcframework를 Xcode 프로젝트의 Frameworks 폴더에 추가 - Target → General → Frameworks, Libraries, and Embedded Content에서
fplink.xcframework를 Embed & Sign으로 설정
참고: CocoaPods, Swift Package Manager는 현재 준비 중입니다.
RunScript 설정 (필수)
Target → Build Phases → New Run Script Phase에 아래 스크립트를 추가합니다. 빌드 시 AssociatedDomains.plist가 자동 생성되어 Universal Links가 활성화됩니다.
PLIST_PATH="${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/AssociatedDomains.plist"
/usr/libexec/PlistBuddy -c "Add :com.apple.developer.associated-domains array" "$PLIST_PATH" 2>/dev/null
# 콘솔에서 설정한 도메인이 자동으로 포함됩니다
2단계: 초기화
AppDelegate.swift에서 SDK를 초기화합니다. App ID와 API Key는 콘솔의 **[모바일 앱] → [앱 관리] → [API 키]**에서 확인할 수 있습니다.
import fplink
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
Fplink.initialize(
appID: "YOUR_APP_ID",
apiKey: "YOUR_MOBILE_APP_API_KEY"
)
return true
}
}
3단계: 딥링크 콜백 등록
앱이 딥링크를 수신했을 때 호출될 콜백을 등록합니다. AppDelegate의 didFinishLaunchingWithOptions에서 설정하세요.
Fplink.instance().setDeeplinkCallback { url, schemeUrl in
// url: Universal Link URL
// schemeUrl: URL Scheme URL (커스텀 스킴 사용 시)
if let url = url {
navigateToContent(url: url)
}
}
4단계: 딥링크 수신 처리
딥링크 유입 경로에 따라 적절한 핸들러를 호출합니다.
Universal Links (앱 링크)
// SceneDelegate.swift
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
let isFingerpushDeeplink = Fplink.instance()
.handleDeeplink(continue: userActivity)
// true이면 FINGERPUSH.LINK 딥링크가 처리됨
}
URL Scheme (커스텀 스킴)
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
guard let url = URLContexts.first?.url else { return }
let isFingerpushDeeplink = Fplink.instance()
.handleDeeplink(open: url)
}
5단계: 디퍼드 딥링크
앱 미설치 상태에서 링크를 클릭하고, 스토어에서 설치 후 첫 실행 시 원래 목적지로 자동 이동합니다.
Fplink.instance().handleDeferredDeeplink { url, schemeUrl in
// url: 원래 클릭했던 딥링크 URL
// schemeUrl: URL Scheme URL
if let url = url {
navigateToContent(url: url)
}
}
// isFirstCalled: true이면 최초 호출
Android SDK 연동 (v1.0.0-rc03, API 23+)
1단계: SDK 설치
build.gradle (프로젝트 레벨)에서 mavenCentral() 확인:
repositories {
mavenCentral()
}
build.gradle (app 레벨):
dependencies {
implementation 'link.fingerpush:fplink:$LATEST_VERSION'
}
2단계: 초기화
Application 클래스에서 FplinkOptionsBuilder로 SDK를 초기화합니다.
import kr.co.kissoft.fplink.Fplink
import kr.co.kissoft.fplink.data.FplinkOptionsBuilder
class MyApp : Application() {
override fun onCreate() {
super.onCreate()
val options = FplinkOptionsBuilder(
"YOUR_APP_ID",
"YOUR_MOBILE_APP_API_KEY"
).build()
Fplink.initialize(this, options)
}
}
3단계: 딥링크 수신
AndroidManifest.xml 인텐트 필터 추가:
<activity android:name=".MainActivity">
<!-- URL Scheme 딥링크 -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="YOUR_SCHEME" />
</intent-filter>
<!-- App Links (https) -->
<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="YOUR_DOMAIN_NAME" />
</intent-filter>
</activity>
Activity에서 딥링크 처리 — onResume()과 onNewIntent()에서 처리해야 합니다:
class MainActivity : AppCompatActivity() {
override fun onResume() {
super.onResume()
Fplink.handleDeeplink(intent) { linkData ->
// linkData.link → 딥링크 URL
// linkData.schemeUrl → 커스텀 스킴 URL
linkData?.let {
navigateToContent(it.link)
}
}
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
setIntent(intent) // 인텐트 갱신 필수
}
}
4단계: 디퍼드 딥링크
앱 미설치 → 스토어 설치 → 첫 실행 시 원래 목적지로 자동 라우팅:
Fplink.handleDeferredDeepLink { linkData ->
// linkData.link → 원래 클릭했던 딥링크 URL
linkData?.let {
navigateToContent(it.link)
}
}
// isFirstCalled: true이면 최초 호출
React Native SDK 연동 (v1.0.0-rc04)
React Native 0.77.x 이상, Android API 23+, iOS 15.0+ 환경을 지원합니다.
1단계: 패키지 설치
npm install fplink-react-native
cd ios && pod install
2단계: 네이티브 초기화
React Native SDK는 iOS와 Android 네이티브 코드에서 각각 초기화해야 합니다.
iOS — AppDelegate.swift
import FplinkReactNative
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
FplinkReactNative.initialize(
appId: "YOUR_APP_ID",
apiKey: "YOUR_MOBILE_APP_API_KEY"
)
return true
}
Android — MainApplication.kt
import kr.co.nicekjm.fplinkreactnative.FplinkReactNative
override fun onCreate() {
super.onCreate()
FplinkReactNative.initialize(
this, "YOUR_APP_ID", "YOUR_MOBILE_APP_API_KEY"
)
}
3단계: 딥링크 수신 (React Native)
JavaScript에서 딥링크 콜백을 등록합니다:
import { Fplink } from 'fplink-react-native';
useEffect(() => {
Fplink.setOnDeeplinkReceived((linkData) => {
// linkData.link → 딥링크 URL
// linkData.schemeUrl → 커스텀 스킴 URL
if (linkData?.link) {
navigation.navigate('Product', { url: linkData.link });
}
});
}, []);
4단계: 네이티브 딥링크 트래킹
딥링크 유입을 SDK에 전달하려면 네이티브 코드에서 트래킹 메서드를 호출해야 합니다.
iOS — AppDelegate.swift
// Universal Links
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
FplinkReactNative.trackDeeplink(continue: userActivity)
return true
}
// URL Scheme
func application(_ app: UIApplication,
open url: URL,
options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
FplinkReactNative.trackDeeplink(open: url)
return true
}
Android — MainActivity.kt
import kr.co.nicekjm.fplinkreactnative.FplinkReactNative
override fun onResume() {
super.onResume()
FplinkReactNative.trackDeeplink(intent)
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
setIntent(intent)
}
5단계: 디퍼드 딥링크
React Native SDK에서는 디퍼드 딥링크가 자동으로 setOnDeeplinkReceived 콜백을 통해 전달됩니다. 별도의 추가 코드가 필요 없습니다.
하이브리드 앱 (WebView) 연동
웹뷰 기반 하이브리드 앱에서는 click 함수를 사용하여 딥링크 URL을 처리할 수 있습니다.
iOS (WKWebView)
func webView(_ webView: WKWebView,
decidePolicyFor navigationAction: WKNavigationAction,
decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if let url = navigationAction.request.url {
Fplink.instance().click(
url: url,
onSuccess: { linkData in
// 딥링크 처리
},
onFailure: { error in
// 일반 URL로 처리
}
)
}
decisionHandler(.allow)
}
Android (WebView)
Fplink.click(url,
onSuccess = { linkData ->
// 딥링크 처리
},
onFailure = { error ->
// 일반 URL로 처리
}
)
React Native (WebView)
onShouldStartLoadWithRequest={(request) => {
Fplink.click(request.url, (linkData) => {
// 딥링크 처리
});
return true;
}}
퍼널 추적과 이벤트
SDK 연동 후 FINGERPUSH.LINK 콘솔에서 다음 퍼널을 확인할 수 있습니다:
| 퍼널 단계 | 추적 방식 | 필요 조건 |
|---|---|---|
| ① 노출 | 자동 (링크 생성) | — |
| ② 클릭 | 자동 (리다이렉트) | — |
| ③ 앱 설치 | SDK 자동 감지 | SDK 연동 |
| ④ 첫 실행 | SDK 초기화 시 자동 | SDK 연동 |
| ⑤ 딥링크 도착 | handleDeeplink 콜백 | SDK 연동 |
| ⑥ 디퍼드 딥링크 | handleDeferredDeeplink | SDK 연동 |
| ⑦ 전환 이벤트 | Web SDK / 서버 연동 | 추가 설정 |
| ⑧ 재방문 | 세션 추적 | SDK 연동 |
SDK의 딥링크 처리와 함께 Web SDK를 병행하면 웹 페이지의 사용자 행동(가입, 구매 등)까지 하나의 세션으로 연결하여 전체 퍼널을 완성할 수 있습니다. 자세한 내용은 개발자 문서를 참고하세요.
크로스플랫폼 세션 연결
SDK의 핵심 가치는 웹 세션과 앱 세션을 하나로 연결하는 것입니다.
- 사용자가 웹에서 링크를 클릭하면 세션 ID가 생성됩니다
- 앱을 설치하고 열면, SDK가 디퍼드 딥링크에서 세션 ID를 수신합니다
- 앱 내 이벤트가 같은 세션 ID로 기록됩니다
- 콘솔에서 웹 클릭 → 앱 설치 → 앱 구매를 하나의 여정으로 볼 수 있습니다
연동 체크리스트
☐ SDK 설치 (iOS: xcframework / Android: Gradle / RN: npm)
☐ SDK 초기화 코드 추가 (AppDelegate / Application)
☐ 딥링크 콜백 등록 및 수신 처리
☐ 디퍼드 딥링크 핸들러 추가
☐ iOS: RunScript + Associated Domains 설정
☐ Android: AndroidManifest.xml 인텐트 필터 추가
☐ 테스트: 링크 클릭 → 앱 실행 → 딥링크 도착 확인
☐ 테스트: 미설치 상태 → 스토어 설치 → 디퍼드 딥링크 확인
Pro 플랜 이상에서 모바일 앱 등록, 딥링크 및 SDK API를 사용할 수 있습니다. 콘솔에서 앱을 등록하고 API Key를 발급받으세요.
👉 무료 가입 후 업그레이드
이 글도 읽어보세요
MCP로 AI가 단축 URL을 직접 만든다 — Claude·VS Code Copilot 연동 가이드
MCP(Model Context Protocol)를 통해 Claude, VS Code Copilot 같은 AI가 FINGERPUSH.LINK에서 단축 URL을 자동 생성하고 통계를 조회하는 방법을 설명합니다.
인스타그램 광고 링크, 클릭률 높이는 3가지 설정법
인스타그램 광고·스토리·프로필 링크의 클릭률을 높이는 실전 팁. 단축 URL + UTM 추적 + OG 미리보기 설정까지 한 번에.
내 서비스에 단축 URL 기능 직접 넣기 — 스크립트 한 줄로 임베딩하는 방법
쇼핑몰·블로그·관리자 페이지에 단축 URL 생성 기능을 직접 넣고 싶다면? fplink-shorturl-plugin.js 스크립트 한 줄로 서버 개발 없이 임베딩할 수 있습니다.