로딩중입니다
라이브오퍼레이션 연동 : 안드로이드 이클립스
10/23/2017 2:27:49 PM

라이브오퍼레이션 서비스

라이브오퍼레이션 서비스는 앱 사용자를 필터링하여 타겟팅 된 푸시를 발송할 수 있는 타겟푸시 서비스 기능과

사용자에게 알려야할 내용이 있을 때 팝업 형태의 공지창을 이용하여 안내 내용을 노출하는 공지팝업 기능을 제공하는 서비스입니다.

푸시 연동을 통해 앱 운영자는 고도화된 푸시 시스템을 이용하여 운영을 할 수 있으며 , 공지팝업 기능을 통해 진행 중인 이벤트나 신규 기능 출시 등의 안내를 진행할 수 있습니다.

라이브오퍼레이션 서비스 소개나 이용방법 안내는 아래의 아티클을 통해 확인할 수 있습니다.

[라이브오퍼레이션 서비스 소개]


서비스 이용 중 도움이 필요한 경우에는 아래 메일 주소로 연락 부탁 드립니다.

기술 문의 - 기술지원팀 (tech_support@igaworks.com)


주의사항
  1. 라이브오퍼레이션 연동을 위해서는 Google Play Services 연동이 되어 있어야 합니다. [Google Play Services 설정
  2. 라이브오퍼레이션 연동을 위해서는 android-support-v4.jar 최신 버전이 프로젝트에 포함되어 있어야 합니다. (ver26 이상 필요) [Google 가이드]
  3. 이클립스 환경에서의 FCM 사용을 위한 가이드는 준비 중입니다.



SDK 다운로드 및 설치


라이브러리 다운로드

아래 링크를 클릭하여 이클립스 용 라이브오퍼레이션 안드로이드 라이브러리를 다운로드 하고 압축을 해제합니다.

[라이브옵스 이클립스 용 라이브러리]



라이브러리 추가

압축해제한 파일 중 jar 파일들을 프로젝트의 libs 폴더에 복사합니다.


 Caution!!!  안드로이드 8(Oreo) 버전을 지원하기 위해서는 위와 같이 support-v4.26+ 이상의 버전을 사용해 주시기 바랍니다. [Google 가이드]



이미지 리소스 추가

압축 해제한 파일 중 drawble 폴더에 포함된 이미지 파일을 안드로이드 프로젝트의 /res/drawable 폴더로 복사합니다.




안드로이드 매니페스트 설정

라이브오퍼레이션을 이용하기 위한 내용을 AndroidManifest.xml 파일에 추가합니다.


앱키 & 해시키 추가

Igaworks 홈페이지에서 애드브릭스 앱 등록 후 발급받은 앱키, 해시키를 <application></application> 태그 안에 추가합니다.

<application>
...
    <meta-data android:name="igaworks_app_key" android:value="이곳에_앱키를_입력하세요" />
    <meta-data android:name="igaworks_hash_key" android:value="이곳에_해시키를_입력하세요" />
...
</application>



퍼미션 추가

<manifest></manifest> 태그 안에 필수 퍼미션을 추가합니다.

<manifest>
...
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <!-- LiveOps v1.3.6 부터는 필요하지 않습니다. --> 
    <uses-permission android:name="android.permission.GET_TASKS"/>
    <!-- C2DM Permission --> 
    <permission android:name="MY_PACKAGE_NAME.permission.C2D_MESSAGE" android:protectionLevel = "signature"/>
    <uses-permission android:name="MY_PACKAGE_NAME.permission.C2D_MESSAGE"/> 
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
...
</manifest>

+ C2DM 퍼미션 설정의 MY_PACKAGE_NAME 에는 연동 중인 프로젝트의 패키지 네임을 입력합니다.




리시버 추가

       <application></application> 태그 안에 라이브오퍼레이션을 위한 필수 리시버와 서비스를 등록합니다.

<!-- IGAWorks GCM Broadcast Receiver -->
<receiver android:name="com.igaworks.liveops.pushservice.LiveOpsGCMBroadcastReceiver"
    android:permission="com.google.android.c2dm.permission.SEND" >
    <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
        <category android:name="MY_PACKAGE_NAME" />
    </intent-filter>
</receiver>

<!-- IGAWorks Push Service -->
<service android:enabled="true" android:name="com.igaworks.liveops.pushservice.GCMIntentService" />

<!-- Client Push App Receiver -->
<receiver android:name="com.igaworks.liveops.pushservice.LiveOpsReceiver"
    android:permission="MY_PACKAGE_NAME.permission.C2D_MESSAGE">
    <intent-filter>
        <action android:name="com.igaworks.liveops.pushservice.CLIENT_PUSH_RECEIVE"/>
    </intent-filter>
</receiver>

+ 리시버 설정의 MY_PACKAGE_NAME 에는 연동 중인 프로젝트의 패키지 네임을 입력합니다.



구글 플레이 서비스 meta tag 추가

<application></application> 태그 안에 Google Play Services 를 연동하기 위해 meta tag를 추가 합니다.

<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>


OREO 지원 API 추가

<manifest></manifest> 태그 안에 안드로이드 8.0 OREO 버전을 지원 하는 API를 추가합니다.
<uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="26"/>



프로가드 설정

안드로이드 스튜디오의 app/proguard-rules.pro 파일에 애드팝콘 SDK에 대한 난독화 예외설정을 추가합니다.

##---------------Begin: proguard configuration for Igaworks Common  ----------
-keep class com.igaworks.** { *; }
-dontwarn com.igaworks.**
##---------------End: proguard configuration for Igaworks Common   ----------

##---------------Begin: proguard configuration for Gson  ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature

# For using GSON @Expose annotation
-keepattributes *Annotation*

# Gson specific classes
-keep class sun.misc.Unsafe { *; }
-keep class com.igaworks.gson.stream.** { *; }

# Application classes that will be serialized/deserialized over Gson
-keep class com.igaworks.adbrix.model.** { *; }

##---------------End: proguard configuration for Gson  ----------

 Caution!!!  이클립스 프로젝트의 경우에는 Project/proguard-project.txt 파일을 수정합니다.



기본 연동

세션 트래킹 : 자동

애드브릭스에서 제공하는 기본 분석을 위한 연동입니다.
연동하는 앱이 안드로이드 4.0.4 이상만을 지원한다면 autoSessionTracking 을 사용하여 세션 트래킹을 합니다.

AndroidManifest.xml에 아래의 내용을 추가하여 autoSessionTracking 기능을 활성화합니다.
<application
    android:name="com.igaworks.IgawDefaultApplication"
    ... 중략 ...
>
</application>

자체 application 클래스를 사용하고 있는 경우
아래 예시와 같이 이미 application 클래스를 사용하고 있는 경우에는 application class의 onCreate()에 autoSessionTracking api를 추가합니다.
<!-- AndroidManifest.xml -->
<application
    android:name="PACKAGE_NAME.YourCustomApplication"
    ... 중략 ...
>
</application>
/* YourCustomApplication.java */
public class YourCustomApplication extends Application{
    @Override
    public void onCreate(){
        super.onCreate();
        IgawCommon.autoSessionTracking(YourCustomApplication.this);
        // 어플리케이션 클래스에서는 autoSessionTracking API 외의 어떤 애드브릭스 API도 호출해서는 안됩니다.
    }
}
 Caution!!!  Application 클래스에서는 autoSessionTracking API 외 어떠한 애드브릭스 분석용 API도 호출해서는 안됩니다.
 Caution!!!  autoSessionTracking 은 서비스 형태로 동작하는 앱의 경우에는 적용을 하지 않습니다.


세션 트래킹 : 수동

애드브릭스에서 제공하는 기본 분석을 위한 연동입니다.
연동하는 앱이 안드로이드 4.0.4 이하까지 지원을 하거나 수동으로 세션 트래킹을 하고자 할때에 startSession, endSession api를 이용하여 연동을 합니다.
@Override
protected void onResume() {
    super.onResume();
    IgawCommon.startSession(MainActivity.this);
}

@Override
protected void onPause() {
    super.onPause();
    IgawCommon.endSession();
}
 Caution!!!  startSessionendSession은 반드시 짝을 이루어 호출되도록 연동하여야 합니다.
 Caution!!!  앱이 시작되는 액티비티에는 반드시 startSessionendSession이 연동되어야 합니다.
 Caution!!!  고급분석 api를 연동한 액티비티에는 반드시 startSessionendSession이 연동되어야 합니다.
 Caution!!!  processKill 을 사용하여 앱 종료를 처리하는 방식에서는 [APPENDIX : ProcessKill 사용 시 session 처리] 를 참고하여 endSession을 처리합니다.



푸시 연동 : 서버 푸시

SDK 초기화

라이브오퍼레이션을 이용하기 위해 앱의 메인 액티비티에서 아래 API를 이용하여 기본 연동를 진행합니다.
이 연동이 완료되면 서버 푸시의 이용이 가능하며, 푸시 오픈에 대한 트래킹이 가능합니다.

    • IgawCommon.setUserId(String userId);
    • IgawLiveOps.initialize(Context context);
    • IgawLiveOps.resume(Context context);
public class MainActivity extends Activity {
	 
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
 
		//반드시 유저식별값을 설정해야 합니다.
		IgawCommon.setUserId(MainActivity.this,"user10001");		
		// 라이브오퍼레이션 SDK를 초기화 합니다.
		IgawLiveOps.initialize(MainActivity.this);		
	}
 
	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		IgawLiveOps.resume(MainActivity.this);
	}
}
+ 라이브오퍼레이션 서비스는 푸시를 오픈 했을 때, 안드로이드 매니페스트에 Launcher로 등록된 액티비티를 실행합니다.
+ setUserId API를 이용하여 반드시 유저식별값을 등록해야 푸시 발송 대상에 포함됩니다.
+ 한글,공백,특수문자 등을 유저 식별값으로 사용하실 경우에 반드시 인코딩을 하여 사용하셔야 합니다.


