팁/튜토리얼

HTML5기반 댓글 알림 모듈

2017.05.04 17:54
4,634
8

제목 없음.png

제목 없음1.png

 

 

 

크롬(삼성 브라우저)에서 페이스북이나 유튜브와 같은 형태의 댓글 알림을 표시해주는 모듈입니다.

웹소켓, SSE를 사용하는게 아닌, 구글 FCM(GCM)을 사용하여 알림을 전송합니다.

사실 파이어폭스에서도 되게 할려고 하였으나 여러가지 걸림돌이 많아서 파이어폭스는 일단 keep 하였습니다.

 

알림이 어떤 형태로 오는지 확인하고 싶으시다면 https://gauntface.github.io/simple-push-demo/ 에서 확인 가능합니다.

 

 

https://github.com/huhani/xe-noti

 

설치 방법

   1. 모듈 파일은 모듈에 복사, manifest.json, service-worker.js파일은 무.조.건. 사이트 최상단 디렉토리에다 복사.

 

   2. https://console.firebase.google.com 에서 서버 키(Server key)와, 발신자 키(Sender ID) 발급. 발급 방법은 https://developers.google.com/web/updates/2015/03/push-notifications-on-the-open-web 참조.


   3. 발급받은 서버 키는 /index.php?module=admin&act=dispNotiAdminConfig 의 "Google FCM API Key"에 입력, 발신자 키는 아까 복사한 사이트 최상위 디렉터리에 있는 manifest.json의 "gcm_sender_id" 항목에다 적기. 그 외 name, short_name 등.. 항목들도 적당히 입력.


   4. /index.php?act=dispNotiDeviceList 들어가서 알림 테스트. 새 단말기가 등록되었다는 메세지가 뜨지 않는다면 위 과정중 하나라도 잘못되었을 가능성이 큼.

 

잘 사용하신다면 깃허브에 별이라도 눌러주시면 매우 감사하겠습니다 ㅠㅠ

 

+ https://github.com/huhani/xe-comment-without-refresh/tree/master/addons/board_extender

해당 애드온도 설치할 것을 권장합니다만, 만약 사용하기 싫으시다면

/noti/noti.controller.php 파일의 cpage_detect 항목을 지워주세요.

 

 

=============

 

P.S.1

  기본적으로 PC에서 알림이 뜬 후 20초 뒤에 자동으로 닫히는데, service-worker.js 파일의 requireInteraction 값들을 true로 해놓는다면 10분이 지나던 1시간이 지나던 자동으로 닫히지 않습니다.

 

P.S.2

  안드로이드에선 브라우저를 닫아도 알림이 옵니다. 모듈 설정에서 "FCM 메세지 우선 순위"를 "높은 우선순위" 로 설정해놓으면 절전 모드에서도 알림이 옵니다. 기본값은 "보통 우선순위"이지만 "높은 우선순위"로 설정할 것을 권장합니다.

 

P.S.3

  안드로이드에선 PC와는 달리 알림이 와도 자동으로 닫히지 않습니다. 알림은 최대 50개까지 쌓이고(현재까진 그렇다만 추후 브라우저 업뎃으로 인해 정책이 바뀐다면 달라 질 수도 있습니다) 그 이후로부턴 아마 알림이 오지 않을겁니다. 알림을 자동으로 닫히게 하고 싶어도 이게 브라우저 버그인가봅니다 ㅠㅠ

 

P.S.4

  모듈 설정의 "자동 로그인시 사용" 사용 설정시 자동 로그인(로그인 유지)을 사용할 경우 자동으로 알림 사용을 유도합니다. 알림 사용중 클라이언트가 로그아웃 할 시, 알림도 자동 해제됩니다.

  하지만 유저가 수동으로 알림사용을 설정하였을 시, 로그아웃하여도 알림 사용 설정은 유지됩니다.

 

P.S.5

  모듈 설정의 "알림 발송 닉네임" 항목은 아직 신경쓸 필요가 없습니다. 현재까진 그저 아무런 가치도 없는 쓰레기 항목일 뿐입니다. 미래에 쓸 일이 있을까봐 만들어는 뒀지만 아마 쓸 일이 없을 것 같습니다.

 

P.S.6

  service-worker.js 파일이 ServiceWorker로 등록이 된 상태인 경우 서버에서 service-worker.js 파일을 수정하여도 반영이 되지 않습니다. 등록된 ServiceWorker를 uninstall 한 뒤, 다시 install한다면 수정된 부분이 반영될 것입니다.

 

P.S.7

  슈퍼 캐시 모듈을 사용하시는 경우 슈퍼 캐시 모듈의 "기타 설정" 탭의 "캐시 예외 쿠키에 "_noti" 를 추가하여 주세요.

