# Android API Reference

{% hint style="info" %}
라이브러리 3.8.0 기준으로 설명되어 있습니다.
{% endhint %}

## checkPush

* 기능\
  푸시 메시지 번호와 모드를 변수로 사용하여 핑거푸시를 통해 전송된 푸시 메시지를 읽음 처리합니다.&#x20;

{% hint style="info" %}
푸시 메시지 아이디, 모드, 라벨 코드는 푸시 수신 클래스의 onMessage 메소드 내 Bundle에서 가져올 수 있습니다.
{% endhint %}

{% hint style="info" %}
파라미터에 대해서는 [핑거푸시 Android SDK 매뉴얼 > SDK 적용하기](/app-push/sdk-manual/android.md#sdk-1)'의 3) IntentService 클래스 생성' 항목을 참고 바랍니다.
{% endhint %}

* 변수\
  String message\_id : 푸시 메시지 번호

  String mode : 푸시 메시지 모드

  String label\_code : 푸시 메시지 라벨코드

  ObjectListener listener : ObjectListener 리스너
* 결과\
  결과 여부에 따라 onError 또는 onComplete로 결과 값 리턴

{% code title="구조" %}

```java
FingerPushManager.getInstance(context).checkPush(
    String, // 푸시 메시지 번호
    String, // 푸시 메시지 모드
    String, // 푸시 메시지 라벨 코드
    new ObjectListener() {} // 비동기 이벤트 리스너
);
```

{% endcode %}

{% code title="예제" %}

```java
FingerPushManager.getInstance(this).checkPush(
    message_id, // 푸시 메시지 번호
    mode,       // 푸시 메시지 모드
    label_code, // 푸시 메시지 라벨 코드
    new ObjectListener() { // 비동기 이벤트 리스너
 
        @Override
        public void onComplete(String code, String message, JSONObject data) {
                 
        }
             
        @Override
        public void onError(String code, String message) {
                 
        }
 
    }
);
```

{% endcode %}

## getAllTag

* 기능 \
  전체 태그 목록을 조회합니다.
* 변수\
  ObjectListener listener : ObjectListener 리스너
* 결과\
  결과 여부에 따라 onError 또는 onComplete로 결과 값 리턴

  JSONObject data : 앱 전체 태그 값

{% code title="구조" %}

```java
FingerPushManager.getInstance(context).getAllTag(
    new ObjectListener() {}; // 비동기 이벤트 리스너
);
```

{% endcode %}

{% code title="예제" %}

```java
FingerPushManager.getInstance(this).getAllTag(
    new ObjectListener() { // 비동기 이벤트 리스너
         
        @Override
        public void onError(String code, String message) {
                 
        }
             
        @Override
        public void onComplete(String code, String message, JSONObject data) {
            try {
                JSONArray ArrayData = data.getJSONArray(TagList.TAGLIST);
                if(ArrayData.length() > 0) {
                    ArrayList<TagList> dataList = new ArrayList<TagList>();
                    TagList list = null;    
                    for (int i = 0; i < ArrayData.length(); i++) {
                        list = new TagList();
                        list.date = ArrayData.getJSONObject(i).optString("date");
                        list.tag = ArrayData.getJSONObject(i).optString("tag");
                        dataList.add(list);
                    }
                }
            } catch(JSONException e) {
                e.printStackTrace();
            }
        }
             
    }
);
```

{% endcode %}

{% code title="결과" %}

```
date : 등록일
tag : 태그명
```

{% endcode %}

## getAppReport

* 기능

  핑거푸시에 등록된 앱의 모든 정보를 조회합니다.
* 변수

  ObjectListener listener : ObjectListener 리스너
* 결과

  결과 여부에 따라 onError 또는 onComplete로 결과 값 리턴

  JSONObject data : 앱의 모든 정보

{% code title="구조" %}

```java
FingerPushManager.getInstance(context).getAppReport(
    new ObjectListener() {} // 비동기 이벤트 리스너
);
```

{% endcode %}

{% code title="예제" %}

```java
FingerPushManager.getInstance(this).getAppReport(
    new ObjectListener() { // 비동기 이벤트 리스너
         
        @Override
        public void onError(String code, String message) {
                 
        }
             
        @Override
        public void onComplete(String code, String message, JSONObject data) {
            String AppKey = data.optString("appid");
            String AppName = data.optString("app_name");
            String User_Id = data.optString("user_id");
            String Icon = data.optString("icon");
            String Category = data.optString("category");
            String Environments = data.optString("environments");
            String BeAndroid = data.optString("beandroid");
            String VersionName = data.optString("android_version");
            int VersionCode = data.optInt("android_int_version");
            String AndroidUpdateLink = data.optString("android_upd_link");
            String BeUpdateLink = data.optString("beupdalert_a");
            String UpdateDate = data.optString("ver_update_date_a");
        }
 
    }
);
```

{% endcode %}

{% code title="결과" %}

```
appid : 앱 아이디
app_name : 앱 이름
user_id : 앱 등록자 아이디
icon 앱 아이콘
category : 앱 카테고리명
environments : 앱 구동 환경
beandroid : ANDROID 기기 지원여부(Y/N)
android_version : ANDROID 버전 네임
android_int_version : ANDROID 버전 코드
android_upd_link : ANDROID 업데이트 링크
beupdalert_a : 안드로이드 강제 업데이트 여부(Y/N)
ver_update_date_a : 버전 업데이트 날짜
```

{% endcode %}

## getAttatchedImageURL

{% hint style="info" %}
getPushContent()에서 ‘ObjectListener()’ 리스너를 사용하여 콜백된 JSONObject를 변수에 넣어야 합니다.
{% endhint %}

* 기능

  핑거푸시 메시지 수신 시, 첨부된 이미지를 가져옵니다.
* 변수

  JSONObject data : getPushContent에서 얻는 data

  NetworkBitmapListener listener : NetworkBitmapListener 리스너
* 결과

  결과 여부에 따라 onError 또는 onComplete로 결과 값 리턴

  Bitmap bitmap : 첨부된 이미지

{% code title="구조" %}

```java
FingerPushManager.getInstance(context).getAttatchedImageURL(
    JsonObject, // 푸시 내용을 담고 있는 JsonObject
    new NetworkBitmapListener() {}
);
```

{% endcode %}

{% code title="예제" %}

```java
FingerPushManager.getInstance(context).getAttatchedImageURL(
    JSONObject ObjectData, 
    new NetworkBitmapListener() {
     
        @Override
        public void onError(String code, String message) {
                 
        }
     
        @Override
        public void onComplete(String code, String message, Bitmap bitmap) {
                 
        }
 
    }
);
```

{% endcode %}

{% code title="결과" %}

```
appid : 앱 아이디
device_type : 디바이스 타입(I : IOS, A : ANDROID)
activity : 푸시 수신 활성화 상태(A : 활성화, D : 비활성화)
ad_activity : 광고 푸시 수신 활성화 상태(A : 활성화, D : 비활성화)
identity : 식별자(Server To Server 에서 사용)
timezone : 타임존
os_version : 디바이스 OS 버전 코드
country : 국가명
version_code : 앱 버전 코드
version_name : 앱 버전 명
```

{% endcode %}

## getDeviceInfo

* 기능\
  핑거푸시 서버에 등록된 키 값, 디바이스 타입, 수신 여부, 식별자 값을 조회합니다.
* 변수\
  |ObjectListener listener : ObjectListener 리스너
* 결과\
  결과 여부에 따라 onError 또는 onComplete로 결과 값 리턴

  JSONObject ObjectData : 키 값, 디바이스 타입, 수신 여부, 식별자 값 데이터

{% code title="구조" %}

```java
FingerPushManager.getInstance(context).getDeviceInfo(
    new ObjectListener() {} // 비동기 이벤트 리스너
);
```

{% endcode %}

{% code title="예제" %}

```java
FingerPushManager.getInstance(this).getDeviceInfo(
    new ObjectListener() { // 비동기 이벤트 리스너
             
        @Override
        public void onError(String code, String message) {
                 
        }
             
        @Override
        public void onComplete(String code, String message, JSONObject ObjectData) {
            String appkey = ObjectData.optString(DeviceInfo.APPKEY);
            String device_type = ObjectData.optString(DeviceInfo.DEVICE_TYPE);
            String activity = ObjectData.optString(DeviceInfo.ACTIVITY);
            String ad_activity = ObjectData.optString(DeviceInfo.AD_ACTIVITY);
            String identity = ObjectData.optString(DeviceInfo.IDENTITY);
            String timezone = ObjectData.optString(DeviceInfo.TIMEZONE);
            String country = ObjectData.optString(DeviceInfo.COUNTRY);
            String version_code = ObjectData.optString(DeviceInfo.VERCODE);
            String version_name = ObjectData.optString(DeviceInfo.VERNAME);
            String os_version = ObjectData.optString(DeviceInfo.OSVER);
 
        }
             
    }
);
```

{% endcode %}

{% code title="결과" %}

```
appid : 앱 아이디
device_type : 디바이스 타입(I : IOS, A : ANDROID)
activity : 푸시 수신 활성화 상태(A : 활성화, D : 비활성화)
ad_activity : 광고 푸시 수신 활성화 상태(A : 활성화, D : 비활성화)
identity : 식별자(Server To Server 에서 사용)
timezone : 타임존
os_version : 디바이스 OS 버전 코드
country : 국가명
version_code : 앱 버전 코드
version_name : 앱 버전 명
```

{% endcode %}

## getDeviceTag

* 기능\
  디바이스에 등록된 태그 값을 조회합니다.
* 변수\
  ObjectListener listener : ObjectListener 리스너
* 결과\
  결과 여부에 따라 onError 또는 onComplete로 결과 값 리턴

  JSONObject data : 디바이스에 등록된 태그 값

{% code title="구조" %}

```java
FingerPushManager.getInstance(context).getDeviceTag(
    new ObjectListener() {} // 비동기 이벤트 리스너
);
```

{% endcode %}

{% code title="예제" %}

```java
FingerPushManager.getInstance(this).getDeviceTag(
    new ObjectListener() { // 비동기 이벤트 리스너
             
        @Override
        public void onError(String code, String message) {
                 
        }
             
        @Override
        public void onComplete(String code, String message, JSONObject data) {
            JSONArray ArrayData = data.getJSONArray(TagList.TAGLIST);
            ArrayList<TagList> dataList = new ArrayList<TagList>();
            TagList list = null;
            for (int i = 0; i < ArrayData.length(); i++) {
                list = new TagList();
                list.date = ArrayData.getJSONObject(i).optString("date");
                list.tag = ArrayData.getJSONObject(i).optString("tag");
     
                dataList.add(list);
            }
        }
 
    }
);
```

{% endcode %}

{% code title="결과" %}

```java
{"total":2,
"tagList":
[{
    date = "2014-08-14 16:35:11.0";            //등록일
    tag = tag2;                                //태그명
},
{
    date = "2014-08-14 16:35:06.0";            //등록일
    tag = tag1;                                //태그명
}]}
```

{% endcode %}

## getPushContent

* 기능\
  푸시 메시지 번호와 모드를 변수로 사용하여 핑거푸시를 통해 수신된 메시지 내용을 조회합니다.
* 변수\
  String tag : 푸시 메시지 번호

  String mode : 푸시 메시지 모드

  ObjectListener listener : ObjectListener 리스너
* 결과\
  결과 여부에 따라 onError 또는 onComplete로 결과 값 리턴

  JSONObject object : 메시지 상세 내용

{% code title="구조" %}

```java
FingerPushManager.getInstance(context).getPushContent(
    String, // 푸시 메시지 번호
    String, // 푸시 메시지 모드
    new ObjectListener() {} // 비동기 이벤트 리스너
);
```

{% endcode %}

{% code title="예제" %}

```java
FingerPushManager.getInstance(this).getPushContent(
    tag, // 푸시 메시지 번호
    mode, // 푸시 메시지 모드 
    new ObjectListener() { // 비동기 이벤트 리스너
         
        @Override
        public void onError(String code, String message) {
                 
        }
             
        @Override
        public void onComplete(String code, String message, JSONObject object) {
            String Tag = object.optString("msgTag");
            String Date = object.optString("date");
            String Title = object.optString("title");
            String Content = object.optString("content");
            String Type = object.optString("type");
            String imgUrl = object.optString("imgUrl");
            String Link = object.optString("link");
            String Mode = object.optString("mode");
            String Custom1 = object.optString("k1"); // 푸시 발송 시 입력한 additional key
            String Custom2 = object.optString("k2"); // 푸시 발송 시 입력한 additional key
            String Custom3 = object.optString("k3"); // 푸시 발송 시 입력한 additional key
            String LNGT = object.optString("lngt_message");
        }
 
    }
);
```

{% endcode %}

{% code title="결과" %}

```
imgUrl : 보낸 이미지 url
content : 메세지 내용
title : 메세지 제목
link : 링크
lngt_message : 롱 텍스트 메세지
date : 메세지 보낸 날짜
msgTag : 메세지 고유 태그
mode : 메세지 모드(DEFT : 일반 서버, LNGT : 롱 푸시, STOS : 타겟 푸시)
cd1 : 커스텀 데이터1
cd2 : 커스텀 데이터2
cd3 : 커스텀 데이터3
```

{% endcode %}

## getPushList

* 기능\
  핑거푸시를 통해 수신된 메시지 리스트를 조회합니다.
* 변수\
  ObjectListener listener : ObjectListener 리스너
* 결과\
  결과 여부에 따라 onError 또는 onComplete로 결과 값 리턴

  JSONObject object : 수신 리스트 데이터

{% code title="구조" %}

```java
FingerPushManager.getInstance(context).getPushList(
    new ObjectListener() {} // 비동기 이벤트 리스너
);
```

{% endcode %}

{% code title="예제" %}

```java
FingerPushManager.getInstance(this).getPushList(
    new ObjectListener() { // 비동기 이벤트 리스너
             
        @Override
        public void onError(String code, String message) {
             
        }
         
        @Override
        public void onComplete(String code, String message, JSONObject object) {
            JSONArray jsonArray = object.getJSONArray(PushList.PUSHLIST);
 
            for (int i = 0; i < jsonArray.length(); i++) {
                String msgTag = jsonArray.getJSONObject(i).optString(PushList.MSGTAG);
                String date = jsonArray.getJSONObject(i).optString(PushList.DATE);
                String title = jsonArray.getJSONObject(i).optString(PushList.TITLE);
                String content = jsonArray.getJSONObject(i).optString(PushList.CONTENT);
                String opend = jsonArray.getJSONObject(i).optString(PushList.OPENED);
                String mode = jsonArray.getJSONObject(i).optString(PushList.MODE);
                String imgCheck = jsonArray.getJSONObject(i).optString(PushList.IMGCHECK);
                String imgUrl = jsonArray.getJSONObject(i).optString(PushList.IMGURL);
                String labelCode = jsonArray.getJSONObject(i).optString(PushList.LABELCODE);
                String link = jsonArray.getJSONObject(i).optString(PushList.LINK);
                String customKeyCheck = jsonArray.getJSONObject(i).optString(PushList.CODE);
                // ※ 커스텀 데이터가 있을 경우만 노출
                /*
                String customValue1 = jsonArray.getJSONObject(i).optString("custom_key_1");
                String customValue2 = jsonArray.getJSONObject(i).optString("custom_key_2");
                String customValue3 = jsonArray.getJSONObject(i).optString("custom_key_3");
                */
            }
        }
             
    }
);
```

{% endcode %}

{% code title="결과" %}

```
msgTag : 메세지 고유 태그
date : 메세지 보낸 날짜
title : 메세지 제목
content : 메세지 내용
opened : 메세지 수신 확인 여부(Y/N)
mode : 메세지 모드(DEFT : 일반 서버, LNGT : 롱 푸시, STOS : 타겟 푸시)
image_yn : 이미지 첨부 여부(Y/N)
imgUrl : 이미지 url
lcode : 메세지 라벨 코드
link : 웹 링크
customKeyCheck : 커스텀 데이터 사용 여부(Y/N)
※ 커스텀 데이터가 있을 경우만 노출
custom_key_1 : custom_value_1
custom_key_2 : custom_value_2
custom_key_3 : custom_value_3
```

{% endcode %}

## getPushListPage

* 기능\
  핑거푸시를 통해 수신된 메시지 리스트를 페이징 처리하여 조회합니다.
* 변수\
  int page : 현재 페이지 번호

  int listcnt : 한번에 조회할 컨텐츠 수

  ObjectListener listener : ObjectListener 리스너
* 결과\
  결과 여부에 따라 onError 또는 onComplete로 결과 값 리턴

  JSONObject object : 수신 리스트 데이터

{% code title="구조" %}

```java
FingerPushManager.getInstance(context).getPushListPage(
    int, // 현재 페이지 번호
    int, // 한번에 조회할(한 페이지) 컨텐츠 수
    new ObjectListener() {} // 비동기 이벤트 리스너
);
```

{% endcode %}

{% code title="예제" %}

```java
FingerPushManager.getInstance(this).getPushListPage(
    1, // 현재 페이지 번호
    5, // 한번에 조회할 컨텐츠 수
    new ObjectListener() { // 비동기 이벤트 리스너
             
        @Override
        public void onError(String code, String message) {
                 
        }
             
        @Override
        public void onComplete(String code, String message, JSONObject object) {
            JSONArray jsonArray = object.getJSONArray(PushList.PUSHLIST);
 
            for (int i = 0; i < jsonArray.length(); i++) {
                String msgTag = jsonArray.getJSONObject(i).optString(PushList.MSGTAG);
                String date = jsonArray.getJSONObject(i).optString(PushList.DATE);
                String title = jsonArray.getJSONObject(i).optString(PushList.TITLE);
                String content = jsonArray.getJSONObject(i).optString(PushList.CONTENT);
                String opend = jsonArray.getJSONObject(i).optString(PushList.OPENED);
                String mode = jsonArray.getJSONObject(i).optString(PushList.MODE);
                String imgCheck = jsonArray.getJSONObject(i).optString(PushList.IMGCHECK);
                String imgUrl = jsonArray.getJSONObject(i).optString(PushList.IMGURL);
                String labelCode = jsonArray.getJSONObject(i).optString(PushList.LABELCODE);
                String link = jsonArray.getJSONObject(i).optString(PushList.LINK);
                String customKeyCheck = jsonArray.getJSONObject(i).optString(PushList.CODE);
                // ※ 커스텀 데이터가 있을 경우만 노출
                /*
                String customValue1 = jsonArray.getJSONObject(i).optString("custom_key_1");
                String customValue2 = jsonArray.getJSONObject(i).optString("custom_key_2");
                String customValue3 = jsonArray.getJSONObject(i).optString("custom_key_3");
                */
            }
        }
             
    }
);
```

{% endcode %}

{% code title="결과" %}

```
msgTag : 메세지 고유 태그
date : 메세지 보낸 날짜
title : 메세지 제목
content : 메세지 내용
opened : 메세지 수신 확인 여부(Y/N)
mode : 메세지 모드(DEFT : 일반 서버, LNGT : 롱 푸시, STOS : 타겟 푸시)
image_yn : 이미지 첨부 여부(Y/N)
imgUrl : 이미지 url
lcode : 메세지 라벨 코드
link : 웹 링크
customKeyCheck : 커스텀 데이터 사용 여부(Y/N)
※ 커스텀 데이터가 있을 경우만 노출
custom_key_1 : custom_value_1
custom_key_2 : custom_value_2
custom_key_3 : custom_value_3
```

{% endcode %}

## ObjectListener

핑거푸시 서버에 비동기로 결과값을 리턴 받는 인터페이스입니다.

{% code title="설명" %}

```java
public interface ObjectListener {
     
    // json 통신에 성공했을 경우, 호출 됨, 반환 형태는 JSONObject임
    public void onComplete(
        String code,       // 결과 코드
            String message,    // 결과 메세지
            JSONObject  data); // 결과 데이터 
     
        // json 통신에 성공하지 못했을 경우, 호출 됨
     public void onError(
            String code,     // 에러 코드
            String message); // 에러 메세지
     
}
```

{% endcode %}

{% code title="예제" %}

```java
new ObjectListener() {
         
    @Override
    public void onError(String code, String message) {
             
    }
         
    @Override
    public void onComplete(String code, String message, JSONObject data) {
 
    }
 
}
```

{% endcode %}

## NetworkBitmapListener

핑거푸시 서버에 비동기로 결과값을 리턴 받는 인터페이스입니다.

{% code title="설명" %}

```java
public interface NetworkBitmapListener {
     
        // json 통신에 성공했을 경우, 호출 됨
        public void onComplete(
            String code,                                   // 결과 코드
            String resultMessage,                          // 결과 메시지
            Bitmap bitmap, // 데이터가 있는 경우, 데이터셋); // 푸시 이미지
     
        // json 통신에 성공하지 못했을 경우, 호출 됨
        public void onError(
            String code,              // 결과 코드
            String errorMessage);     // 결과 메시지
     
    }
```

{% endcode %}

{% code title="예제" %}

```java
new NetworkBitmapListener() {
         
    @Override
    public void onError(String code, String message) {
 
    }
         
    @Override
    public void onComplete(String code, String message, Bitmap bitmap) {
 
    }
 
}
```

{% endcode %}

## removeIdentity

* 기능\
  핑거푸시 서버에 등록된 식별자 값을 삭제합니다.
* 변수\
  ObjectListener listener : ObjectListener 리스너
* 결과\
  결과 여부에 따라 onError 또는 onComplete로 결과 값 리턴

{% code title="구조" %}

```java
FingerPushManager.getInstance(context).removeIdentity(
    new ObjectListener() {} // 비동기 이벤트 리스너
);
```

{% endcode %}

{% code title="예제" %}

```java
FingerPushManager.getInstance(this).removeIdentity(
    new ObjectListener() { // 비동기 이벤트 리스너
         
        @Override
        public void onError(String code, String message) {
                 
        }
             
        @Override
        public void onComplete(String code, String message, JSONObject ObjectData) {
                 
        }
             
    }
);
```

{% endcode %}

## removeTag

* 기능\
  바이스에 등록된 태그를 삭제합니다.
* 변수\
  String tag : 태그 값

  ObjectListener listener : ObjectListener 리스너
* 결과\
  결과 여부에 따라 onError 또는 onComplete로 결과 값 리턴

{% code title="구조" %}

```java
FingerPushManager.getInstance(this).removeTag(
    String, // 태그 값(kissoft, fingerpush)와 같이 콤마로 구분하여 입력
    new ObjectListener() {} // 비동기 이벤트 리스너
);
```

{% endcode %}

{% code title="예제" %}

```java
FingerPushManager.getInstance(this).removeTag(
    "핑거푸시", // 태그값
    new ObjectListener() { // 비동기 이벤트 리스너
             
        @Override
        public void onError(String code, String message) {
                 
        }
             
        @Override
        public void onComplete(String code, String message, JSONObject data) {
                 
        }
             
    }
);
```

{% endcode %}

## setDevice

* 기능\
  핑거푸시 서버에 기기 토큰 값을 저장합니다.
* 변수\
  ObjectListener listener : ObjectListener 리스너
* 결과\
  결과 여부에 따라 onError 또는 onComplete로 결과 값 리턴

{% code title="구조" %}

```java
FingerPushManager.getInstance(context).setDevice(
    new ObjectListener() {} // 비동기 이벤트 리스너
);
```

{% endcode %}

{% code title="예제" %}

```java
FingerPushManager.getInstance(this).setDevice(
    new ObjectListener() { // 비동기 이벤트 리스너
             
        @Override
        public void onError(String code, String message) {
             
        }
             
        @Override
        public void onComplete(String code, String message, JSONObject data) {
                 
        }
 
    }
);
```

{% endcode %}

## setIdentity

{% hint style="danger" %} <mark style="color:red;">setUniqueIdentity를 사용하다 setIdentity로 변경하시면 타켓팅 푸시 수신이 정상적으로 안될 수 있습니다.</mark>
{% endhint %}

{% hint style="info" %}
식별자 값은 50byte 이하로 설정하시는 걸 권장합니다.
{% endhint %}

* 기능\
  핑거푸시 서버에 식별자 값을 등록합니다.
* 변수\
  String Identity : 식별자 값

  ObjectListener : ObjectListener리스너
* 결과\
  결과 여부에 따라 onError 또는 onComplete로 결과 값 리턴

{% code title="설명" %}

```java
FingerPushManager.getInstance(context).setIdentity(
    String, // 식별자 값으로 Application 개발자가 임의 지정하여 사용한다. 예) 유저 아이디, 이메일 등
    new ObjectListener() {} // 비동기 이벤트 리스너
);
```

{% endcode %}

{% code title="예제" %}

```java
FingerPushManager.getInstance(this).setIdentity(
    "핑거푸시",  // 식별자 값
    new ObjectListener() { // 비동기 이벤트 리스너
             
        @Override
        public void onError(String code, String message) {
                 
        }
             
        @Override
        public void onComplete(String code, String message, JSONObject ObjectData) {
                 
        }
             
    }
);
```

{% endcode %}

## setUniqueIdentity

{% hint style="info" %}
SDK 3.0.8 이상 버전에서 사용 가능합니다.
{% endhint %}

{% hint style="danger" %} <mark style="color:red;">setIdentity를 사용하다 setUniqueIdentity로 변경하시면 타켓팅 푸시 수신이 정상적으로 안될 수 있습니다.</mark>
{% endhint %}

{% hint style="info" %}
식별자 값은 50byte 이하로 설정하시는 걸 권장합니다.
{% endhint %}

* 기능\
  핑거푸시 서버에 고유 식별자 값을 등록합니다.
* 변수\
  String uniqueIdentity : 고유 식별자 값 (다른 단말기에 등록된 식별자는 삭제됨)

  boolean isReceiveMessage : 기존에 등록된 식별자(삭제될 단말기)에 메시지(삭제안내) 발송 여부

  String message : 기존에 등록된 식별자(삭제될 단말기)에 메시지(삭제안내) 내용

  ObjectListener : ObjectListener리스너
* 결과\
  결과 여부에 따라 onError 또는 onComplete로 결과 값 리턴

{% code title="구조" %}

```java
FingerPushManager.getInstance(context).setUniqueIdentity(
    String, // 고유 식별자 값으로 Application 개발자가 임의 지정하여 사용한다. 예) 유저 아이디, 이메일 등
    boolean,// 동일 식별자에 대해 메시지 발송 여부. 
    String, // 식별자 값이 삭제되는 단말기에 전송되는 메시지 내용. Default : 다른 기기에서 식별자가 설정 되었습니다.
    new ObjectListener() {} // 비동기 이벤트 리스너
);
```

{% endcode %}

{% code title="예제" %}

```java
FingerPushManager.getInstance(this).setUniqueIdentity(
    "핑거푸시",                  // 고유 식별자 값
    true/false,                // 동일 식별자에 대해 메시지 발송 여부
    "다른 기기에서 식별자를 설정함",  // 식별자 값이 삭제되는 단말기에 전송되는 메시지 내용
    new ObjectListener() { // 비동기 이벤트 리스너
             
        @Override
        public void onError(String code, String message) {
                 
        }
             
        @Override
        public void onComplete(String code, String message, JSONObject ObjectData) {
                 
        }
             
    }
);
```

{% endcode %}

## setPushEnable

* 기능\
  핑거푸시 수신 여부를 설정합니다.
* 변수\
  boolean isEnable : 수신 활성화 true, 비활성화 false

  ObjectListener listener : ObjectListener 리스너
* 결과\
  결과 여부에 따라 onError 또는 onComplete로 결과 값 리턴

{% code title="구조" %}

```java
FingerPushManager.getInstance(context).setPushEnable(
    boolean, // 푸시 활성화 여부 (true : 활성화, false : 비활성화)
    new ObjectListener() {} // 비동기 이벤트 리스너 
);
```

{% endcode %}

{% code title="예제" %}

```java
FingerPushManager.getInstance(this).setPushEnable(
    true, // 푸시 활성화 여부 (true : 활성화, false : 비활성화)
    new ObjectListener() { // 비동기 이벤트 리스너 
             
        @Override
        public void onError(String code, String message) {
                 
        }
             
        @Override
        public void onComplete(String code, String message, JSONObject data) {
                 
        }
             
    }
);
```

{% endcode %}

## setAdvertisePushEnable

{% hint style="warning" %}
푸시 수신(setPushEnable) 여부가 활성화된 상태에서만 광고 푸시가 수신됩니다.
{% endhint %}

* 기능\
  광고 수신 여부를 설정합니다.
* 변수\
  boolean isEnable : 수신 활성화 true, 비활성화 false

  ObjectListener listener : ObjectListener 리스너
* 결과\
  결과 여부에 따라 onError 또는 onComplete로 결과 값 리턴

{% code title="구조" %}

```java
FingerPushManager.getInstance(context).setAdvertisePushEnable(
    boolean, // 광고 푸시 활성화 여부 (true : 활성화, false : 비활성화)
    new ObjectListener() {} // 비동기 이벤트 리스너 
);
```

{% endcode %}

{% code title="예제" %}

```java
FingerPushManager.getInstance(this).setAdvertisePushEnable(
    true, // 광고 푸시 활성화 여부 (true : 활성화, false : 비활성화)
    new ObjectListener() { // 비동기 이벤트 리스너 
             
        @Override
        public void onError(String code, String message) {
                 
        }
             
        @Override
        public void onComplete(String code, String message, JSONObject data) {
                 
        }
             
    }
);
```

{% endcode %}

## initTag

* 기능\
  핑거푸시 서버에 태그로 설정합니다.\
  빈 값 또는 null 입력 시 설정된 모든 태그를 제거합니다.
* 변수\
  String tag : 태그 값

  ObjectListener listener : ObjectListener 리스너
* 결과\
  결과 여부에 따라 onError 또는 onComplete로 결과 값 리턴

{% code title="구조" %}

```java
FingerPushManager.getInstance(context).initTag(
    String, // 태그값(Kissoft, FingerPush)와 같이 콤마로 구분하여 입력 
    new ObjectListener() {} // 비동기 이벤트 리스너
);
```

{% endcode %}

{% code title="예제" %}

```java
FingerPushManager.getInstance(this).initTag(
    "핑거푸시", // 태그값
    new ObjectListener() { // 비동기 이벤트 리스너
             
        @Override
        public void onError(String code, String message) {
                 
        }
             
        @Override
        public void onComplete(String code, String message, JSONObject data) {
                 
        }
             
    }
);
```

{% endcode %}

## addTag

* 기능\
  핑거푸시 서버에 태그를 추가합니다.
* 변수\
  String tag : 태그 값

  ObjectListener listener : ObjectListener 리스너
* 결과\
  결과 여부에 따라 onError 또는 onComplete로 결과 값 리턴

{% code title="구조" %}

```java
FingerPushManager.getInstance(context).addTag(
    String, // 태그값(Kissoft, FingerPush)와 같이 콤마로 구분하여 입력 
    new ObjectListener() {} // 비동기 이벤트 리스너
);
```

{% endcode %}

{% code title="예제" %}

```java
FingerPushManager.getInstance(this).addTag(
    "핑거푸시", // 태그값
    new ObjectListener() { // 비동기 이벤트 리스너
             
        @Override
        public void onError(String code, String message) {
                 
        }
             
        @Override
        public void onComplete(String code, String message, JSONObject data) {
                 
        }
             
    }
);
```

{% endcode %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.fingerpush.com/app-push/api-reference/android.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