유저식별값 입력

유저식별값은 라이브오퍼레이션에서 유저를 판단하기 위해 사용되는 정보입니다.


주의 사항

    1. 1명의 유저는 1개의 고유한 유저식별값을 가져야하며, 가변적인 값을 사용해서는 안됩니다.
    2. 개인정보(이메일, 이름, 전화번호, 식별가능한 유저아이디 등)이 포함되어서는 안됩니다.
    3. 한글, 특수문자, 공백 등이 포함된 경우에는 반드시 URL 인코딩 처리를 하여 사용하여야 합니다.
    4. IgawLiveOps.initialize API가 호출되기 전에 설정되어야 합니다.

위 주의사항에 유의하여 유저 식별값을 입력합니다.

IgawCommon.setUserId(getApplicationContext(),"user10001");

  


딥링크 연동 / 서버 푸시

라이브옵스의 서버 푸시에서는 딥링크 기능을 제공합니다.
딥링크 기능은 유저가 푸시를 수신하고 오픈했을 때, 딥링크 데이터에 정의된 액션을 수행하는 것을 가능하게 합니다.

딥링크 데이터는 라이브옵스 관리페이지에서 생성 및 관리하며 3가지 타입으로 등록할 수 있습니다.

종류 형식
URL (Http 타입) http://www.igaworks.com
URL (Custom Scheme 타입) myApp://activity.com
Json 타입 {"key":"value", "igaworks":"sample"}


  • URL (http 타입) 및 Json 

