±âŸ(framework)
2018.03.21 / 01:54

Firebase Web äÆÃ¾Û ¸¸µé±â - Cloud Messaging°ú FunctionsÀ» ÀÌ¿ëÇÑ Çª½Ã¸Þ¼¼Áö ±â´É - FCM Token Á¤º¸

ÈÞ°í
Ãßõ ¼ö 198
¿äÁò À¥ºê¶ó¿ìÀú¿¡¼­´Â ¾Èµå·ÎÀÌµå ¶Ç´Â IOS¿¡¼­ º¼ ¼ö Àִ Ǫ½Ã ±â´ÉÀ» Áö¿øÇÏ´Â ºê¶ó¿ìÀú°¡ ÀÖ½À´Ï´Ù.  ¿äÁò Youtube³ª FacebookÀ» ÀÌ¿ëÇϽðí, Chrome ¶Ç´Â Firefox ºê¶ó¿ìÀú¸¦ »ç¿ëÇÏ½Å´Ù¸é ¾Æ·¡¿Í °°Àº Ǫ½Ã¸¦ ¹Þ¾Æº¸¼ÌÀ» °ÍÀÔ´Ï´Ù.



ÀÌ´Â ¼­ºñ½º ¿öÄ¿¶ó´Â ºê¶ó¿ìÀú¿¡¼­ ¹é±×¶ó¿îµå·Î ½ÇÇàµÇ´Â ÀÚ¹Ù½ºÅ©¸³Æ® ±â¹ÝÀÇ ¿öÄ¿¸¦ ÅëÇؼ­ ¸Þ¼¼Áö¸¦ ¼ö½ÅÇÏ°í ³ëƼÇÇÄÉÀ̼ÇÀ» ±¸µ¿ÇÏ°Ô µË´Ï´Ù. ÀϹÝÀûÀÎ À¥ ¿öÄ¿´Â À¥¾Û ³»¿¡¼­ ÀÚ¹Ù½ºÅ©¸³Æ®·Î ¸ÖƼ¾²·¹µå 󸮸¦ À§ÇØ »ç¿ëµË´Ï´Ù. ¼­ºñ½º¿öÄ¿µµ ºñ½ÁÇÏÁö¸¸ Â÷ÀÌÁ¡ÀÌ ÀÖ½À´Ï´Ù. À¥¿öÄ¿´Â À¥¾ÛÀÌ ½ÇÇàµÇ´Â µ¿¾È¸¸ À¯ÁöµÇ°í ½ÇÇàµÇÁö¸¸ ¼­ºñ½º¿öÄ¿ÀÇ °æ¿ì À¥¾ÛÀ» ¹þ¾î³ª´õ¶óµµ ºê¶ó¿ìÀú°¡ ½ÇÇàÀÌ µÇ¾î ÀÖÀ¸¸é Áö¼ÓÀûÀ¸·Î À̺¥Æ®¸¦ ¹Þ°í 󸮸¦ ¼öÇàÇÕ´Ï´Ù.

ÀÌ·¯ÇÑ ¼­ºñ½º¿öÄ¿¸¦ Áö¿øÇÏ´Â ºê¶ó¿ìÀú´Â ÇöÀç Chrome, Firefox, Opera Á¤µµ¸¸ÀÌ Áö¿øÇÏ°í ÀÖ½À´Ï´Ù. ¸¶ÀÌÅ©·Î¼ÒÇÁÆ® Edgeºê¶ó¿ìÀú¿Í ¾ÖÇÃÀÇ Safariºê¶ó¿ìÀú´Â °³¹ß Áß¿¡ ÀÖ´Ù°í ÇÕ´Ï´Ù.

±×¸®°í Android³ª IOS µîÀÇ ¸ð¹ÙÀÏ Çª½Ã´Â ¸ð¹ÙÀÏÀÇ Àü¿øÀÌ ÄÑÁ®ÀÖ°í ÀÎÅͳÝÀÌ ¿¬°áµÇ¾î ÀÖ´Ù¸é ¾ðÁ¦µçÁö Ǫ½Ã¸¦ ¹ÞÀ» ¼ö ÀÖÁö¸¸ À¥ Ǫ½ÃÀÇ °æ¿ì ºê¶ó¿ìÀú°¡ ±¸µ¿µÇ¾î¾ßÁö¸¸ ¹ÞÀ» ¼ö ÀÖ´Â ´ÜÁ¡ÀÌ ÀÖ½À´Ï´Ù.

