게으른 알림 - PWA (웹앱 설치), 푸시/이메일 알림


소개
홈페이지 제작도구인 라이믹스에서 사용할 수 있는 php 프로그램(=모듈) 입니다.
2023년에 제작하여 수년간 운용하면서 기능이나 오류를 검증하여 안정적으로 작동됩니다.
회원들은 사이트를 이탈한 후에도 알림을 통해 다시 유입될 수 있습니다.
- 버튼을 누르면 push 구독되게 하고 싶어.
> push 버튼 코드가 제공되어 원하는 위치에 간단히 삽입할 수 있습니다.
> 예: 이 홈페이지 PC버전에서 왼쪽의 OFF/ON 누르면 됩니다. - 앱을 만들고 싶어
> 클릭 몇 번으로 설정이 완료되어 유저들에게 PWA 앱을 제공할 수 있습니다. - 앱/웹 알림을 제공하고 싶어.
> 제공되는 구독 버튼을 누르면 라이믹스 기본 기능에 Fcmv1 데이터를 저장하여 Push 알림이 제공됩니다. - 글/댓글/쪽지 알림을 발송하고 싶어. 하지만 즉시 발송하지 않고 읽지 않은 알림만 보내고 싶어.
> 60초내 확인하지 않았다면 Web Push 발송됩니다. (초 단위로 설정 변경 가능)
> 10분내 확인하지 않았다면 이메일 알림이 발송됩니다. (분 단위로 설정 변경 가능, 메일 알림에 포함된 링크를 통해 구독 해제 가능) - 얼마나 효과가 있을까?
> 알림이 얼마나 보내지고 얼마나 확인되어 유입했는지 통계 화면이 제공됩니다. - 카톡 같은 push 채팅 서비스를 제공하고 싶어.
> elkhatalk3 모듈의 읽지 않은 개인 채팅이 이 모듈의 push 알림과 연동됩니다.
프로그램 요구 사양
- 사이트가 https 프로토콜이 적용되어야 웹 앱과 웹 푸시가 작동됩니다.
이 기능은 http 환경에서 작동되지 않게 브라우저가 보안, 설계 되었기 때문입니다. 같은 이유로 시크릿모드에서도 기능이 제한됩니다. - 라이믹스 2.1.25 버전에서 테스트 하였습니다.
- php 7.4 ~ 8.4 에서 테스트 하였습니다.
- 웹 호스팅은 확인하지 않은 글/댓글/쪽지 알림 기능이 제한적입니다.
- (권장) php 에서 proc_open 함수가 허용되어야 합니다. / 또는 crontab 으로 알림을 게으르게 발송할 수 있습니다. gif -> mp4 기능이 작동한다면 아마도 proc_open 함수 사용이 가능합니다.
- 또는 설정 화면의 안내에 따라 cron 의한 작동이 가능합니다.
- Rhymix Queue Task 의한 제공은 아직 미지원 입니다. (제가 que 안써서 테스트 필요;;)
- 라이믹스 관리 화면에서 Google Firebase 설정이 필요합니다. (라이믹스 고유 기능, 무료)
- 테스트 환경:
- Safari - iPhone, Mac
- Chrome - Android, Windows, Mac
온라인 데모
- 이 홈페이지에서 테스트 해보실 수 있습니다.
- PC 화면 왼쪽에 "게으른 알림 테스트" 항목으로 알림을 키거나 끌 수 있습니다.
- 모바일로 접속하면 PWA 설치 안내를 볼 수 있습니다.
- https://elkha.kr/rx/member/dispLazypushMyConfig (악용 방지로 메일 알림은 테스트를 꺼 두었습니다.)
- 이 홈페이지에 가입을 원치 않으시면 다음의 두 가지 계정으로 테스트할 수 있습니다.
- 아이디: test
비밀번호: test - 아이디: test2
비밀번호: test2
- 아이디: test
테스트 push 발송: (준비중)
설치 방법
- index.php?module=admin&act=dispAdminConfigNotification 에서 이메일 알림을 올바로 설정합니다.
- index.php?module=admin&act=dispAdminConfigNotification 에서 firebase push 설정이 필요합니다.
firebase 설정을 하지 않으셨다면 https://console.firebase.google.com 통해서 설정 값을 가져오시기 바랍니다. (캡쳐를 참고 해주세요) - index.php?module=admin&act=dispLazypushAdminConfig 에서 pwa 설정을 진행합니다.
먼저 DB 테이블 생성 버튼을 누른 후 PWA 항목을 입력해주세요.
vapidKey 값은 클라우드 메시징에서 Generate key pair 항목에서 값을 가져옵니다. - index.php?module=admin&act=dispNcenterliteAdminConfig
알림센터와 충돌하지 않도록 메일 알림, 푸시 알림을 끕니다. - index.php?module=admin&act=dispNcenterliteAdminAdvancedconfig
푸시 알림 포맷을 data 선택합니다.
- index.php?module=admin&act=dispLazypushAdminConfig 항목들을 설정합니다.
- queue exec
- command: (권장) proc_open 함수를 이용하여 해당 시간 만큼이 지나 push 발송합니다.
라이믹스의 백엔드 기능을 사용하려면 웹 계정과 files 계정이 일치해야 합니다.
웹 계정으로 직접 백엔드 실행하고 빈 값이면 정상, 오류가 나온다면 아마 계정 권한이 잘못되었다는 메세지가 나옵니다.
테스트 예) php ~/www/rx/index.php lazypush.exec 실행 결과가 빈 값이면 정상입니다. - cron: proc_open 사용할 수 없다면 crontab 으로 유사한 효과를 낼 수 있습니다.
화면 안내에 나온 crontab 설정을 직접 하셔야 됩니다.
- command: (권장) proc_open 함수를 이용하여 해당 시간 만큼이 지나 push 발송합니다.
- push invalidate
7 설정하면 알림이 7일이 지난 경우 지워집니다. - email denied
24 설정하면 발송한 이메일 알림이 24시간 이내에만 거부 가능합니다.
- config: trigger
모두 키는게 좋습니다. - config: PWA
- manifest.json / pwa 정보를 설정할 수 있습니다.
- html header
activate 체크하면 pwa 정보를 브라우저에게 띄웁니다. - pwa install button
앱 설치 버튼을 보여줄 기기를 선택합니다.
저는 mobile 만 체크했습니다.
- queue exec
설정 화면
비고
- (권장) 라이믹스의 짧은 주소 기능이 필요합니다.
만약 짧은 주소를 켜지 않으면 manifest.json 파일을 루트 경로에 집어넣고 연동해야 합니다. - ios safari 정책상 홈 화면에 사이트를 추가한 후에 push 알림을 연동할 수 있습니다.
- 다운로드: https://rhymix.org/pds/1911541
기술 지원
프로그램을 배포할 때 다양한 환경에서 작동할 수 있는 경우의 수를 고려하지 못한 점 죄송합니다.
오류 해결을 위해 다음의 정보를 첨부해주시면 문제를 찾는데 큰 도움이 됩니다.
- index.php?module=admin&act=dispNcenterliteAdminConfig
이 화면에서 config: triggers 항목을 캡쳐로 보여주세요. (환경에 따라 옵션이 다를 수 있음)
예: - index.php?module=admin&act=dispNcenterliteAdminConfig
이 화면에서 기본 설정을 캡쳐해주세요.
예: - 가능하면 URL 알려주세요, ~.com 호스트 생략하고 경로만 알려주셔도 좋습니다.
가능하면 디버그 화면에 나오는 코드 위치도 알려주세요.