Bläddra i källkod

[주모] 광고 SDK 호출 관련 로직 추가

yeongyun 6 år sedan
förälder
incheckning
43366b5ad7

+ 17 - 17
app/build.gradle

@@ -140,7 +140,7 @@ android {
 }
 
 dependencies {
-    implementation fileTree(dir: 'libs', include: ['*.jar'])
+    implementation fileTree(include: ['*.jar'], dir: 'libs')
     implementation 'com.android.support:appcompat-v7:27.1.1'
     implementation 'com.android.support:exifinterface:27.1.1'
     implementation 'com.android.support:cardview-v7:27.1.1'
@@ -149,13 +149,12 @@ dependencies {
     implementation 'com.android.support.constraint:constraint-layout:1.1.3'
     implementation 'com.android.support:support-v4:27.1.1'
     implementation 'com.android.support:recyclerview-v7:27.1.1'
-    implementation "android.arch.lifecycle:extensions:1.1.1"
-    implementation "android.arch.lifecycle:viewmodel:1.1.1"
+    implementation 'android.arch.lifecycle:extensions:1.1.1'
+    implementation 'android.arch.lifecycle:viewmodel:1.1.1'
     implementation 'com.google.firebase:firebase-messaging:17.5.0'
     implementation 'com.google.firebase:firebase-dynamic-links:16.1.8'
     implementation 'com.google.firebase:firebase-core:16.0.8'
     implementation 'com.google.firebase:firebase-config:16.4.1'
-
     /*********************************
      * External lib
      *********************************/
@@ -165,10 +164,9 @@ dependencies {
     implementation 'com.squareup.okhttp3:logging-interceptor:3.9.0'
     implementation 'com.squareup.retrofit2:retrofit:2.4.0'
     implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
-    implementation('com.squareup.retrofit2:converter-gson:2.3.0')
-            {
-                exclude group: 'com.google.code.gson', module: 'gson'
-            }
+    implementation('com.squareup.retrofit2:converter-gson:2.3.0') {
+        exclude group: 'com.google.code.gson', module: 'gson'
+    }
     implementation 'com.github.bumptech.glide:glide:4.8.0'
     annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'
     implementation 'com.kakao.sdk:kakaolink:1.14.0'
@@ -177,9 +175,8 @@ dependencies {
     implementation 'com.wefika:flowlayout:0.4.1'
     implementation 'com.robinhood.ticker:ticker:2.0.1'
     implementation 'me.everything:overscroll-decor-android:1.0.4'
-//    implementation 'com.squareup.picasso:picasso:2.71828'
-//    implementation 'jp.wasabeef:picasso-transformations:2.2.1'
-
+    //    implementation 'com.squareup.picasso:picasso:2.71828'
+    //    implementation 'jp.wasabeef:picasso-transformations:2.2.1'
     /*********************************
      * UNIT TEST
      *********************************/
@@ -192,20 +189,23 @@ dependencies {
     androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.2'
     androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.3'
     // Mockito
-//    testImplementation "org.mockito:mockito-core:2.21.0"
+    //    testImplementation "org.mockito:mockito-core:2.21.0"
     // Robolectric
     testImplementation 'org.robolectric:robolectric:3.8'
-    testImplementation "org.robolectric:shadows-support-v4:3.3.2"
-    testImplementation "org.robolectric:multidex:3.4.2"
+    testImplementation 'org.robolectric:shadows-support-v4:3.3.2'
+    testImplementation 'org.robolectric:multidex:3.4.2'
     // PowerMock
     testImplementation 'org.powermock:powermock-core:1.7.4'
-    testImplementation "org.powermock:powermock-module-junit4:1.7.4"
-    testImplementation "org.powermock:powermock-api-mockito2:1.7.4"
-
+    testImplementation 'org.powermock:powermock-module-junit4:1.7.4'
+    testImplementation 'org.powermock:powermock-api-mockito2:1.7.4'
     // ZUMO
     implementation 'com.google.android.gms:play-services-auth:16.0.0'
     implementation 'com.kakao.sdk:usermgmt:1.14.0'
     implementation 'com.kakao.sdk:kakaotalk:1.14.0'
     // Naver login sdk
     implementation files('libs/3rdparty_login_library_android_4.1.4.jar')
+    implementation files('libs/buzzad-android-sdk-advertiser-1.0.1.jar')
+    implementation files('libs/cashslide-sdk20170320.jar')
+    implementation files('libs/libNswitchSDK_v1.1.2.jar')
+    implementation files('libs/tnkad-sdk.jar')
 }

BIN
app/libs/buzzad-android-sdk-advertiser-1.0.1.jar


BIN
app/libs/cashslide-sdk20170320.jar


BIN
app/libs/libNswitchSDK_v1.1.2.jar


BIN
app/libs/tnkad-sdk.jar


+ 5 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/activity/SplashActivity.java

@@ -7,6 +7,8 @@ import android.support.v4.app.FragmentActivity;
 import android.util.Log;
 import android.view.View;
 
+import com.buzzvil.buzzad.analytics.BATracker;
+
 import java.util.Arrays;
 
 import kr.co.zumo.app.R;
@@ -47,6 +49,9 @@ public class SplashActivity extends ActivityBaseSetup implements ISplashContract
 
     presenter = new SplashPresenter(new SplashModel(), this);
     presenter.start();
+
+    //Buzz Ad: CPE
+    BATracker.actionCompleted(this);
   }
 
   @Override

+ 19 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/application/App.java

@@ -7,7 +7,11 @@ import android.content.Context;
 import android.support.multidex.MultiDexApplication;
 import android.util.Log;
 
+import com.buzzvil.buzzad.analytics.BATracker;
+import com.tnkfactory.ad.TnkSession;
+
 import kr.co.zumo.app.BuildConfig;
+import kr.co.zumo.app.R;
 import kr.co.zumo.app.lifeplus.supervisor.TypefaceUtil;
 import kr.co.zumo.app.lifeplus.util.AppUtil;
 
@@ -55,6 +59,8 @@ public class App extends MultiDexApplication {
       ", flavor: " + BuildConfig.FLAVOR + ", versionCode: " + BuildConfig.VERSION_CODE + ", versionName: " + BuildConfig.VERSION_NAME);
     Log.i("APP# App | onCreate", "|" + "===============================================================================================");
 
+    initBuzzTracker();
+    initTNK();
   }
 
   /**
@@ -125,4 +131,17 @@ public class App extends MultiDexApplication {
     return countOfActivities < 1 && countOfActivitiesStart < 1 && false == isActivityCalled;
   }
 
+  /**
+   * 버즈트래커 SDK 초기화
+   */
+  private void initBuzzTracker() {
+    BATracker.init(this, getString(R.string.bat_api_key));
+  }
+
+  /**
+   * TNK 실행형 광고
+   */
+  private void initTNK() {
+    TnkSession.applicationStarted(getApplicationContext());
+  }
 }

+ 11 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/helper/FirebaseAnalyticsHelper.java

@@ -361,4 +361,15 @@ public class FirebaseAnalyticsHelper extends Helper {
     log(Event.SHARE, params);
   }
 
+  /**
+   * 신규 회원가입 사용자 로깅
+   *
+   * @param userNo
+   */
+  public void logSignUp(String userNo) {
+    Bundle params = new Bundle();
+    params.putString(FirebaseAnalytics.Param.ITEM_ID, userNo);
+    log(FirebaseAnalytics.Event.SIGN_UP, params);
+  }
+
 }