ÀÌ·¯ÇÑ Á¦¾à»çÇ×ÀÌ ÀÖÁö¸¸ Ǫ½Ã ±â´ÉÀº »ç¿ëÀÚ°¡ Á¢¼ÓÇϵµ·Ï À¯µµÇϴµ¥ ÁÁÀº µµ±¸°¡ µË´Ï´Ù. ±×·¡¼­ À̹ø ¿¹Á¦¿¡¼­´Â Á¢¼ÓÇÑ À¯Àú¿¡°Ô Àڲ٠Ǫ½Ã¸¦ º¸³»´Â °ÍÀº ½â ÁÁÀº ¹æ¹ýÀº ¾Æ´ÑµíÇؼ­ Á¢¼ÓÇÏÁö ¾ÊÀº À¯Àú¿¡°Ô¸¸ Ǫ½Ã¸¦ º¸³»µµ·Ï ±¸ÇöÀ» Çغ¸°Ú½À´Ï´Ù.  ±×¸®°í Ǫ½Ã¸¦ ±¸ÇöÇϸ鼭 Ŭ¶óÀ̾ðÆ® Äڵ忡¼­ ¹Ù·Î Ǫ½Ã¸¦ º¸³¾¼öµµ ÀÖÀ¸³ª, À̴ Ǫ½Ã±â´É ±¸Çö¿¡ ÀÌ¿ëÇÏ´Â Firebase Cloud Messaging(ÀÌÇÏ FCM)ÀÇ ¼­¹öÅ°¸¦ ³ëÃâ½ÃÄÑ¾ß ÇϹǷΠº¸¾È¿¡ À§ÇèÇÕ´Ï´Ù. ±×·¸±â ¶§¹®¿¡ Ǫ½Ã ¸Þ¼¼Áö¸¦ º¸³»´Â µ¿ÀÛÀº Ŭ¶óÀ̾ðÆ® Äڵ尡 ¾Æ´Ñ ¼­¹öÄڵ带 »ç¿ëÇÏ°Ú½À´Ï´Ù. ¼­¹ö´Â Firebase Functions ¸¦ ÀÌ¿ëÇÏ°Ô µË´Ï´Ù.

(1)¾Ë¸²(Notification) ±ÇÇÑ È¹µæ ¹× FCM Token Á¤º¸ ÀúÀå

FCM TokenÀ» ȹµæ Çغ¸°Ú½À´Ï´Ù. FCM TokenÀº Á¢¼ÓÇÏ°Ô µÇ´Â ȯ°æ(ºê¶ó¿ìÀú, ¸ð¹ÙÀϱâ±â)¿¡ µû¶ó Ǫ½Ã¸¦ ¹Þ°ÔµÉ ÀåÄ¡ÀÇ °³º°ÀûÀÎ ID °ªÀÔ´Ï´Ù.

À¥ÆäÀÌÁö°¡ ±¸µ¿µÇ¸é FCM TokenÀ» ȹµæÇÏ°í, ·Î±×ÀÎ ÈÄ¿¡ Realtime Database¿¡ ÀúÀåÇÏ°Ú½À´Ï´Ù. 

¸ð¹ÙÀÏ(Android, IOS)¿¡¼­´Â FCM ID¸¦ ȹµæÇϴµ¥ À־ ±ÇÇÑÀ» ¿ä±¸ÇÏÁö ¾ÊÁö¸¸, Web¿¡¼­´Â ¸ÕÀú ±ÇÇÑÀ» ¿ä±¸ ÇÕ´Ï´Ù. ¾Æ·¡´Â À¥ÆäÀÌÁö°¡ ±¸µ¿ÀÌ µÇ¸é¼­ »ç¿ëÀÚ¿¡°Ô ±ÇÇÑÀ» ¿äûÇÏ°í, ±ÇÇÑ ¿äûÀ» ¼ö¶ôÇÏ°Ô µÇ¸é FCM  TokenÁ¤º¸¸¦ ¹Þ°Ô µÇ´Â ÄÚµåÀÔ´Ï´Ù.

<script>
/**
* Ãʱâ ÇÊµå º¯¼ö ÇÒ´ç
*/
FirebaseChat.prototype.init = function(){
//...»ý·«
this.setCloudMessaging();
}
/**
* Cloud Messaging ¾Ë¸² ±ÇÇÑ
*/
FirebaseChat.prototype.setCloudMessaging = function () {
//¸Þ¼¼Â¡
var messaging = firebase.messaging();
messaging.requestPermission()
.then(function(){
console.log('¸Þ¼¼Â¡ ±ÇÇÑ È¹µæ');
return messaging.getToken();
})
.then(function(token){
console.log('fcm token : ', token);
})
.catch(function(e){
console.log('¸Þ¼¼Â¡ ±ÇÇÑ È¹µæ Áß ¿¡·¯', e);
});
}
view rawindex.html hosted with ❤ by GitHub




ºê¶ó¿ìÀú¸¦ ¶ç¿ö Á¢¼ÓÇغ¸¸é ¾Æ·¡ÀÇ ±×¸²°ú °°Àº ±ÇÇÑ ¿äûÀÌ ¶å´Ï´Ù. Çã¿ëÀ» ´©¸£°Ô µÇ¸é then¸Þ¼Òµå°¡ ½ÇÇàµÇ¸ç, FCM Token¹ß±ÞµÇ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ°í, Â÷´ÜÀ» ´©¸£°ÔµÇ¸é catch¸Þ¼Òµå°¡ ½ÇÇàµÇ¸ç Äֿܼ¡ ¿¡·¯·Î±×°¡ ÂïÈ÷´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.


