HTML5기반 댓글 알림 모듈
크롬(삼성 브라우저)에서 페이스북이나 유튜브와 같은 형태의 댓글 알림을 표시해주는 모듈입니다.
웹소켓, 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
if($doc_member_srl < -1) { // 익명게시판 사용시
return new Object();
}
이 부분을 지워보세요.
익명 게시판으로 전환 후 익명 사용자가 댓글을 달면 저에게 푸시알림이 가지만
제가 익명으로 작성한 글에 익명 사용자가 댓글을 달면 저에게 푸시알림이 가지 않습니다
감사합니다. 잘 되네요^^ (참고로 댓글을 보다 생각난 건데, 모바일의 경우 브라우저의 설정에서 알림수신을 선택할 수 있던 것 같은데...그것으로 설정을 대신할 수 있지 않을까 문득 생각이 들어서요. 테스트는 하지 못했지만 ㅎㅎ)
감사합니다 ㅎㅎ
SSL을 적용할때의 다른 애드온은 켜지않고 그냥 기본도메인과 진입을 https:// 로 하구 있는데요.
모듈 설치랑 SenderID와 API모두 제대로 입력했는데에도 불구하고, 작동을 하지 않고 있는데
어디가 문제일까요?
권한은 707로도 줘보고 777로도 줘봐도 작동이 되지 않네요 ㅠㅠ
모두 설정이 되어있고 큰 문제는 있어보이지 않네요.
아파치 + php7 사용중입니다.
ID와 각종 API도 맞게 적어두었구요
이런 메세지가 나옵니다.SSL 설치 해야 하나요?
http는 오직 localhost만 되어서 ㅠㅠ
다른 문제보다는
댓글 알림이 올때
#닉네임 <p> 댓글내용 <p>
이런 형태로 와서 댓글 가독성이 조금 떨어지는데요. <p> 이부분이 왜 나타나는 걸까요?
이런식으로 해 보니 댓글내용만 출력이 잘되네요.
혹시 어떤파일에서 수정해야하는지 알 수 있을까요?
아아 찾았습니다 ㅎㅎ
/index.php?act=dispNotiDeviceList 들어가서 알림 테스트 까지 떳는데
어떠한 상황에 알림이 뜨는건가요?
제가 작성한 글에 제가 댓글을 달기만 해도 알림이 뜨는건가요?
유저들이 알림이 뜨도록 설정하는페이지가 /index.php?act=dispNotiDeviceList 여기 이페이지 일까요?
웹페이지 접속시 알림을 허용하시겠습니까 버튼을 뜨게한다거나
알림 허용 버튼 링크를 일반페이지에 삽입 할 수있을까요?
혹은 알림이 활성화되었을땐 알림켜기 버튼이 숨겨지는 IF 문이 있으면 더욱 더 좋을 것 같습니다.
< 값등이 뜨는데 지울 수 있는 방법도 궁금합니다.
이런식으로 사이트 접속만해도 허용할껀지 물어보게끔 가능할까요?
xe를 다른 폴더에 설치했으면 위 설정법 그대로 적용하면 되는지 궁금합니다.
배포해주신 자료 감사합니다! 덕분에 ssl도 적용하고 모바일 푸시까지! 여러모로 도움이 되었습니다만...
한가지, 크롬 기반인 네이버 웨일에서는 작동이 안되는지 'push 알람을 지원하지 않는 브라우저'라고 뜨네요 :(
감사합니다!
제대로 설정 한 거 같은데 알림이 전혀 안오네요 ㅠㅠ
모듈 설정에서 서버키 입력 해 주었고, 루트 디렉토리의 manifest.json 에도 발신자 ID와 이것저것 입력 해 줬습니다.
등록된 단말기는 목록에 나오는데 알림이 오질 않아요.
아파치2.4 php7.0 curl 지원 합니다.
라이믹스 1.9.6 사용중입니다.
그래서 모듈을 수정해야 작동하는데..
시간나면 수정하겠습니다.
cond="$module_info" 항목을 찾아 지워보시고, 그게 아니라면 오류내역 확인해보세요.