+ 3 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/zumo/model/SignUpModel.java

@@ -204,6 +204,9 @@ public class SignUpModel extends BaseModel {
 
                 String userNo = resultBean.getUserNo();
 
+                //회원가입 완료 후 광고 상품 SDK 호출하기 위한 이벤트
+                onResult(new Event.Builder(Event.SUCCESS).integer(Event.SET_MEMBER_JOIN).string(userNo).build());
+
                 SuperModel.getInstance().setUserId(userNo);
                 SuperModel.getInstance().setUserEmail(requestBean.getEmail());
                 getMemberInfoByUserNo(userNo);

+ 35 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/zumo/screen/SignUpInfoPresenter.java

@@ -3,6 +3,14 @@ package kr.co.zumo.app.lifeplus.zumo.screen;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 
+import com.google.firebase.analytics.FirebaseAnalytics;
+import com.nasmob.nswitch.sdk.NSWTrackManager;
+import com.nasmob.nswitch.sdk.NSWTracker;
+import com.tnkfactory.ad.TnkSession;
+
+import kr.co.cashslide.Cashslide;
+import kr.co.zumo.app.R;
+import kr.co.zumo.app.lifeplus.helper.FirebaseAnalyticsHelper;
 import kr.co.zumo.app.lifeplus.util.StringUtil;
 import kr.co.zumo.app.lifeplus.view.Event;
 import kr.co.zumo.app.lifeplus.zumo.BasePresenter;
@@ -10,6 +18,8 @@ import kr.co.zumo.app.lifeplus.zumo.bean.UserInfoDeliveryBean;
 import kr.co.zumo.app.lifeplus.zumo.model.SignUpModel;
 import kr.co.zumo.app.lifeplus.zumo.model.SignUpModelHelper;
 
+import static kr.co.zumo.app.lifeplus.util.ResourceUtil.getString;
+
 /**
  * SignUpInfoPresenter
  * 회원가입 부가 정보 입력 화면 프레젠터
@@ -124,6 +134,8 @@ public class SignUpInfoPresenter extends BasePresenter<SignUpModel, SignUpInfoVi
             case Event.SUCCESS:
                 if (event.getInteger() == Event.GET_MEMBER_INFO) {
                     view.signUpCompleted();
+                } else if (event.getInteger() == Event.SET_MEMBER_JOIN) {
+                    callAdCompleted(event.getString());
                 }
                 break;
             case Event.ERROR:
@@ -136,4 +148,27 @@ public class SignUpInfoPresenter extends BasePresenter<SignUpModel, SignUpInfoVi
                 break;
         }
     }
+
+    /**
+     * CPE, CPA 광고상품 호출
+     *
+     * @param userNo
+     */
+    public void callAdCompleted(String userNo) {
+        //Cash slide Ad
+        Cashslide cashslide = new Cashslide(view.getActivity(), getString(R.string.cashslide_api_key));
+        cashslide.appFirstLaunched();
+
+        //TNK Ad
+        TnkSession.actionCompleted(view.getActivity());
+
+        //NSwitch Ad
+        NSWTracker nswTracker = NSWTrackManager.getInstance().getTracker(view.getActivity(), getString(R.string.nswitch_app_id));
+        nswTracker.setTestMode(false);
+        nswTracker.trackConversion("NSW_CONVERSION");
+
+        //Google Ad
+        //TODO: 해당 함수 호출 필요
+//        firebaseAnalyticsHelper.logSignUp(userNo);
+    }
 }

+ 8 - 0
app/src/main/res/values/strings.xml

@@ -929,4 +929,12 @@
   <string name="send_temporary_password">임시 비밀번호를\n메일로 전송하였습니다.</string>
   <!-- zumo -->
 
+  <!-- ad platform keys -->
+  <string name="bat_api_key">490157811283926</string>
+  <string name="cashslide_api_key">g61d5350</string>
+  <string name="tnk_app_id">50e04050-7051-a654-456a-150700010108</string>
+  <string name="nswitch_app_id">41911</string>
+  <string name="nswitch_app_id_manifest">id:41911</string>
+  <!-- ad platform keys -->
+
 </resources>