ÀÌÁ¦ ·Î±×ÀÎ ÈÄ Realtime Database¿¡ ÀúÀåÇÏ°Ú½À´Ï´Ù.  ÀúÀåµÇ´Â À§Ä¡´Â 'FcmId/À¯ÀúUID' ¾Æ·¡¿¡ TokenÁ¤º¸°¡ ÀúÀåµË´Ï´Ù.

<script>
/**
* ·Î±×ÀÎ ÈÄ ¼¼ÆÃ
*/
FirebaseChat.prototype.setLogin = function(user){ //user ÆĶó¹ÌÅÍ Ãß
//...»ý·«
this.saveFCMToken();
}
/**
* FCM Token ÀúÀå
*/
FirebaseChat.prototype.saveFCMToken = function(){
//·Î±×ÀÎ ÈÄ¿¡ fcm Á¤º¸¸¦ °Ë»öÇÏ¿© ÀúÀå
var cbGetToekn = function(token){
console.log('setLogin fcmId get : ', token);
var userUid = this.auth.currentUser.uid;
var fcmIdRef= this.database.ref('FcmId/' +userUid);
fcmIdRef.set(token);
}
firebase.messaging().getToken()
.then(cbGetToekn.bind(this))
.catch(function(e){
console.log('fcmId È®ÀÎ Áß ¿¡·¯ : ', e);
})
}
view rawindex.html hosted with ❤ by GitHub




À¯Àúº° FCM TokenÁ¤º¸¸¦ Realtime Database¿¡ ÀúÀåÇÏ¿´½À´Ï´Ù.

éÅÍ ¿Ï¼º ¼Ò½º  :



  1. ¿¹Á¦ ¼Ò°³
  2. Firebase ¼³Á¤Çϱâ
  3. HostingÀ» È°¿ëÇÑ ÇÁ·ÎÁ§Æ® Áغñ ÀÛ¾÷
  4. AuthenticationÀ» ÀÌ¿ëÇÑ À¯Àú °¡ÀÔ ¹× ·Î±×ÀÎ ±¸ÇöÇϱâ
  5. Realtime Database¸¦ ÀÌ¿ëÇÑ Ã¤Æñâ´É ±¸Çö - Reatime Database Ư¡ ¹× µ¥ÀÌÅÍ ±¸Á¶
  6. Realtime Database¸¦ ÀÌ¿ëÇÑ Ã¤Æñâ´É ±¸Çö - À¯Àúµ¥ÀÌÅÍ ÀúÀåÇϱâ
  7. Realtime Database¸¦ ÀÌ¿ëÇÑ Ã¤Æñâ´É ±¸Çö - À¯Àú¸®½ºÆà ȭ¸é
  8. Realtime Database¸¦ ÀÌ¿ëÇÑ Ã¤Æñâ´É ±¸Çö - äÆÃÈ­¸é ¹× äÆø޼¼Áö ¸®½ºÆÃ
  9. Realtime Database¸¦ ÀÌ¿ëÇÑ Ã¤Æñâ´É ±¸Çö - äÆø޼¼Áö Àü¼Û±â´É
  10. Realtime Database¸¦ ÀÌ¿ëÇÑ Ã¤Æñâ´É ±¸Çö - äÆÃ¹æ ¸®½ºÆÃÈ­¸é
  11. Realtime Database¸¦ ÀÌ¿ëÇÑ Ã¤Æñâ´É ±¸Çö - äÆùæ ÃÊ´ë ±â´É
  12. Realtime Database¸¦ ÀÌ¿ëÇÑ Ã¤Æñâ´É ±¸Çö - Á¢¼Ó ÁßÀÎ À¯Àú Ç¥½ÃÇϱâ
  13. Storage¸¦ ÀÌ¿ëÇÑ ÆÄÀÏ Àü¼Û±â´É
  14. Cloud Messaging°ú FunctionsÀ» ÀÌ¿ëÇÑ Çª½Ã¸Þ¼¼Áö ±â´É - FCM Token Á¤º¸ ÀúÀå
  15. Cloud Messaging°ú FunctionsÀ» ÀÌ¿ëÇÑ Çª½Ã¸Þ¼¼Áö ±â´É - Functions¸¦ ÅëÇÑ FCM ¹ß¼Û
  16. Cloud Messaging°ú FunctionsÀ» ÀÌ¿ëÇÑ Çª½Ã¸Þ¼¼Áö ±â´É - Service worker¸¦ ÀÌ¿ëÇÑ FCM¼ö½Å
  17. Realtime Database ±ÇÇÑ ¼³Á¤

 



Ãâó: http://cionman.tistory.com/64 [Suwoni-Codelab]