# 7. 댓글 푸시를 만들고 싶어요.

{% hint style="info" %}
먼저 [푸시 기초 클래스](https://docs.ohmyapp.io/main/class/undefined/2)를 보시면 좋아요.

내가 쓴 글에 댓글, 좋아요 푸시 알람은 패키지를 활용해 보세요!

글 > 그림 순서로 설명했어요.
{% endhint %}

댓글, 좋아요, 조회 등 다양한 정보들이 **데이터 로그, 신고 관리(\_docTimeline)** 메타에 저장돼요.

이 메타를 활용해 푸시 로직을 만들어 볼게요.

먼저 관리자 웹 > 로직 설정에서 푸시 로직을 하나 만들어요.

## If When

* 등록할 때

### Where

* 데이터 로그, 신고 관리(\_docTimeline)

<figure><img src="https://3976660509-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDgfvhQgmY9NbRK0Sln7j%2Fuploads%2FwksgxfnBSLV2QmmXGrag%2Fimage.png?alt=media&#x26;token=12b51288-3438-46ea-af52-a74bb18730d7" alt="" width="324"><figcaption></figcaption></figure>

## Condition

### Data condition

* And 조건 1 *(해설 : 새 댓글의 형식이 댓글일 때)*
  * newDocument.component
  * 같을 때
  * \_reply
* And 조건 2 *(해설 : 새 댓글이 달린 곳이(메타가) 커뮤니티 일 때)*
  * newDocument.collectionName
  * 같을 때
  * community

### New data Query

#### flows

* **query** *(해설 : 새 댓글의 documentId와 데이터 로그, 신고 관리 메타의 \_id와 일치하는 것을 찾기)*
  * 컬렉션 명 : 데이터 로그, 신고 관리(\_docTimeline)
  * 조회 조건
    * And 조건 *(해설 : 새 댓글의 documentId와 같은 ID)*
      * ID
      * 같을 때
      * newDocument.documentId *(해설 : documentId는 댓글이 달린 글의 id)*
* **setValue** *(해설 : query로 가져온 데이터의 첫 번째를 reply라는 키 값에 정의)*
  * reply
  * 원하는 순번의 리스트 데이터를 바인딩
    * 데이터를 추출할 리스트 데이터를 : tmpDocument.findDocument
    * 몇 번째 데이터를 추출하시겠습니까? : 0
* **if** *(해설 : reply라는 데이터가 없으면 참, 데이터가 있으면 거짓으로 예외 처리(=로직 종료))*
  * And 조건
    * Method : 빈 값일 때
    * Key : tmpDocument.reply
  * \#ifTrue&#x20;
  * \#ifFalse&#x20;
    * @returnException&#x20;
      * Message : 답글
      * Code : -1
* **해설**
  * 답글도 \_reply 형식으로 데이터 로그, 신고 관리 (docTimeline) 메타에 저장돼요. 따라서 댓글일 때만 푸시를 보내기 위해 이렇게 설정하는 거에요.

<figure><img src="https://3976660509-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDgfvhQgmY9NbRK0Sln7j%2Fuploads%2FLPfA0zxxZ2QCfFGSQLUf%2Fimage.png?alt=media&#x26;token=3e41b01e-f281-475c-a4cc-d1d388dc3537" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3976660509-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDgfvhQgmY9NbRK0Sln7j%2Fuploads%2FCKNKJAAgEENcsmZN2SvD%2Fimage.png?alt=media&#x26;token=0d8f54d6-49a8-412d-8a7a-162b52167c17" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3976660509-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDgfvhQgmY9NbRK0Sln7j%2Fuploads%2F64SCugUwtfXKon4yttAz%2Fimage.png?alt=media&#x26;token=daa931aa-1f13-4e20-91ff-225e44b9bbe8" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3976660509-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDgfvhQgmY9NbRK0Sln7j%2Fuploads%2FafxBlukGUKOxuZlMrCMB%2Fimage.png?alt=media&#x26;token=e2df24d0-0594-4794-b6cd-e3be7ca190f6" alt=""><figcaption></figcaption></figure>

## Then

푸시 알람을 발송

### To do

* 메시지 제목 ([참고 가이드](https://docs.ohmyapp.io/main/guide/develop_app/command-execute-function/create-logic/flow_option/sendpushnotifications))
* 메시지 내용
* 전송 대상 : 푸시 알람을 받을 유저 \_id
  * parentDocument.\_createUse&#x72;*.\_*&#x69;d *(해설 : parentDocument는 댓글이 달린 글)*
* 메시지 타입 : 푸시를 눌렀을 때 이동할 화면 ([참고 가이드](https://docs.ohmyapp.io/main/guide/faq/logic/6))
  * 아직은 **탭 이동**만 사용할 수 있어요.
  * 앱 푸시를 누르면 앱으로 접속하고 **푸시 히스토리**를 눌렀을 때 탭 이동을 해요.
* 이동할 탭 번호 : 메시지 타입이 **탭 이동**일 때 사용, 0이 첫 번째 탭
* 알람 소리
* Set after event : 후속 로직을 실행할 때 사용

<figure><img src="https://3976660509-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDgfvhQgmY9NbRK0Sln7j%2Fuploads%2FZYFILWbNQij1d14cJICi%2Fimage.png?alt=media&#x26;token=ddac0ec8-abb3-4e2b-b22f-248a8651e943" alt="" width="375"><figcaption></figcaption></figure>

이렇게 댓글 푸시 알람의 기본 틀을 살펴봤어요.

여기서 어떤 메타에서 글이 달렸을 때, 누구한테 푸시를 보낼지만 응용하면 되겠죠?

24.07.17 Jihwan
