구매 패턴에 따라 유저를 타게팅 기능은 탭조이 SDK에서 제공하는 강력한 기능 중 하나입니다. 예를 들어, 결제를 하지 않는 사용자들에게 광고 캠페인을 보여줄 수 있고 결제를 많이 하는 사용자를 대상으로 인앱 결제 이벤트를 진행할 수 있습니다. 이 기능을 이용하려면 사용자의 결제 정보를 Tapjoy.trackPurchase API를 통해 탭조이에 전달해야 합니다. 이를 통해 앱에서 일어나는 모든 구매 활동을 누락 없이 트래킹할 수 있습니다.
Android에서 영수증 검증과 함께 구매 트래킹을 이용하려면, '설정 > 앱 설정 > 분석 > 영수증 검증' 항목에서 애플리케이션의 안드로이드 라이선스 키를 입력해야합니다.
어플리케이션의 라이센스 키를 얻는 방법은 Licensing section of the Google Services Documentation 문서를 참조해 주세요.
다음은 요청은 영수증 검증으로 구매를 트래킹하는데 사용됩니다.
Tapjoy.trackPurchase(skuDetails, purchaseData, dataSignature, campaignID);
다음은 IAP 트래킹 예제입니다. 영수증 검증을 통한 IAP 트래킹의 경우 영수증 데이터가 있는 구매만 트래킹해야합니다.
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d(TAG, "onActivity Result Code : " + resultCode);
if (requestCode == REQUEST_CODE_PURCHASE) {
String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA");
String dataSignature = data.getStringExtra("INAPP_DATA_SIGNATURE");
// get receipt here.
if (resultCode == Activity.RESULT_OK) {
try {
JSONObject purchaseDataJson = new JSONObject(purchaseData);
String productId = purchaseDataJson.getString("productId");
// getSkuDetails
ArrayList skuList = new ArrayList<> ();
skuList.add(productId);
Bundle querySkus = new Bundle();
querySkus.putStringArrayList("ITEM_ID_LIST", skuList);
Bundle skuDetails = mService.getSkuDetails(3, getActivity().getPackageName(), "inapp", querySkus);
ArrayList responseList = skuDetails.getStringArrayList("DETAILS_LIST");
// Remove empty purchase data and signatures
if(purchaseData.isEmpty() || purchaseData == null)
purchaseData = "Empty_Purchase_Data";
if(dataSignature.isEmpty() || dataSignature == null)
dataSignature = "Empty_Data_Signature"
//Track the purchase
Tapjoy.trackPurchase(responseList.get(0), purchaseData, dataSignature, null);
//네 번째 파라미터를 설정하는 경우 캠페인 ID를 지정할 수 있습니다.
} catch (JSONException e) {
e.printStackTrace();
} catch (NullPointerException e){
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
}
}
}
Currency codes는 ISO 4217 standard 형식입니다.
구매 트래킹 연동이 완료되면 대시보드에서 다음 "IAP Revenue" 등의 지표를 확인할 수 있습니다.
com.android.installreferrer : installreferrer
종속성 추가onCreate ()
메소드에서 Tapjoy.activateInstallReferrerClient(context);
를 호출합니다.InstallReferrerStateListener
를 구현하는 클래스를 만듭니다.com.android.installreferrer : installreferrer
종속성 추가onInstallReferrerSetupFinished
콜백에서 :
Tapjoy.setInstallReferrer (context, referrer);
를 호출합니다. 이 메서드는 앱 설치 시점에 한 번만 호출해야합니다.public class EasyAppInstallReferrer implements InstallReferrerStateListener {
private Context referrerContext;
private InstallReferrerClient mReferrerClient;
private String TAG = "Tapjoy Install Referrer";
private SharedPreferences prefs;
public void init(Context context) {
try {
mReferrerClient = InstallReferrerClient.newBuilder(context).build();
} catch (Exception e) {
Log.w(TAG, e.getMessage());
}
/*
* Google 문서의 참고 사항 : 앱을 다시 설치하지 않는 한 설치 참조 정보는 90 일 동안 사용할 수 있습니다.
* 앱에서 불필요한 API 호출을 방지하려면 설치 후 처음 실행할때 API를 한 번만 호출해야합니다.
*/
prefs = context.getSharedPreferences("TapjoyEasyAppReferrer", Context.MODE_PRIVATE);
if(!prefs.getBoolean("didSetUpTapjoyInstallReferrer", false)) {
mReferrerClient.startConnection(this);
}
referrerContext = context;
}
@Override
public void onInstallReferrerSetupFinished(int responseCode) {
switch (responseCode) {
case InstallReferrerClient.InstallReferrerResponse.OK:
try {
getReferrer();
mReferrerClient.endConnection();
} catch (RemoteException e) {
TapjoyLog.e(TAG, e.getMessage());
} catch (Exception e) {
TapjoyLog.e(TAG, e.getMessage());
}
break;
case InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED:
// 현재 Play 스토어 앱에서 API를 사용할 수 없는 경우
break;
case InstallReferrerClient.InstallReferrerResponse.SERVICE_UNAVAILABLE:
// 연결 실패
break;
}
}
@Override
public void onInstallReferrerServiceDisconnected() {
// init 호출을 통해 startConnection() 메서드를 호출하여 Google Play에 연결을 다시 시도합니다.
if (referrerContext != null) {
init(referrerContext);
}
}
private void getReferrer() throws RemoteException {
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("didSetUpTapjoyInstallReferrer", true);
editor.apply();
ReferrerDetails referrerDetails = mReferrerClient.getInstallReferrer();
String referrer = referrerDetails.getInstallReferrer();
Tapjoy.setInstallReferrer(referrerContext, referrer);
}
}
구매 트래킹 사용시 구매 영수증 검증 기능(Google Play receipt validation)이 추가된 구매 분석 함수를 사용하시길 바랍니다. 이 과정을 거치지 않을 경우 부정요청 시도에 인해 지표가 오염될 수 있으며 그 경우 분석 뿐만 아니라 광고 타케팅에 사용되는 유저 세그먼트 기능에도 부정적인 영향을 줄 수 있습니다.