onNewIntent 함수를 오버라이드하여 딥링크 타입에 따라 구현하여 사용합니다.
public class MainActivity extends Activity{ 
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
 
		IgawCommon.setUserId(MainActivity.this"userid_123123123");
		IgawLiveOps.initialize(MainActivity.this);
 
		//onNewIntent 리스너로 intent를 전달합니다.
		onNewIntent(getIntent());
	}
 
	@Override
	protected void onNewIntent(Intent intent) {
		super.onNewIntent(intent);
		/* 딥링크 타입에 따라 아래를 참고하여 구현합니다. */
 
		/* 1. 앱 스키마 타입(myApp://deepLinkAction) 딥링크 구현
		 * 
		 * 딥링크로 전달된 앱스키마 액션을 실행합니다.
		 * IgawLiveOps.onNewIntent(MainActivity.this, intent);
		 */
 
		/* 2. Json 문자열 타입({“url”:”deepLinkAction”}) 딥링크 구현
		 * 
		 * 딥링크로 전달된 Json 문자열을 추출하고 Json 오브젝트로 변환합니다.
		 * String jsonStr = intent.getStringExtra("com.igaworks.liveops.deepLink");
		 * JSONObject jsonObj;
		 * try {
		 *     jsonObj = new JSONObject(jsonStr);
		 *     //Json 오브젝트를 파싱하여 액션을 실행하도록 구현합니다.
		 * } catch (Exception e) {
		 *     // TODO: handle exception
		 * }
		 */
	}
}

  • URL (Custom Scheme 타입)