댓글 95

  • 2017.05.05 14:57 #587593
    두 사항 추후 고려해보겠습니다 ㅎㅎ
  • 2017.05.11 15:11 #594061
    두가지 고민해주세요~ 저희 사용 하고싶어요 ㅠㅜ
  • 2017.05.05 15:45 #587667
    아이패드에서 해보니 지원하지 않는 브라우저라네요..혹시 iOS는 안되는건가요?
  • 2017.05.05 15:53 #587677
    MAC OS X는 지원하지만 iOS는 미지원하는 것 같습니다 ㅠㅠ
  • 2017.05.05 16:22 #587705
    정말 iOS가 여러모로 발목을 잡네요...ㅠㅠ
  • 2017.05.05 16:18 #587697
    어렵네요. 역시 전문가의 세상은 범접할 수 없는 세상인듯해요. ㅜ.ㅜ
  • 2017.05.05 16:18 #587701
    으음..xe에서 매우 적용이 힘들군요 ㅠㅠ
  • 2017.05.06 05:37 #588004
    익명게시판에서는 푸시알림이 가지 않는군요 ㅠㅠ
  • 2017.05.06 09:01 #588063
    noti.controller.php 파일에서

    if($doc_member_srl < -1) { // 익명게시판 사용시
    return new Object();
    }

    이 부분을 지워보세요.
  • 2017.05.06 09:19 #588072
    게시판을 익명 게시판으로 전환 전에 제가 작성했던 글에 (제 닉네임이 그대로 노출)

    익명 게시판으로 전환 후 익명 사용자가 댓글을 달면 저에게 푸시알림이 가지만

    제가 익명으로 작성한 글에 익명 사용자가 댓글을 달면 저에게 푸시알림이 가지 않습니다
  • 2017.05.08 13:40 #590342
    주말쯤 수정해놓겠습니다.
  • 2017.05.08 14:50 #590479
    noti.controller.php에서 member_srl과 상위 댓글 작성자의 member_Srl을 받아오는 코드에 abs()로 감싸주니까 해결되었습니다~
  • 2017.05.07 01:52 #588529

    감사합니다. 잘 되네요^^ (참고로 댓글을 보다 생각난 건데, 모바일의 경우 브라우저의 설정에서 알림수신을 선택할 수 있던 것 같은데...그것으로 설정을 대신할 수 있지 않을까 문득 생각이 들어서요. 테스트는 하지 못했지만 ㅎㅎ)

  • 2017.05.08 13:41 #590346
    해당 기능 고려해보겠습니다
    감사합니다 ㅎㅎ
  • 2017.05.07 05:54 #588658
    CloudFlare의 SSL을 사용하고 있습니다. ^^.

    SSL을 적용할때의 다른 애드온은 켜지않고 그냥 기본도메인과 진입을 https:// 로 하구 있는데요.
    모듈 설치랑 SenderID와 API모두 제대로 입력했는데에도 불구하고, 작동을 하지 않고 있는데
    어디가 문제일까요?

    권한은 707로도 줘보고 777로도 줘봐도 작동이 되지 않네요 ㅠㅠ
  • 2017.05.08 13:41 #590350
    혹시 서버에서 cURL 사용이 가능한가요?
  • 2017.05.10 07:10 #592593
    네 사용이 가능합니다 ㅠ
    모두 설정이 되어있고 큰 문제는 있어보이지 않네요.

    아파치 + php7 사용중입니다.
  • 2017.05.11 08:26 #593782
    service-worker.js랑 manifest.json 파일이 제대로 설치되었는가요?
  • 2017.05.11 16:09 #594126
    웹 서버의 XE루트 최상위에 두었습니다.
    ID와 각종 API도 맞게 적어두었구요
  • 2017.05.07 16:10 #589004

    20170508_010719.png

     

    이런 메세지가 나옵니다.SSL 설치 해야 하나요?

  • 2017.05.08 13:42 #590355
    브라우저 정책상 도청방지 때문에 https환경에서만 알림 사용이 가능합니다 ㅠㅠ
    http는 오직 localhost만 되어서 ㅠㅠ
  • 2017.05.08 13:50 #590368
    ㅠㅠ
  • 2017.05.08 05:41 #589393
    404에러가 뜨는데 무슨 문제일까요? index.php?mid=community&document_srl=12381370#comment_1370 알림을 클릭하면 이런식으로 주소가 되는데 제가 짧은주소를 사용해서 그런걸까요? 404가 뜨네요...
  • 2017.05.08 13:42 #590360
    말로만 들어선 어디가 문제인지 파악이 어렵습니다 ㅠㅠ
  • 2017.05.08 15:46 #590587
    아, 무슨 문제인지 알았습니다. document_srl 맨뒤 숫자 4자리가 붙어서 404가 뜨는거였네요. 뒤 4자리를 지운링크로 들어가면 제대로 가네요... 이게 어디가 문제일까요... ? 보니까 코멘트 넘버를 그대로 도큐멘트에 붙이는거같은데 음... 또 혹시 짧은 주소 옵션도 가능할까요?
  • 2017.05.14 06:17 #596469
    저희 현재 모듈 기능으로 서비스를 시작해보려고 하는데요.

    다른 문제보다는

    댓글 알림이 올때
    #닉네임 &lt;p&gt; 댓글내용 &lt;p&gt;

    이런 형태로 와서 댓글 가독성이 조금 떨어지는데요. &lt;p&gt; 이부분이 왜 나타나는 걸까요?
  • 2017.05.14 06:30 #596489
    일단 htmlspecialchars(cut_str(strip_tags($content, 20)));

    이런식으로 해 보니 댓글내용만 출력이 잘되네요.
  • 2017.05.14 17:11 #597234

    혹시 어떤파일에서 수정해야하는지 알 수 있을까요?

    아아 찾았습니다 ㅎㅎ

  • 2017.05.14 15:43 #597139
    자료 대단히 감사합니다.

    /index.php?act=dispNotiDeviceList 들어가서 알림 테스트 까지 떳는데
    어떠한 상황에 알림이 뜨는건가요?
    제가 작성한 글에 제가 댓글을 달기만 해도 알림이 뜨는건가요?

    유저들이 알림이 뜨도록 설정하는페이지가 /index.php?act=dispNotiDeviceList 여기 이페이지 일까요?
  • 2017.05.14 15:47 #597157

    웹페이지 접속시 알림을 허용하시겠습니까 버튼을 뜨게한다거나
    알림 허용 버튼 링크를 일반페이지에 삽입 할 수있을까요?
    혹은 알림이 활성화되었을땐 알림켜기 버튼이 숨겨지는 IF 문이 있으면 더욱 더 좋을 것 같습니다.

     

    sdd.png

    &lt 값등이 뜨는데 지울 수 있는 방법도 궁금합니다.

  • 2017.05.15 00:33 #597332
    사이트가 열려 있을 경우 알림을 클릭했을때 현재창에서 이동하게 할 수 없을 까요?
  • 2017.05.16 04:34 #598416
    이 자료 사용시 안드로이드 4.4.2의 버전의 사이트에서 메뉴클릭등 사이트 자체가 먹통이 되는 것을 확인했습니다.
  • 2017.05.16 11:30 #598803

    sdfdf.jpg

    이런식으로 사이트 접속만해도 허용할껀지 물어보게끔 가능할까요?

  • pjk
    2017.05.17 00:22 #599374
    설정법 한가지 궁금한게 있습니다.
    xe를 다른 폴더에 설치했으면 위 설정법 그대로 적용하면 되는지 궁금합니다.
  • 2017.05.23 01:42 #604440

    배포해주신 자료 감사합니다! 덕분에 ssl도 적용하고 모바일 푸시까지! 여러모로 도움이 되었습니다만...
    한가지, 크롬 기반인 네이버 웨일에서는 작동이 안되는지 'push 알람을 지원하지 않는 브라우저'라고 뜨네요 :(

  • 2017.12.12 08:48 #824567
    브라우저를 닫아도 알림을 올수 있게 하는 방법이 없을까요???
  • 2019.01.16 05:29 #1149650
    와 정말 감사합니다!
  • 2019.08.19 15:50 #1256848

    감사합니다!
    제대로 설정 한 거 같은데 알림이 전혀 안오네요 ㅠㅠ
    모듈 설정에서 서버키 입력 해 주었고, 루트 디렉토리의 manifest.json 에도 발신자 ID와 이것저것 입력 해 줬습니다.
    등록된 단말기는 목록에 나오는데 알림이 오질 않아요.

    아파치2.4 php7.0 curl 지원 합니다.

    라이믹스 1.9.6 사용중입니다.

  • 2019.08.21 14:36 #1257362
    예전엔 알림 API로는 구글 GCM을 사용하였는데 올해 초인가 구글FCM으로 API가 바뀐걸로 알고 있습니다.
    그래서 모듈을 수정해야 작동하는데..
    시간나면 수정하겠습니다.
  • 2019.09.02 13:57 #1261057
    감사합니다!
  • 2021.01.14 01:21 #1508273
    혹시 지금도 지원될까요?
  • 2021.01.14 06:03 #1508436
    고칠거 많겠지만 안되진 않을겁니다.
  • 2021.01.14 06:04 #1508444
    모듈 설정 부분에서 역시나 막혔네요..
  • 2021.01.14 06:19 #1508467
    해당 모듈설정에 tpl 안에 템플릿 폴더가 있을텐데요 거기에서 회원메뉴를 뿌려주는 곳에서 버튼이 없어진것같다면

    cond="$module_info" 항목을 찾아 지워보시고, 그게 아니라면 오류내역 확인해보세요.
  • 2021.01.14 06:36 #1508489
    감사합니다