푸시 알림이 안 됩니다. & 푸시 알림이 많은 확률로 실패합니다.

by 관리자 posted Jan 08, 2016
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄


 

다시 말씀드리지만 앞에 있는 앱 제작 가이드 과정 중에 하나라도 잘못되면 정상동작하지 않습니다. 

 

푸시 알림이 안 될 경우는 다음의 문제일 수 있습니다.

 

(1) 관리자 아이디로 글을 쓰셔서 테스트하실 경우

 

앱을 모바일에 설치하고  관리자 아이디로 로그인한 후 pc에서 테스트하신다고 관리자 아이디로 글을 쓰게 되면 푸시 알림이 가지 않습니다. 그런데 많은 분들이 푸시 알림이 안되는줄 알고 문의를 하십니다. 자기가 쓴 글은 자기에게 푸시 알림되지 않습니다. 참고해주세요. 이 경우는 모듈 환경설정 페이지 하단부분에 '더미데이터생성'으로 테스트해주시기 바랍니다.

 

(2) 주소 고정 애드온으로 인한 문제

 

혹시 주소고정애드온을 사용하고 계시다면, 애드온사용을 중지해주세요. 최소한 모바일에서는 작동되지 않도록 해주세요. (https://www.xpressengine.com/index.php?mid=download&package_id=21606824)

 

www 애드온도 주의해서 사용해주세요. 저는 www를 없애주는 애드온을 사용하고 있는데, 정상작동됩니다.

 

그러나 www를 넣어주는 애드온의 경우 정상작동되지 않는다는 것을 발견하였습니다(sealplay님).

 

이 경우 www 애드온을 pc와 모바일 중에서 pc모드만 꺼주시면 됩니다.

 

(3) google-services.json파일을 잘못받았을 경우

 

이 파일을 메모장이나 에디터로 열어주세요.

 

...(중략)

 

"client_info": {
        "mobilesdk_app_id": "1:123232372874398398439484933948394",
        "android_client_info": {
          "package_name": "com.xepushapp.xepushapp"
        }
      },

 

....(중략)

 

위에서 빨간부분이 현재 제작하는 앱 패키지명과 일치하는지 꼭 확인해주세요!!!

일치하지 않는 경우 다시 받아주셔야 합니다. 

과거에는 일치하지 않아도 푸시알림이 되었는데, 최근 구글 정책이 바뀌어서 일치하지 않으면 푸시 알림이 안 됩니다. 

따라서 google-services.json을 새로 받아야 합니다. 

아래의 앱 제작 가이드를 참조하셔서 다시 다운받아주세요.

 

http://xepushapp.com/board_SbEm14/32881

 

(4) 앱소스나 모듈, 서버모듈, 위젯 모두 최신 버전이 아닐 경우

 

최신버전으로 업그레이드 해주시고 꼭 캐시파일 재생성 버튼을 눌러주시기 바랍니다.

 

(5) 서버 모듈 설정에서의 오류

 

API Key 내용을 잘못 입력하셨거나, 그 내용에 공백이 포함되어 있거나 하면 푸시가 안됩니다. 그부분을 꼭 확인해주세요.

 

특히 firebase작업하실 때 firebase사이트에 api-key값이라는 것이 여러개 존재합니다. 아무거나 넣으면 되는게 아니고, 절대로 클라우드 메시징의 서버키값을 입력해주셔야 합니다. 

 

https://xepushapp.com/board_GsJl64/73926

 

(6) 서버 사정상 소켓 오류가 발생한 경우

 

일부 서버에서 소켓이 제대로 작동하지 않는 경우가 있습니다.

 

혹시 소켓방식이 잘 안될 경우 아래와 같이 해보세요.

 

푸시앱 모듈 파일 중에 androidpushapp.controller.php파일을 에디터로 열기 하셔서

if($fsock)로 검색하셔서 아래의 내용을 찾아주세요.

 

if($fsock)
  {
   fwrite($fsock, $req);
   fclose($fsock);
  }

 

 

-> 이 부분에 아래와 같이 빨간 한 줄을 추가해주세요.

 

if($fsock)
  {
   fwrite($fsock, $req);

   sleep(1);
   fclose($fsock);
  }

 

이렇게 하는 이유는 소켓 작동하고 소켓을 끊기까지 여유를 주어 비동기식 api호출하도록 하기 위함입니다. 이렇게 하면 새글쓰기나 댓글 쓸 때 1초 지연됩니다. 만일 1초로도 안되면 2초로 바꾸어서 적용해보세요. 그래도 안 될경우는 httprequest방식을 사용해주세요. 숫자를 2초 이상 올리는 것은 지연시간이 늘기 때문에 비추입니다.

 

그런 경우는 httprequest로 변경해주셔야 합니다.

 

푸시앱 관리자 페이지에서 [푸시알림동작설정] -> [푸시모듈 푸시 처리 방식] 이 항목에서 [모듈 자체 소켓 통신] 대신  [httpRequest 방식]를 사용해주셔서 테스트해주세요.

 

(7) 서버 속도가 지나치게 느릴 경우(서버부하가 많은 경우 발생하는 문제)

 

현재 프리미엄 버전 앱은 회원이 새 글을 작성했을 때, 비동기식 처리를 위해 푸시작업을 DB에 저장한 후 httprequest 또는 소켓 post로 날려서 앞서 저장한 DB내용을 토대로 푸시 처리 작업을 하게 됩니다. 이 과정에서 DB에 저장하는 속도가 느려 푸시앱모듈이 제대로 처리하지 못하는 문제가 발생합니다. 아래와 같이 수정해주세요.

 

androidpushapp.controller.php파일 2297번째줄 쯤에 아래의 함수를 찾습니다.

 

function procAndroidpushappPushPost()

 

(중략)

 

$keypass = strip_tags($keypass);

sleep(1);

$this->push_proc($keypass);

 

(중략)

 

여기서 빨간 부분 숫자를 늘려주시면 제대로 작동할 것입니다.



Articles

1 2