매니페스트 파일에 IgawLiveOpsPushMessageLauncherActivity 추가합니다. 그리고 푸시 메시지를 클릭했을 때, 오픈될 Activity의 <intent-filter></intent-filter> 태그 안에 scheme과 host를 입력합니다. 만약 Custom Scheme이 myApp://activity.com이라면, scheme에 myApp을 host에 activity.com을 입력합니다.
<!-- IgawLiveOpsPushMessageLauncherActivity 를 추가합니다. -->
<activity 
	android:name="com.igaworks.liveops.pushservice.IgawLiveOpsPushMessageLauncherActivity" 
	android:permission="MY_PACKAGE_NAME.permission.C2D_MESSAGE"
	android:noHistory="true"/> 


<!-- 딥링크를 적용할 Activity에 설정합니다. -->
<activity android:name="com.example.DeeplinkActivity">
	<intent-filter>
	<data android:scheme="myApp" android:host="activity.com" />
		  <action android:name="android.intent.action.VIEW" />
      		  <category android:name="android.intent.category.DEFAULT" />
      		  <category android:name="android.intent.category.BROWSABLE" />
	</intent-filter>            
</activity>
+ MY_PACKAGE_NAME 에는 연동 중인 프로젝트의 패키지 네임을 입력합니다.




푸시 연동 : 클라이언트 푸시

라이브옵스는 클라이언트에서 API를 이용하여 직접 생성하여 사용할 수 있는 클라이언트 푸시 기능을 제공합니다.
일반적으로 클라이언트 푸시는 앱 내에서 미리 지정한 조건에 유저가 일치하였을 때, 푸시를 생성하여 노출합니다.
또한 개발사 서버와 앱 간의 통신이 가능하다면, 서버 이벤트를 캐치하여 푸시를 생성하는 방식으로도 사용할 수 있습니다.

클라이언트 푸시에서는 일반 푸시 빅 텍스트 푸시를 지원합니다.

일반 클라이언트 푸시

일반 클라이언트 푸시는 기본 텍스트로 구성된 푸시입니다.
setNormalClientPushEvent API를 이용하여 푸시 생성 및 노출을 할 수 있습니다.
IgawLiveOps.setNormalClientPushEvent(
	this,			// Application Context
	1,                 	// Delay seconds. 몇 초 뒤에 보낼지 설정
	"Let’s play now!",      // 전송할 메시지
	1,			// Event ID, 취소할 때 쓰기 위한 값.
	false			// 앱이 실행 중일 때에도 보이게 할 것인지 설정
);


빅 텍스트 클라이언트 푸시

빅 텍스트 클라이언트 푸시는 최대 160자(한글,영문 공통)까지의 텍스트를 지원하는 푸시입니다.
또한 안드로이드 앱에서 표현 가능한 html 형식도 지원 합니다.(굵게, 밑줄, 폰트색상)
setBigTextClientPushEvent API를 이용하여 푸시 생성 및 노출을 할 수 있습니다.
IgawLiveOps.setBigTextClientPushEvent(
	this, 				// Application Context
	1, 				// Delay seconds, 몇 초 뒤에 보낼지 설정
	"contentText", 			// contents
	"bigContentTitle", 		// 일반 푸시 내용
	"Let's play now! WoooooooW!!",	// 푸시에 표시될 빅 텍스트
	"summaryText", 			// 푸시에 표시될 요약 텍스트
	1, 				// Event ID, 취소할 때 쓰기 위한 것
	false				// 앱이 실행 중일 때에도 보이게 할 것인지 설정
);
+ 푸시 노출 방식
푸시의 타입과 안드로이드 OS 버전, 푸시 메시지 바의 상태에 따라서 푸시가 노출되는 방식이 달라질 수 있습니다.
자세한 내용은 아래 링크를 확인할 수 있습니다.




푸시 추가 옵션


푸시 유저 타겟팅

유저그룹을 설정하여 타겟푸시의 수신 대상을 직접 선택하실 수 있습니다.
유저 그룹을 설정하기 위한 데이터는 직접 세팅하여 확보할 수 있습니다.


