# Cordova 플러그인 사용자 정의

## 포그라운드에서의 푸시 알림

백그라운드에서 푸시를 수신할 때, 푸시 알림을 클릭할 때까지 이벤트가 트리거되지 않습니다. 알림이 열리면 Pushwoosh 플러그인은 `push-receive` 및 `push-notification` 이벤트를 발생시킵니다.

포그라운드에서 푸시가 수신되면 플러그인은 자동으로 `push-receive`를 발생시키고 알림 센터에 알림을 생성합니다. 이 알림이 열리면 `push-notification`이 발생합니다.

`push-receive` 이벤트를 수신하여 포그라운드에서 푸시가 수신된 경우 즉시 반응할 수 있습니다(예: 앱의 현재 페이지 콘텐츠 업데이트). 반면에 `push-notification`은 사용자 상호작용이 필요한 알림 클릭 이벤트에 반응하는 데 사용됩니다(예: 앱 내 탐색, 앱에서 새 프로세스 트리거 등).

푸시 알림 포그라운드 모양을 변경하려면 **IOS\_FOREGROUND\_ALERT\_TYPE** 및 **ANDROID\_FOREGROUND\_PUSH** 환경 설정을 사용할 수 있습니다:

**IOS\_FOREGROUND\_ALERT\_TYPE**

*   `NONE` – 앱이 포그라운드에 있을 때 알림을 표시하지 않음 (기본값)
*   `BANNER` – 배너 인앱 알림 표시
*   `ALERT` – 경고 알림

**ANDROID\_FOREGROUND\_PUSH**

*   `true` – 포그라운드 푸시를 자동으로 처리하지 않음
*   `false` – 포그라운드 푸시를 자동으로 처리함 (기본값)

예시:

```
cordova plugin add pushwoosh-cordova-plugin --variable IOS_FOREGROUND_ALERT_TYPE="ALERT" --variable ANDROID_FOREGROUND_PUSH="true"
```

## 사용자 정의 푸시 사운드

Android에서 사용자 정의 알림 사운드를 활성화하려면 사운드 파일을 **www/res** 폴더에 배치하고 `config.xml`에서 각 사운드를 지정하십시오:

```txt
<?xml version=‘1.0’ encoding=‘utf-8’?>
<widget id="YOUR_ID" version="1.0.0" xmlns="http://www.w3.org/ns/widgets” xmlns:cdv=“http://cordova.apache.org/ns/1.0">
	...
    <platform name="android">
        <allow-intent href="market:*" />
		...
        <-- Add this line for each sound -->
        <resource-file src="www/res/push.wav" target="res/raw/push.wav" />
    </platform>
</widget>
```

사운드는 **Send Push** 패널의 **Sound** 드롭다운 메뉴에서 액세스할 수 있습니다.

iOS에서는 사운드 파일이 아직 Pushwoosh 애플리케이션과 자동으로 연결되지 않지만, 수동으로 사용할 수 있습니다(예: `www/res/sound_name.wav`).

<Aside type="caution">
#### iOS

iOS 알림은 .aiff, .wav 및 .caf 파일 형식만 지원합니다.
</Aside>

## 사용자 정의 푸시 아이콘

