-
Notifications
You must be signed in to change notification settings - Fork 0
딥링크 푸시 관련
jinsang edited this page Aug 29, 2023
·
2 revisions
- 에이스카운터는 트래킹 링크를 생성하는 기능을 제공하지 않습니다.
- 과거 딥링크, 유니버셜 링크, 앱링크 제작 방법은 각 플랫폼 가이드 참조 바랍니다.
- 에이스카운터는 마케팅 코드를 제공해 딥링크로 앱 실행 또는 포그라운드 됐을때 SDK 가 함께 실행되면서 마케팅 코드를 NHN DATA 에이스카운터 서버로 전송합니다.
- SDK 전송 후
분석통계 > 마케팅효과 > 앱마케팅
에서 약 40분정도 분석 간격뒤에 확인 가능합니다. -
설정 > 캠페인 > 앱마케팅
에서추가
완료된 마케팅 코드에 대해서만 분석통계 화면에서 확인 가능합니다.
- SDK 전송 후
- 다음 연동 예제에서 딥링크 수신을 위해 "react-native": "0.71.10" 를 사용했습니다.
static send(value: ACParams, callback: (error?: object, result?: ACEResponseToCaller) => void): void;
static send(value: ACParams): Promise<ACEResponseToCaller>;
-
ACParams.init(type: ParamType, value?: string)
: 이벤트 정보 전송에 사용되는 static 메서드- type: 이벤트 종류
- 딥링크의 경우:
ACParams.TYPE.DEEPLINK
- 딥링크의 경우:
- type: 이벤트 종류
- params.keyword: http GET URL 형태의 파라미터를 기대하며, 최소
?
또는&
로 시작하는 query param 을 key, value 파싱합니다. (필수)- 보안을 이유로 또는 이미 동일한
key
를 사용중인 경우 앱에서 딥링크 수신 후 더미로 URL 포맷으로 생성 후 마케팅 코드를kw
키의 값으로 설정 해주셔도 됩니다. - 예를 들어
-
https://aceapp.acecounter.com/com.rnfornhndata?kw=00008E
링크가 클릭 될 경우 - 위 링크 문자열을 SDK가
params.keyword
로 전달받아decodeURIComponent
로 1회 디코딩 합니다. - query parmas 영역에서 에이스카운터의 마케팅 코드 key인
kw
키와 값00008E
을/를 파싱해 NHN DATA 에이스카운터 서버로 전송합니다.
-
- 아래 예제코드를 참고 해주세요.
- 보안을 이유로 또는 이미 동일한
import { Linking } from 'react-native'
import { ACParams, ACS } from 'acecounter.sdk.react-native'
useEffect(() => {
// 백그라운드 상태에서 딥링크
const onLinkingEvent = async (event: { url: string }) => {
if (event.url) {
const params = ACParams.init(ACParams.TYPE.DEEPLINK)
params.keyword = event.url == null ? undefined : event.url
ACS.send(params)
.then((response) => {
if (response) {
console.log('response: ' + JSON.stringify(response))
}
console.log('success sdk send')
})
.catch((err) => {
if (err) {
console.log('err: ' + JSON.stringify(err))
}
})
}
}
Linking.addEventListener('url', onLinkingEvent)
const getUrlAsync = async () => {
// 포그라운드 상태에서 딥링크
const initialUrl = await Linking.getInitialURL()
console.log(`딥링크 확인::initialUrl: >>${initialUrl}<<`)
const params = ACParams.init(ACParams.TYPE.DEEPLINK)
params.keyword = initialUrl == null ? undefined : initialUrl
ACS.send(params)
.then((response) => {
if (response) {
console.log('response: ' + JSON.stringify(response))
}
console.log('success sdk send')
})
.catch((err) => {
if (err) {
console.log('err: ' + JSON.stringify(err))
}
})
}
getUrlAsync()
}, [])
- 푸시 기능을 먼저 구현하시고, SDK를 연동합니다.
- 앱이 완전 종료, 앱이 켜진 상황, 앱이 백그라운드된 상황에서도 아래 예제와 같이 API를 실행할 수 있도록 수정합니다.
-
대시보드 > 설정(왼쪽 사이드 메뉴) > 캠페인 > 앱푸시
에서 캠페인 추가 후 코드보기로"kw" : "00000X"
와 같이 확인할 수 있습니다.- SDK 내부에서는
{ [key: string]: string }
타입인RemoteMessage.data?
속성에서kw
키의 값을 추출해 NHN DATA 에이스카운터 서버로 전송합니다.
- SDK 내부에서는
- 다음 연동 예제에서 푸시를 수신하기 위해 "@react-native-firebase/messaging": "^14.5.0" 를 사용했습니다.
static send(value: ACParams, callback: (error?: object, result?: ACEResponseToCaller) => void): void;
static send(value: ACParams): Promise<ACEResponseToCaller>;
-
ACParams.init(type: ParamType, value?: string)
: 이벤트 정보 전송에 사용되는 static 메서드- type: 이벤트 종류
- 푸시의 경우:
ACParams.TYPE.PUSH
- 푸시의 경우:
- type: 이벤트 종류
- params.data:
{ [key: string]: string }
타입으로 FCM push 기능의RemoteMessage.data?
속성과 동일합니다.- 아래 예제코드를 참고 해주세요.
- params.push: FCM 외에 임의로 사용하는 푸시 기능에서 타입문제가 있으실 경우
kw
key 값을 직접 추출해string
타입으로 설정 가능합니다.-
params.push
파라미터가params.data
보다 우선순위가 높습니다. -
params.push
파라미터가 존재할 경우params.data
를 사용하지 않습니다.
-
import messaging, {
FirebaseMessagingTypes,
} from '@react-native-firebase/messaging'
import { ACParams, ACS } from 'acecounter.sdk.react-native'
...(중략)...
const params = ACParams.init(ACParams.TYPE.PUSH)
params.data = remoteMessage.data
ACS.send(params)
.then((response) => {
if (response) {
console.log('response: ' + JSON.stringify(response))
}
console.log('success sdk send')
})
.catch((err) => {
if (err) {
console.log('err: ' + JSON.stringify(err))
}
})
import messaging, {
FirebaseMessagingTypes,
} from '@react-native-firebase/messaging'
import { ACParams, ACS } from 'acecounter.sdk.react-native'
...(중략)...
const params = ACParams.init(ACParams.TYPE.PUSH)
// params.data 를 사용하지 않고 params.push 에 kw 값 평문 그대로 입력합니다.
params.push = '00000X'
ACS.send(params)
.then((response) => {
if (response) {
console.log('response: ' + JSON.stringify(response))
}
console.log('success sdk send')
})
.catch((err) => {
if (err) {
console.log('err: ' + JSON.stringify(err))
}
})
- Install Referrer 기능을 먼저 구현하시고, SDK를 연동합니다.
-
https://play.google.com/store/apps/details?id=com.myapp&referrer=my_install_referrer
와 같이 referrer URL 을 사용해 앱을 설치 할 경우- SDK 내부에서는
string
타입인my_install_referrer
을decodeURIComponent(my_install_referrer)
와 같이 1회 디코딩 후kw
키의 값을 추출해 NHN DATA 에이스카운터 서버로 전송합니다. - 예)
https://play.google.com/store/apps/details?id=고객앱&referrer=kw%3D0000XX
- SDK 내부에서는
-
대시보드 > 설정(왼쪽 사이드 메뉴) > 캠페인 > 앱마케팅
에서 캠페인 추가 후 코드보기로gc=YOUR_ACECOUNTER_GCODE&kw=0000XX
와 같이 확인할 수 있습니다. - 다음 연동 예제에서 Referrer 수신을 위해 "react-native-device-info": "^8.4.9" 를 사용했습니다.
static send(value: ACParams, callback: (error?: object, result?: ACEResponseToCaller) => void): void;
static send(value: ACParams): Promise<ACEResponseToCaller>;
-
ACParams.init(type: ParamType, value?: string)
: 이벤트 정보 전송에 사용되는 static 메서드- type: 이벤트 종류
- Referrer의 경우:
ACParams.TYPE.REFERRER
- Referrer의 경우:
- type: 이벤트 종류
- params.keyword:
kw=00008E
또는kw%3D00008E
와 같은 포맷을 기대합니다. (필수)
import DeviceInfo from 'react-native-device-info'
import { ACParams, ACS } from 'acecounter.sdk.react-native'
...(중략)...
if (Platform.OS === 'android') {
DeviceInfo.getInstallReferrer()
.then((installReferrer) => {
const params = ACParams.init(ACParams.TYPE.REFERRER)
params.keyword = installReferrer
ACS.send(params)
.then((response) => {
if (response) {
console.log('response: ' + JSON.stringify(response))
}
console.log('success sdk send')
})
.catch((err) => {
if (err) {
console.log('err: ' + JSON.stringify(err))
}
})
})
.catch((e) => {
console.log(`installReferrer::e: ${JSON.stringify(e)}`)
})
}