타겟팅 데이터 설정
타겟팅 된 유저에게만 타겟푸시를 전송하기 위해서 커스텀 유저 데이터를 세팅할 수 있습니다.
세팅된 커스텀 유저 데이터는 타겟푸시 관리페이지에서 확인할 수 있습니다. 아래 예시는 구매 횟수를 커스텀 데이터로 수집하는 것입니다.
//IgawLiveOps.setTargetingData(Context applicationContext, final String userCustomDataKey, final Object userCustomData);
IgawLiveOps.setTargetingData(context, "purchaseCount", purchaseCount);
+ customUserData : 타겟팅을 위한 유저 데이터를 입력합니다. bool, int, long, float, String을 지원합니다.
+ customUserDataKey : 유저 커스텀 데이터 키를 설정합니다.


타겟팅 데이터 동기화
resume api 를 호출하여 설정된 타겟팅 데이터를 라이브옵스 서버와 동기화합니다.
액티비티의 onResume()에 아래와 같이 추가합니다.
@Override
protected void onPause() {
    super.onPause();
    IgawLiveOps.resume();
}


타겟팅 데이터 수동 동기화
데이터 동기화를 수동으로 업데이트 하려면, flush api 를 호출하여 설정된 타겟팅 데이터를 라이브옵스 서버와 동기화합니다.
IgawLiveOps.flush(MainActivity.this);


푸시 수신 on/off

전송되는 서버 푸시에 대해서 수신 여부를 설정할 수 있습니다. 일반적으로 유저가 푸시 수신 여부를 설정할 때, API를 호출합니다.
또한 수신 여부 이벤트에 대한 델리게이트를 제공합니다. 이벤트 델리게이트를 이용하여 수신 여부 처리 결과를 처리할 수 있습니다.

푸시 수신 설정
enableService API를 호출하여 사용하며, 파라미터와 사용 예시는 다음과 같습니다.
  • true : 푸시를 수신함.
  • false : 푸시를 수신하지 않음.
IgawLiveOps.enableService(MainActivity.this, true);


푸시 아이콘 이미지 교체

타겟푸시에서 사용하는 푸시 아이콘 이미지는 Launcher Icon으로 등록된 앱 아이콘 이미지를 사용합니다.

구글 피쳐드를 받기 위해 이미지 교체가 필요하신 경우에는 setNotificationIconStyle api를 호출하여 이미지를 교체할 수 있습니다.

//IgawLiveOps.setNotificationIconStyle(Context context, String small_icon_name, String large_icon_name, int argb);
IgawLiveOps.setNotificationIconStyle(getApplicationContext(), "ic_small_filename", "ic_large_filename", 0xFFE90F0F);
IgawLiveOps.initialize api 다음에 호출합니다.
+ 이미지 파일 이름은 이미지 파일 확장자를 뺀, 이름만을 입력합니다.
+ 모든 해상도의 Drawable 폴더에 알맞은 이미지를 모두 추가해야 합니다.


알림 설정

안드로이드 5.0이상에서 헤드업 알림과 잠금 화면 알림을 설정할 수 있습니다.

헤드업 알람은 기기가 활성 상태일 때 알림을 노출하는 기능입니다. 잠금 화면 알람은 알림이 잠금화면에 노출하는 기능입니다.

(더 자세한 내용은 구글 문서를 확인합니다. [구글 문서 확인하기])

setNotificationOption api를 호출하여 헤드업/잠금 화면 알람을 설정합니다.

헤드업 알림 설정 (priority)

    • PRIORITY_MAX (int:2), 헤드업 알림 사용
    • PRIORITY_HIGH (int:1), 헤드업 알림 사용
    • PRIORITY_DEFAULT (int:0), 헤드업 알림 사용하지 않음
    • PRIORITY_LOW (int:-1), 헤드업 알림 사용하지 않음
    • PRIORITY_MIN (int:-2), 헤드업 알림 사용하지 않음

잠금 화면 알림 설정 (visibility)

    • VISIBILITY_SECRET (int:-1), 락스크린 알림 사용하지 않음
    • VISIBILITY_PRIVATE (int:0), 내용을 표시하지 않고 락스크린 알림
    •  VISIBILITY_PUBLIC (int:1), 전체 내용을 락스크린에 알림
// public static void setNotificationOption(Context context, int priority, int visibility)
IgawLiveOps.setNotificationOption(getApplicationContext(), NotificationCompat.PRIORITY_HIGH, NotificationCompat.VISIBILITY_SECRET);
잠금 화면 알림은 유저의 디바이스 설정이 "민감한 내용 숨기기"로 설정되어 있을 경우 동작합니다.
+ 잠금 화면 알람은 락스크린을 사용할 경우, 정상적으로 작동하지 않을 수 있습니다.