푸시 알림 아이콘은 Android에서 로컬로 해당 아이콘의 리소스 이름으로 `pw_notification`을 사용하여 사용자 정의할 수 있으며(샘플 [1](https://github.com/Pushwoosh/pushwoosh-phonegap-cordova-sample/blob/master/Cordova/hooks/after\_platform\_add/2\_set\_notification\_icon.js) [2](https://github.com/Pushwoosh/pushwoosh-phonegap-cordova-sample/tree/master/Cordova/config/android/res) 참조), 또는 **Send Push** 패널의 **Icon** 설정에서 리소스 이름을 참조하여 원격으로 사용자 정의할 수 있습니다.

## 사용자 정의 푸시 데이터

사용자 정의 푸시 데이터는 **Send Push** 패널의 **Action** 설정을 사용하여 보낼 수 있습니다. 이러한 데이터를 수신하고 처리하려면 다음 코드를 사용하십시오:

```javascript
document.addEventListener('push-notification',
  function(event) {
    var message = event.notification.message; // Push message
    var userData = event.notification.userdata; // Custom push data

    if (userData) {
      // handle custom push data here
    }
  }
);
```

## 로그 레벨 제어

디버깅 및 통합을 지원하기 위해 SDK는 기본적으로 모든 요청을 콘솔에 출력합니다. 프로덕션 빌드를 준비할 때 `LOG_LEVEL` 변수를 다음 값 중 하나로 설정하십시오:

*   `NONE` – SDK에서 로그 없음
*   `ERROR` – 콘솔에 오류만 표시
*   `WARNING` – 경고 표시
*   `INFO` – 정보 메시지 표시
*   `DEBUG` – 디버그 정보를 포함한 모든 것 표시 (기본값)

예시:

```
cordova plugin add pushwoosh-cordova-plugin --variable LOG_LEVEL="INFO"
```

## 딥 링킹

[https://github.com/EddyVerbruggen/Custom-URL-scheme](https://github.com/EddyVerbruggen/Custom-URL-scheme) 사용을 권장합니다.\
Cordova에 대한 딥 링크 설정이 매우 쉬우며, Pushwoosh 딥 링킹 기능과 즉시 연동됩니다.

설치 및 사용법은 [이 가이드](/ko/developer/guides/messaging-channels/deep-linking/) 또는 [플러그인 문서](https://github.com/EddyVerbruggen/Custom-URL-scheme#2-installation)에서 찾을 수 있습니다.

## 리치 미디어 JS 브리지

자바스크립트 인터페이스를 통해 Cordova WebView의 리치 미디어에서 JS 함수를 호출할 수 있습니다.\
리치 미디어에서의 호출은 다음 형식을 따라야 합니다:

\<interface>.callFunction('\<function\_name>', \<params\_string>)

예시:

**1.** 자바스크립트 호출로 리치 미디어를 생성합니다:

```javascript
testBridge.callFunction('testFunction', JSON.stringify({'param1' : 1, 'param2':'test'}))
```

**2.** 프로젝트에 자바스크립트 인터페이스를 추가합니다:

```javascript
pushNotification.addJavaScriptInterface('testBridge');
```

**3.** 함수를 추가합니다:

```javascript
function testFunction(params) {
    alert("Bridge is working! " + params.param1 + " " + params.param2);
}
```

## 다른 FCM 서비스와 Pushwoosh 플러그인 함께 사용하기

앱이 **firebase-messaging**에 의존하는 다른 플러그인을 사용하는 경우, 충돌이 발생하거나 플러그인 중 하나가 예상대로 작동하지 않을 수 있습니다. 이 충돌을 해결하기 위해, 플러그인 간에 푸시 알림을 라우팅하는 사용자 정의 FirebaseMessagingService 클래스를 추가할 수 있습니다. Pushwoosh Cordova 플러그인에는 이 클래스의 템플릿이 포함되어 있으며, 이를 그대로 사용하여 모든 알림이 Pushwoosh 핸들러를 통과하도록 강제하거나, 다른 제공업체의 알림도 처리하도록 수정할 수 있습니다. 템플릿을 활성화하려면 플러그인의 `plugin.xml`에서 다음 줄의 주석을 해제하십시오:

```
    <service android:name="com.pushwoosh.plugin.pushnotifications.CustomFirebaseMessagingService" android:exported="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT"/>
        </intent-filter>
    </service>
```

## 피드백을 공유해주세요

여러분의 피드백은 더 나은 경험을 만드는 데 도움이 됩니다. SDK 통합 과정에서 문제가 발생하면 언제든지 알려주시기 바랍니다. 어려움이 있으시면 주저하지 마시고 [이 양식을 통해](https://docs.google.com/forms/d/e/1FAIpQLSd\_0b8jwn-V\_JmoPLIxIFYbHACCQhrzidOZV3ELywoQPXRSxw/viewform) 의견을 공유해 주세요.