스마트폰에 나만의 메시지 보내는 시스템 구축기steemCreated with Sketch.

in #kr8 years ago (edited)


기억속에서 끄집어낸 cloud messaging

몇 년 전 학부생 시절, 데스크탑 컴퓨터에서 한 번 실행에 몇시간~며칠 정도 걸리는 시뮬레이션 작업을 걸어놓던 때가 있었다. 그런데 자고 일어나서 확인해 보면 에러가 나서 중단되는 경우가 상당히 많았기 때문에 중간에 문제가 생겼을 때 핸드폰으로 알림이 왔으면 좋겠다고 생각했다. 자고 있는 중이더라도 진동이 딱 오면 얼른 일어나서 수정하고 다시 돌리는, 그런 걸 원했다.

이것저것 뒤져보다가 Google cloud messaging (GCM)이란 것을 발견했었다. 이 기능은 카톡처럼 내 핸드폰으로 알림을 보내주는 기능이다. 되지도 않는 지식으로 어찌어찌 안드로이드 폰에 알림을 수신할 수 있는 앱을 만들어 넣고, 컴퓨터에서 Python으로 메시지 송신 프로그램을 짜서 핸드폰으로 문제가 생겼다고 알림을 보내줄 수가 있었다. (해당 내용을 나중에 간략하게 정리한 것)

그리고 대학교를 졸업하면서 그런 시뮬레이션 작업도 끝이 났고, 해당 앱도 기억에서 잊혀져 갔다. 가끔 핸드폰을 켜보면 예전에 만들었던 앱이 들어있는걸 보면서 아 이런것도 있었지 라는 생각이 들었는데, 얼마 전엔 폰도 바꾸면서 아예 까맣게 잊고있었다.

자동화엔 역시 알림이 필요해..

최근 간단한 게임같은걸 하는데 반복작업에 손이 아파서 자동화 프로그램을 하나 짰다. 가만히 쳐다보고 있으면 알아서 크는게 역시 만들길 잘했단 생각이 들었다. 그런데 인간은 역시 귀찮음의 동물인지라 한번 편해지고 나니까 침대에 눕게 된다 ㅋㅋㅋㅋ... 침대에 누워있자니 또 스르르 자게 되고, 일어나 보면 예상치 못한 상황에 멈춰 있는 자동화.. 예전에 짜놨던 알림 앱이 생각났다.

예전 폰을 꺼내서 앱을 켜보니 아직도 수신쪽은 문제가 없어보였다. 문제는 송신인데... python으로 돌려보니 자꾸 무슨 에러가 났다. 뭐가 문제인지도 모르겠고, 어차피 알림을 수신할쪽도 새로 산 폰이라 앱을 다시 넣어줘야 하는 부분이 있어서 그냥 다시 만들기로 했다.

만들어보자

인터넷을 잠깐 찾아보니 구글이 GCM을 deprecate해서 2019년에 종료될 예정이라고 한다. 대체수단으로 Firebase cloud messaging(FCM)이란걸 쓰라고 하는데, 다행히 구글 developer dashboard에 들어가 보니 예전에 만들어놨던 cloud messaging API key를 Firebase로 migration할 수 있었다. 오오 호환성 오오..

그리고 예전에 만들었던 안드로이드 앱 소스파일을 찾긴 찾았는데, 분명 과거의 내가 짰는데 이해가 하나도 안되는 것; 어떻게 폰에다 넣어야되는지 감도 안왔다. 그래서 이거도 새로 만들어야될 것 같았다.

안드로이드 스튜디오를 깔았더니 친절하게 자신만의 앱을 만드는 튜토리얼같은게 나왔고, 핸드폰 연결하고 그대로 따라했더니 (핸드폰 설정에서 개발자 옵션에 디버깅을 켜야된다. 이거 몰라서 한참 헤맸음) 간단한 앱 하나가 금방 만들어졌다.

이제 메시지 받는 기능을 만들어야 했는데, Firebase에서 그냥 새 프로젝트를 추가하고, android에 firebase 앱 추가를 눌러서 아까 만든 안드로이드 앱의 패키지 이름을 적어주면 되는거였다. 절차를 진행하다 보면 json을 다운받을 수 있는데, 프로젝트의 app폴더 안에 넣어주고 build.gradle 파일 두 개를 수정해주면 되는거였다. (자세한 설명은 firebase에 다 나와있다. 무려 한글 지원 됨)

이제 송신단을 뭘로할지 고민이 많아졌는데, 다행히도 간단히 메시지만 보내는거면 따로 송신 프로그램을 안짜도 되는거였다.
출처: http://zeany.net/27?category=666373
여기를 참고하니 app폴더 안의 build.gradle안에

compile com.google.firebase:firebase-messaging 

옵션을 넣어주면 끝나는 것. 그런데 compile이라는 예약어도 deprecate되었다고 implementation로 바꾸라고 해서 아래 스샷처럼 넣어줬다.

그리고 나서 build하니 에러 없이 잘 됐다.

메시지 보내기

이제 웹브라우저에서 아까 만든 Firebase 프로젝트 페이지를 연 다음 왼쪽에 Grow탭-cloud messaging을 누르고 보내보면 된다.

약 1~2초 뒤에 폰으로 진동과 함께 알림이 온다.

이제 핸드폰으로 알림을 보낼 수 있으니, 자동화쪽에서 Firebase API만 따면 되는..데 귀찮아서 일단은 여기까지 만들었고, 충분히 쓸만한 것 같다.

후기

예전에 GCM 만들때에 비하면 정말 많은 부분들이 개선된 걸 느꼈다. 특히 간단한 메시지 전송은 웹에서도 가능한 게 매우 좋았다. 그리고 잠깐 보아하니 Firebase는 무려 iOS에도 쓸수가 있는 것 같았다. 경쟁사 환경도 지원하는 갓-구글...

이번에 안드로이드 스튜디오도 깔고 해서 개발환경은 갖춰놨고 어떻게 하는지도 알았으니 나중에 또 유용하게 쓸일이 있지않을까?

P.S. 방에서 FHD 모니터 하나로 한쪽엔 API문서 띄우고 한쪽에는 코드 띄우고 하자니 가로길이도 짤리고 역시 너무 불편했다 (사무실에 있는 작업용 컴은 UHD모니터 포함 모니터가 3개라서 더 그런듯).

Sort:  

Congratulations @projecteli! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of upvotes received

Click on any badge to view your own Board of Honor on SteemitBoard.

To support your work, I also upvoted your post!
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

Upvote this notification to help all Steemit users. Learn why here!

Coin Marketplace

STEEM 0.04
TRX 0.31
JST 0.073
BTC 63490.47
ETH 1676.63
USDT 1.00
SBD 0.41