알림 요약 (InboxStyle)

여러가지의 알림을 하나의 요약 알림으로 결합합니다. Inbox Style은 서버푸시에서만 작동합니다.
(*클라이언트 푸시의 경우 푸시ID를 알 수 없기 때문에 Inbox Style을 지원하지 않습니다.)

setStackingNotificationOption api를 호출하여 설정합니다.

알림 요약 설정 (useStacking)

    • true : 알림 요약기능을 사용하여 노출합니다.
    • false : 알림 요약기능을 사용하지 않습니다.

요약 알림 노출 설정 (useTitleForStacking)

    • true : 요약된 알람을 펼칠 때, 제목을 노출합니다.
    • false : 요약된 알림을 펼칠 때, 내용을 노출합니다.

요약된 알람의 제목, 내용 설정 (ContentTitle, ContentText)

    • empty :  가장 최근의 알람의 제목과 내용을 노출합니다.
    • your_custom_message : api에 호출한 제목과 내용을 노출합니다.

요약 알림 펼칠 때, 노출 제목 설정 (bigContentTitle)

    • empty ContentTitle을 노출합니다.
    • your_custom_message : api에 호출한 제목을 노출합니다.

요약 알림 펼칠 때, 요약 내용 설정 (bigContentSummaryText)

    • empty : 컨텐츠 요약부분을 사용하지 않습니다.
    • your_custom_message : api에 호출한 내용을 노출합니다.
// public static void setStackingNotificationOption(Context context, boolean useStacking, boolean useTitleForStacking,  String ContentTitle, String ContentText, String bigContentTitle, String bigContentSummaryText)
IgawLiveOps.setStackingNotificationOption(getApplicationContext(), true, false, "More events are waiting for you", "See detail", "All events", "For Summary Text");




공지팝업 연동

공지팝업 서비스를 이용하기 위해서 다음의 단계에 따라서 초기화를 진행합니다.

아래의 초기화 API들은 어플리케이션이 시작되는 시점에서 호출하시는 것을 권장합니다. 

 

유저식별값 입력

유저식별값은 라이브오퍼레이션에서 유저를 판단하기 위해 사용되는 정보입니다.


주의 사항

    1. 1명의 유저는 1개의 고유한 유저식별값을 가져야하며, 가변적인 값을 사용해서는 안됩니다.
    2. 개인정보(이메일, 이름, 전화번호, 식별가능한 유저아이디 등)이 포함되어서는 안됩니다.
    3. 한글, 특수문자, 공백 등이 포함된 경우에는 반드시 URL 인코딩 처리를 하여 사용하여야 합니다.
    4. requestPopupResources API가 호출되기 전에 설정되어야 합니다.

위 주의사항에 유의하여 유저 식별값을 입력합니다.

IgawCommon.setUserId(getApplicationContext(),"user10001");

  

공지팝업 데이터로드 

requestPopupResources api를 호출하여 라이브오퍼레이션 관리페이지에서 설정한 공지팝업 데이터를 로드합니다.

데이터 로드를 진행하기 전에 반드시 유저식별값이 설정되어 있어야 합니다.

주의사항 

    1. 유저식별값이 입력되지 않으면 공지팝업 데이터로드가 불가능합니다.
    2. 라이브오퍼레이션 공지팝업 관리페이지에서 새로운 공지를 추가했어도, 데이터로드가 진행되지 않으면 SDK에서는 새로운 공지를 확인할 수 없습니다.

위 주의사항에 유의하여 공지팝업 데이터를 로드합니다.

//공지팝업 데이터로드
IgawLiveOps.requestPopupResource(mainContext, new LiveOpsPopupResourceEventListener() {
     @Override
     public void onReceiveResource(boolean isReceive) {
         Log.d("liveops", "isReceivePopupResource? :: " + isReceive);
     }
});


공지팝업 노출 API

showPopup api를 호출하여 공지팝업을 노출하고자 하는 시점에서 팝업 형태의 공지를 노출합니다.

공지에 표현되는 내용은 공지팝업 관리페이지에서 설정한 겂이어야 합니다.

아래의 예시는 showPopupNotiBtn 버튼을 클릭했을 때, 공지팝업을 노출하는 것을 가정으로 하여 작성하였습니다.

