# 인앱푸시 App 가이드

{% hint style="info" %}
인앱푸시를 사용하기 위해서는 단말기 등록이 되어야 합니다. 매뉴얼을 참고 바랍니다.
{% endhint %}

{% content-ref url="/pages/KLfbEmWVkBoUfAoLPnS5" %}
[Android SDK 매뉴얼](/app-push/sdk-manual/android.md)
{% endcontent-ref %}

{% content-ref url="/pages/tRNrVxckNIHr8gWnnyy7" %}
[iOS SDK 매뉴얼](/app-push/sdk-manual/ios.md)
{% endcontent-ref %}

{% hint style="warning" %}
태그, 식별자 대상 인앱 메시지 기능을 사용하려면 iOS, Android SDK 3.7.7 이상 버전을 사용해야 합니다.
{% endhint %}

## showInAppPush

* 등록된 모든 메시지를 노출합니다. 메시지 노출 우선 순위는 식별자 > 태그 > 일반 순입니다.

### Android

```java
FingerPushManager.getInstance(Context).showInAppPush(onCampaignClickListener)
```

{% code title="예제" %}

```java
FingerPushManager.getInstance(Context).showInAppPush(new onCampaignClickListener() {

    @Override
    public void onClick(JSONObject jsonObject) {
        Log.i("T", "onClick : " + jsonObject.toString());
    }

    @Override
    public void onFailed() {
        Log.i("T", "onFailed");
    }

    @Override
    public void onNotToday(JSONObject jsonObject) {
        Log.i("T", "onNotToday : " + jsonObject.toString());
    }

    @Override
    public void onClose(JSONObject jsonObject) {
        Log.i("T", "onClose : " + jsonObject.toString());
    }

});
```

{% endcode %}

### iOS

```objectivec
– (void)showInAppPush : (id)viewController closeEvent: (FingerBlock)block;
```

{% code title="Enum 상수 설명" %}

```objectivec
// 인앱 메시지 클릭 시 상태를 나타내는 열거형
typedef enum {
    kInAppOnClick,              // 인앱 메시지 클릭 시
    kInAppNotToday,             // 하루동안 보지않기 버튼 클릭 시
    kInAppClose,                // 닫기 버튼 클릭 시
    kInAppFail,                 // 인앱 메시지 불러오기 실패
} FINGER_IN_APP_CLOSED_EVENT;
```

{% endcode %}

{% code title="예제" %}

```objectivec
[[finger sharedData] showInAppPush:self closeEvent:^(NSDictionary *msg, FINGER_IN_APP_CLOSED_EVENT event, NSError *error) {
        NSLog(@"popupInAppPush ====> \n%@ \n %u %@ ",msg, event,error);
        if(event == kInAppOnClick) {
            // 인앱 메시지 클릭 시 처리
        }
}];
```

{% endcode %}

## showInAppPushDeft

* 등록된 메시지 중 일반, 태그 메시지를 노출합니다. 메시지 노출 우선 순위는 태그 > 일반 순입니다.

### Android

```java
FingerPushManager.getInstance(Context).showInAppPushDeft(onCampaignClickListener)
```

{% code title="예제" %}

```java
FingerPushManager.getInstance(Context).showInAppPushDeft(new onCampaignClickListener() {

    @Override
    public void onClick(JSONObject jsonObject) {
        Log.i("T", "onClick : " + jsonObject.toString());
    }

    @Override
    public void onFailed() {
        Log.i("T", "onFailed");
    }

    @Override
    public void onNotToday(JSONObject jsonObject) {
        Log.i("T", "onNotToday : " + jsonObject.toString());
    }

    @Override
    public void onClose(JSONObject jsonObject) {
        Log.i("T", "onClose : " + jsonObject.toString());
    }

});
```

{% endcode %}

### iOS

```objectivec
– (void)showInAppPushDeft : (id)viewController closeEvent: (FingerBlock)block;
```

{% code title="예제" %}

```objectivec
[[finger sharedData] showInAppPushDeft:self closeEvent:^(NSDictionary *msg, FINGER_IN_APP_CLOSED_EVENT event, NSError *error) {
        NSLog(@"popupInAppPush ====> \n%@ \n %u %@ ",msg, event,error);
        if(event == kInAppOnClick) {
            // 인앱 메시지 클릭 시 처리
        }
}];
```

{% endcode %}

## showInAppPushTarget

* 등록된 메시지 중 Target(식별자) 메시지만 노출합니다.

### Android

```java
FingerPushManager.getInstance(Context).showInAppPushTarget(onCampaignClickListener)
```

{% code title="예제" %}

```java
FingerPushManager.getInstance(Context).showInAppPushTarget(new onCampaignClickListener() {

    @Override
    public void onClick(JSONObject jsonObject) {
        Log.i("T", "onClick : " + jsonObject.toString());
    }

    @Override
    public void onFailed() {
        Log.i("T", "onFailed");
    }

    @Override
    public void onNotToday(JSONObject jsonObject) {
        Log.i("T", "onNotToday : " + jsonObject.toString());
    }

    @Override
    public void onClose(JSONObject jsonObject) {
        Log.i("T", "onClose : " + jsonObject.toString());
    }

});
```

{% endcode %}

### iOS

```objectivec
– (void)showInAppPushTarget : (id)viewController closeEvent: (FingerBlock)block;
```

{% code title="예제" %}

```objectivec
[[finger sharedData] showInAppPushTarget:self closeEvent:^(NSDictionary *msg, FINGER_IN_APP_CLOSED_EVENT event, NSError *error) {
        NSLog(@"popupInAppPush ====> \n%@ \n %u %@ ",msg, event,error);
        if(event == kInAppOnClick) {
            // 인앱 메시지 클릭 시 처리
        }
}];
```

{% endcode %}

## 인앱 메시지 결과 데이터 구조

{% code title="인앱 메시지 데이터" %}

```java
{
    "m_bgcolor":"",
    "m_fontcolor":"",
    "m_img_link":"https:\/\/mi.fingerpush.com\/upload\/push\/20220325\/20220325191728(0).jpeg",
    "m_android_sound":"",
    "c_idx":"4",
    "m_idx":"16",
    "m_msg":"",
    "vmode":"BA",
    "m_title":"cmap2-고기",
    "m_link_url":"http:\/\/m.daum.net",
    "m_ios_sound":"",
    "data1":"aaa",
    "data2":"bbb",
    "data3":"ccc"
}
```

{% 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/sdk-manual/inapp-push.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.