Button showPopupNotiBtn;
showPopupNotiBtn = (Button)findViewById(R.id.showPopupNotiBtn);
showPopupNotiBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
         //공지팝업을 노출합니다.
         //showPopup(Context context, String popup_spacekey, LiveOpsDeepLinkEventListener listener);
         IgawLiveOps.showPopUp(MainActivity.this, "공지팝업스페이스키", null);
    }
});

+ 공지팝업스페이스키는 공지팝업 관리페이지에서만 발급 받을 수 있습니다.

LiveOpsDeepLinkEventListener 는 공지팝업 딥링크 기능을 사용할 때에만 사용합니다.

 


공지팝업 딥링크

공지팝업의 딥링크 기능을 이용하여 공지팝업을 통해 다양한 액션을 수행하도록 처리할 수 있습니다.

Button showPopupNotiBtn;
showPopupNotiBtn = (Button)findViewById(R.id.showPopupNotiBtn);
showPopupNotiBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        IgawLiveOps.showPopUp(mainContext, "공지팝업스페이스키", new LiveOpsDeepLinkEventListener() {
            @Override
            public void onReceiveDeeplinkData(String deepLinkDataString) {
                Log.d("liveops", "LiveOpsPopUp DeepLinkData :::: " + deepLinkDataString);
                //딥링크 데이터를 이용하여 추가 액션을 수행하도록 구현합니다.
            }
        });
    }
});

+ 공지팝업 스페이스키는 공지팝업 관리페이지에서 발급받을 수 있습니다.

+ 딥링크는 공지팝업 관리페이지에서 등록할 수 있습니다.

+ 딥링크의 형태는 Json 형태를 지원합니다.



공지팝업 유저타겟팅

유저그룹을 설정하여 공지팝업의 노출 대상을 직접 선택하실 수 있습니다.

유저 그룹을 설정하기 위한 데이터는 직접 세팅하여 확보할 수 있습니다.


타겟팅 데이터 설정

타겟팅 된 유저에게만 공지팝업을 노출하기 위해서 커스텀 유저 데이터를 세팅할 수 있습니다.

세팅된 커스텀 유저 데이터는 공지팝업 관리페이지에서 확인할 수 있습니다. 아래 예시는 구매 횟수를 커스텀 데이터로 수집하는 것입니다.

//IgawLiveOps.setTargetingData(Context applicationContext, final String customUserDataKey, final Object customUserData);
IgawLiveOps.setTargetingData(MainActivity.this, "purchaseCount", purchaseCount);

customUserData : 타겟팅을 위한 유저 데이터를 입력합니다. bool, int, long, float, String을 지원합니다.

customUserDataKey : 유저 커스텀 데이터 키를 설정합니다.



타겟팅 데이터 동기화

resume api 를 호출하여 설정된 타겟팅 데이터를 라이브옵스 서버와 동기화합니다.

액티비티의 onResume()에 아래와 같이 추가합니다.

@Override
protected void onResume() {
	super.onResume();

	IgawLiveOps.resume(MainActivity.this);
	//… 이하 생략
}




공지팝업 추가옵션

공지팝업 이벤트 리스너

공지팝업에서 발생하는 클릭 이벤트에 대한 리스너를 제공합니다.

  • onCancelPopupBtnClick : 공지팝업 닫기 이벤트
  • onPopupClick : 공지팝업 클릭 이벤트

setLiveOpsPopupEventListener api를 이용하여 이벤트리스너를 등록하고 구현합니다.

IgawLiveOps.setLiveOpsPopupEventListener(new LiveOpsPopupEventListener() {
	@Override
	public void onCancelPopupBtnClick() {
            // 공지팝업 닫기 버튼 클릭
	}

	@Override
	public void onPopupClick() {
            // 공지팝업 오픈 이벤트
	}
});



공지팝업 강제 종료

유저의 클릭 이벤트 없이 api를 이용하여 동적으로 공지팝업을 종료 처리할 수 있습니다.


현재 공지 팝업 종료

destroyPopup api 를 호출하여 현재 노출되어 있는 최상위 공지 팝업만을 종료 처리합니다.

IgawLiveOps.destroyPopup();


모든 공지 팝업 종료

destroyAllPopups api를 호출하여 현재 노출되어 있는 최상위 공지 팝업 외의 다른 대기 중인 팝업도 모두 종료 처리 합니다.

IgawLiveOps.destroyAllPopups()