{"id":2515,"date":"2017-04-23T16:14:25","date_gmt":"2017-04-23T23:14:25","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2515"},"modified":"2024-01-12T12:26:11","modified_gmt":"2024-01-12T20:26:11","slug":"getting-started-with-urban-airship-push-notifications","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/getting-started-with-urban-airship-push-notifications\/","title":{"rendered":"\ub3c4\uc2dc \ube44\ud589\uc120 \ud478\uc2dc \uc54c\ub9bc \uc2dc\uc791\ud558\uae30"},"content":{"rendered":"<p style=\"text-align: center\"><img decoding=\"async\" style=\"max-width: 30% ! important\" src=\"\/wp-content\/original-assets\/2017\/january\/getting-started-with-urban-airship-push-notifications\/urban-airship-logo-blue.png\" alt=\"Urban Airship Logo\" align=\"middle\" \/><\/p>\n<p><a href=\"https:\/\/www.urbanairship.com\/\">\ub3c4\uc2dc \ube44\ud589\uc120<\/a> \ub294 \uc778\uae30 \uc788\ub294 \uba54\uc2dc\uc9d5 \ubc0f \uc54c\ub9bc \uc11c\ube44\uc2a4\uc785\ub2c8\ub2e4. <span style=\"font-weight: 400\">\u00a0\uc774 \uae00\uc758 1\ubd80\uc5d0\uc11c\ub294 \ub3c4\uc2dc \ube44\ud589\uc120 \ud478\uc2dc \uc54c\ub9bc\uc744 \uc124\uc815\ud558\ub294 \ubc29\ubc95\uc744 \uc0b4\ud3b4\ubd05\ub2c8\ub2e4. 2\ubd80\uc5d0\uc11c\ub294 \uc774\ub7ec\ud55c \uc54c\ub9bc\uc744 \uc0ac\uc6a9\ud558\uc5ec \ub2e4\uc74c\uacfc \uac19\uc740 \uc791\uc5c5\uc744 \uc218\ud589\ud569\ub2c8\ub2e4.<\/span> \uc5d0\uc11c \ubcf5\uc81c\ub97c \ud2b8\ub9ac\uac70\ud569\ub2c8\ub2e4. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/developers\/mobile\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ubaa8\ubc14\uc77c<\/a>.<\/p>\n<h2>\uc900\ube44\ubb3c<\/h2>\n<p>UA(Urban Airship)\ub294 \ubb34\ub8cc\ub85c \uc774\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. (\ud604\uc7ac \uac00\uaca9 \uc815\ubcf4\ub294 UA \uc6f9\uc0ac\uc774\ud2b8\ub97c \ucc38\uc870\ud558\uc138\uc694.) \ub2e8, \uacc4\uc815\uc744 \ub4f1\ub85d\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li>\ub3c4\uc2dc \ube44\ud589\uc120 \uacc4\uc815<\/li>\n<li>Firebase \uacc4\uc815(Google \ub85c\uadf8\uc778 \uacc4\uc815 \ud544\uc694)<\/li>\n<li>\uc548\ub4dc\ub85c\uc774\ub4dc \uc2a4\ud29c\ub514\uc624(\ub610\ub294 Xcode)<\/li>\n<\/ul>\n<h2>1\ubd80 - \ub3c4\uc2dc \ube44\ud589\uc120 \uc124\uc815\ud558\uae30<\/h2>\n<p>IDE\uc5d0\uc11c \uae30\uc874 Android \ub610\ub294 iOS \ud504\ub85c\uc81d\ud2b8\ub97c \ubd88\ub7ec\uc624\uac70\ub098 \uc0c8 \ud504\ub85c\uc81d\ud2b8\ub97c \ub9cc\ub4ed\ub2c8\ub2e4. \uc5ec\uae30\uc11c\ub294 Android\ub97c \uc0ac\uc6a9\ud574\uc11c \uc124\uba85\ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>UA \uacc4\uc815\uc5d0 \ub85c\uadf8\uc778\ud569\ub2c8\ub2e4. \uc0c8 \uc571 \ud398\uc774\uc9c0\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4. \uc571 \uc774\ub984\uc744 \uc785\ub825\ud569\ub2c8\ub2e4. \uc0ac\uc6a9\ud558\ub824\ub294 \ud50c\ub7ab\ud3fc\uc744 \uc120\ud0dd\ud569\ub2c8\ub2e4. (\uc774 \uc608\uc5d0\uc11c\ub294 Android\uc640 iOS\ub97c \uc120\ud0dd\ud569\ub2c8\ub2e4.) '\uc800\uc7a5'\uc744 \ub204\ub974\uba74 \ube60\ub978 \uc2dc\uc791 \ud034\ub4dc\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4.  (\uc774\ubbf8 \ube60\ub978 \uc2dc\uc791\uc744 \uc9c4\ud589\ud588\uc9c0\ub9cc \uc124\uc815\uc5d0 \ub300\ud55c \ubcf5\uc2b5\uc774 \ud544\uc694\ud55c \uacbd\uc6b0 Android\uc6a9 \ub2e8\uacc4\ub97c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\u00a0<a href=\"https:\/\/docs.urbanairship.com\/platform\/android\/\">\uc5ec\uae30<\/a>\u00a0\ubc0f iOS\uc6a9 <a href=\"https:\/\/docs.urbanairship.com\/platform\/ios\/\">\uc5ec\uae30<\/a>.)<\/p>\n<p style=\"text-align: center\"><img decoding=\"async\" style=\"max-width: 70% ! important\" src=\"\/wp-content\/original-assets\/2017\/january\/getting-started-with-urban-airship-push-notifications\/urban-airship---new-app.png\" alt=\"Urban Airship New Application Dialog\" align=\"middle\" \/><\/p>\n<h3>UA \ube60\ub978 \uc2dc\uc791<\/h3>\n<p>\uc5ec\uae30\uc5d0\uc11c \uc120\ud0dd\ud55c \uac01 \ud50c\ub7ab\ud3fc\uc5d0 \ub300\ud55c \ud0ed\uc774 \uc81c\uacf5\ub429\ub2c8\ub2e4. \uc55e\uc11c \uc5b8\uae09\ud588\ub4ef\uc774 \uc774\ubc88\uc5d0\ub294 Android\uc6a9 \ube4c\ub4dc\uc5d0 \uc911\uc810\uc744 \ub450\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub3c4\uc2dc \ube44\ud589\uc120 \ube60\ub978 \uc2dc\uc791 \ub2e8\uacc4\ub97c \ub530\ub974\uc138\uc694. \uc81c\uac00 \uacaa\uc740 \ubb38\uc81c\uc5d0 \ub300\ud55c \uba87 \uac00\uc9c0 \ud301\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h4>\ub3c4\uc2dc \ube44\ud589\uc120 \ube60\ub978 \uc2dc\uc791\uc758 1, 2\ub2e8\uacc4<\/h4>\n<p>UA \uac00\uc774\ub4dc\ub294 \ud504\ub85c\uc81d\ud2b8\uc758 build.gradle \uc2a4\ud06c\ub9bd\ud2b8\ub97c \ucc38\uc870\ud558\uc9c0\ub9cc \ubaa8\ub4c8 build.gradle \uc2a4\ud06c\ub9bd\ud2b8 \uc218\uc815\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4. \ud504\ub85c\uc81d\ud2b8\uc758 gradle \uc2a4\ud06c\ub9bd\ud2b8\uc5d0 UA \ub9ac\ud3ec\uc9c0\ud1a0\ub9ac\ub97c \ucd94\uac00\ud558\uace0 \ubaa8\ub4c8 gradle \uc2a4\ud06c\ub9bd\ud2b8\uc5d0 UA \uc885\uc18d\uc131\uc744 \ucd94\uac00\ud588\uc2b5\ub2c8\ub2e4. \uc798 \uc791\ub3d9\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ubaa8\ub4c8 gradle \uc2a4\ud06c\ub9bd\ud2b8\uc5d0\uc11c applicationID\ub97c \ucc3e\uc2b5\ub2c8\ub2e4.<\/p>\n<h4>\ub3c4\uc2dc \ube44\ud589\uc120 \ube60\ub978 \uc2dc\uc791 5\ub2e8\uacc4<\/h4>\n<p>\ub098\ub9cc\uc758 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ud074\ub798\uc2a4\ub97c \ub9cc\ub4e4\ub824\uba74 \ud504\ub85c\uc81d\ud2b8 \ud0d0\uc0c9 \ucc3d\uc758 \uc571 \uc601\uc5ed\uc744 \ub9c8\uc6b0\uc2a4 \uc624\ub978\ucabd \ubc84\ud2bc\uc73c\ub85c \ud074\ub9ad\ud558\uace0 \uc0c8\ub85c \ub9cc\ub4e4\uae30 &gt; \uc790\ubc14 \ud074\ub798\uc2a4\ub97c \uc120\ud0dd\ud569\ub2c8\ub2e4. \ud31d\uc5c5\uc5d0\uc11c \ud074\ub798\uc2a4 \uc774\ub984\uc744 \uc124\uc815\ud569\ub2c8\ub2e4. \uadf8\ub7f0 \ub2e4\uc74c \uc218\ud37c\ud074\ub798\uc2a4\uc5d0 android.app.Application\uc744 \uc785\ub825\ud569\ub2c8\ub2e4.<\/p>\n<p style=\"text-align: center\"><img decoding=\"async\" style=\"max-width: 50% ! important\" src=\"\/wp-content\/original-assets\/2017\/january\/getting-started-with-urban-airship-push-notifications\/screen-shot-2017-01-28-at-3.37.30-pm.png\" alt=\"Creating an Application subclass\" align=\"middle\" \/><\/p>\n<p>\ub9e4\ub2c8\ud398\uc2a4\ud2b8 \ud30c\uc77c\uc744 \uc5c5\ub370\uc774\ud2b8\ud558\ub294 \uac83\uc744 \uc78a\uc9c0 \ub9c8\uc138\uc694. \ud074\ub798\uc2a4\uc758 \uc815\uaddc\ud654\ub41c \uc774\ub984\uc744 \uc0ac\uc6a9\ud558\uac70\ub098 UA\uac00 \ud45c\uc2dc\ud558\ub294 \uc9e7\uc740 \uc591\uc2dd\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc815\uaddc\ud654\ub41c \uc591\uc2dd\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<pre class=\"lang:default decode:true\">    &lt;application\r\n        android:name=\"com.couchbase.cblite.android.cbpushsync.MyApplication\"<\/pre>\n<h4>\ub3c4\uc2dc \ube44\ud589\uc120 \ud035\uc2a4\ud0c0\ud2b8 6\ub2e8\uacc4<\/h4>\n<p>UA\ub294 FCM(\ud30c\uc774\uc5b4\ubca0\uc774\uc2a4 \ud074\ub77c\uc6b0\ub4dc \uba54\uc2dc\uc9d5)\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. 6\ub2e8\uacc4\uc5d0\ub294 UA\uc758 \ucd94\uac00 \ubb38\uc11c\ub85c \uc5f0\uacb0\ub418\ub294 \ub9c1\ud06c\uac00 \uc788\uc2b5\ub2c8\ub2e4. \uc774 \uc0c8 \ud398\uc774\uc9c0\uc5d0\ub294 \uc571\uc758 API \ud0a4 \uc0dd\uc131\uc5d0 \ub300\ud55c \uc790\uc138\ud55c \uc9c0\uce68\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ud574\ub2f9 \ud398\uc774\uc9c0\uc758 '\ub3c4\uc2dc \ube44\ud589\uc120\uc73c\ub85c FCM\/GCM \uc11c\ube44\uc2a4 \uad6c\uc131\ud558\uae30' \uc81c\ubaa9 \uc544\ub798\uc758 \uc9c0\uce68\uc774 \uc57d\uac04 \uc624\ub798\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \uc774\uc81c \ube60\ub978 \uc2dc\uc791 \uac00\uc774\ub4dc\uc758 \ub9c8\uc9c0\ub9c9 \ubd80\ubd84\uc5d0 API \ud0a4\uc640 \ud328\ud0a4\uc9c0\ub97c \uc785\ub825\ud558\ub294 \uc601\uc5ed\uc774 \ubb38\uc11c\uc5d0 \ub098\uc640 \uc788\ub294 \uc704\uce58 \ub300\uc2e0\uc5d0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ud55c \uacf3\uc5d0\uc11c UA \ubb38\uc11c\ub294 \"Google API \ud504\ub85c\uc81d\ud2b8 \ubc88\ud638\"\ub97c \ucc38\uc870\ud569\ub2c8\ub2e4. \uc774 \ubc88\ud638\ub97c FCM\uc5d0\uc11c\ub294 \ubc1c\uc2e0\uc790 ID\ub77c\uace0 \ubd80\ub985\ub2c8\ub2e4.<\/p>\n<h2>\ud14c\uc2a4\ud2b8<\/h2>\n<p>\ud035\uc2a4\ud0c0\ud2b8\ub294 \ubcc4\ub2e4\ub978 \uc124\uba85 \uc5c6\uc774 \ud14c\uc2a4\ud2b8 \uc601\uc5ed\uc73c\ub85c \ub05d\ub0a9\ub2c8\ub2e4. \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc11c\ube0c\ud074\ub798\uc2a4\uc5d0 \ud3ec\ud568\ub41c \ucf54\ub4dc\ub97c \ub2e4\uc2dc \uc0b4\ud3b4\ubcf4\uba74 \uc0ac\uc6a9\uc790 \uc54c\ub9bc\uc744 \ud65c\uc131\ud654\ud558\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud14c\uc2a4\ud2b8\ud558\ub824\uba74 \uc571\uc744 \ube4c\ub4dc\ud558\uace0 \uc5d0\ubbac\ub808\uc774\ud130\ub098 \uae30\uae30\uc5d0 \uc124\uce58\ud558\uc138\uc694. (\ub450 \uac00\uc9c0 \ubaa8\ub450 \uc2dc\ub3c4\ud574 \ubcf4\uc558\uc9c0\ub9cc \ubaa8\ub450 \uc798 \uc791\ub3d9\ud588\uc2b5\ub2c8\ub2e4.)<\/p>\n<p style=\"text-align: center\"><img decoding=\"async\" style=\"max-width: 70% ! important\" src=\"\/wp-content\/original-assets\/2017\/january\/getting-started-with-urban-airship-push-notifications\/screen-shot-2017-01-28-at-4.15.18-pm.png\" alt=\"Urban Airship Test Panel\" align=\"middle\" \/><\/p>\n<p>\ud14d\uc2a4\ud2b8 \ud544\ub4dc\uc5d0 \ub0b4\uc6a9\uc744 \uc785\ub825\ud558\uace0 '\ud14c\uc2a4\ud2b8 \ubcf4\ub0b4\uae30'\ub97c \ud074\ub9ad\ud569\ub2c8\ub2e4. Android \uc54c\ub9bc \uc601\uc5ed\uc5d0 \uc544\uc774\ucf58\uc774 \ud45c\uc2dc\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc774\uc0c1\ud558\uac8c\ub3c4 \uc5ec\uae30\uc5d0\ub294 \ud14c\uc2a4\ud2b8 \uc601\uc5ed\uc5d0 \uc785\ub825\ud55c \ud14d\uc2a4\ud2b8\uac00 \ud3ec\ud568\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ubb38\uc81c \ud574\uacb0\uc744 \uc704\ud574 UA\ub294 \ubb38\uc11c \ud398\uc774\uc9c0\uc758 \uc624\ub978\ucabd \ud558\ub2e8\uc5d0 \uc788\ub294 \ubaa8\ud638\ud55c '\uc624\ub958 \ucf58\uc194' \ub9c1\ud06c\ub85c \uc548\ub0b4\ud569\ub2c8\ub2e4. \uc548\ud0c0\uae5d\uac8c\ub3c4 \uc774 \ub9c1\ud06c\ub97c \ud074\ub9ad\ud558\uba74 \ube60\ub978 \uc2dc\uc791 \uac00\uc774\ub4dc\ub85c \ub3cc\uc544\uac14\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>1\ubd80 \ub9c8\ubb34\ub9ac<\/h2>\n<p><span style=\"font-weight: 400\">\uc774\uc804 \ub2e8\uacc4\uc5d0\uc11c \ubcf4\uc168\ub4ef\uc774 \ub3c4\uc2dc \ube44\ud589\uc120 \uc124\uc815\uc740 \ub9e4\uc6b0 \uac04\ub2e8\ud569\ub2c8\ub2e4. \ud035\uc2a4\ud0c0\ud2b8\ub294 \uc54c\ub9bc \uc54c\ub9bc\uc744 \ubcf4\ub0b4\ub294 \ubc29\ubc95\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4. Couchbase Lite \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uc11c \ub370\uc774\ud130 \ub3d9\uae30\ud654\ub97c \ud2b8\ub9ac\uac70\ud558\ub824\uba74 \ub300\uc2e0 \ubb34\uc74c \uc54c\ub9bc\uc744 \ubcf4\ub0b4\uc57c \ud558\ub294\ub370, \uc774 \uae00\uc758 2\ubd80\uc5d0\uc11c\ub294 \uc774\uc5d0 \ub300\ud574 \ub2e4\ub8f9\ub2c8\ub2e4.<\/span><\/p>\n<h2>2\ubd80 - \ud074\ub77c\uc6b0\ub4dc\uc5d0\uc11c \ub370\uc774\ud130 \ub3d9\uae30\ud654 \ud2b8\ub9ac\uac70\ud558\uae30<\/h2>\n<p><span style=\"font-weight: 400\">\uc774 \uac8c\uc2dc\ubb3c\uc758 1\ubd80\uc5d0\uc11c\ub294 \ub3c4\uc2dc \ube44\ud589\uc120\uc744 \uc124\uc815\ud558\uace0, 2\ubd80\uc5d0\uc11c\ub294 \ub2e4\uc74c\uc744 \ubcf4\uc5ec\ub4dc\ub9ac\uaca0\uc2b5\ub2c8\ub2e4.<\/span> \ub85c \ube4c\ub4dc\ub41c \uc0d8\ud50c \uc548\ub4dc\ub85c\uc774\ub4dc \uc560\ud50c\ub9ac\ucf00\uc774\uc158 <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/current\/guides\/couchbase-lite\/index.html?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ub77c\uc774\ud2b8<\/a> \ub3c4\uc2dc \ube44\ud589\uc120 \ud478\uc2dc \uc54c\ub9bc\uc744 \uc0ac\uc6a9\ud558\uc5ec \ud074\ub77c\uc6b0\ub4dc\uc5d0\uc11c \ubaa8\ubc14\uc77c \uc7a5\uce58\ub85c \ub370\uc774\ud130 \ub3d9\uae30\ud654\ub97c \ud2b8\ub9ac\uac70\ud569\ub2c8\ub2e4. \uc5ec\uae30\uc11c '\ud074\ub77c\uc6b0\ub4dc'\ub294 <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/current\/guides\/sync-gateway\/index.html?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">\ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774<\/a> \uc778\uc2a4\ud134\uc2a4 \uc124\uc815\uc744 \ud14c\uc2a4\ud2b8 \uad6c\uc131\uc5d0 \uc801\uc6a9\ud588\uc2b5\ub2c8\ub2e4. (Couchbase Lite \ubc0f \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\ub294 \ubaa8\ub450 Couchbase Mobile \uc2a4\ud0dd\uc758 \uc77c\ubd80\uc785\ub2c8\ub2e4. Couchbase Mobile\uc5d0 \ub300\ud574 \uc77d\uc5b4\ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/developers\/mobile\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">\uc5ec\uae30<\/a>.)<\/p>\n<h2>\ubc30\uacbd<\/h2>\n<p>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ubaa8\ubc14\uc77c\uc740 \ub2e8\ubc29\ud5a5 \ubcf5\uc81c\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub370\uc774\ud130\ub97c \ub3d9\uae30\ud654\ud569\ub2c8\ub2e4. \ub85c\uceec \ub370\uc774\ud130\uac00 \ucd5c\uc2e0 \uc0c1\ud0dc\uac00 \ub418\uba74 \ubcf5\uc81c\ub97c \uc2e4\ud589\ud558\uace0 \uc989\uc2dc \uc885\ub8cc\ud558\ub3c4\ub85d \uc124\uc815\ud558\uac70\ub098(\"\uc6d0\uc0f7\"), \uc0c8\ub85c\uc6b4 \ubcc0\uacbd \uc0ac\ud56d\uc744 \ubb34\uae30\ud55c \uc218\uc2e0\ud558\ub3c4\ub85d \uc124\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4(\"\uc5f0\uc18d\").<\/p>\n<p>\uc5f0\uc18d \ubcf5\uc81c\ub97c \uc124\uc815\ud558\ub294 \ub300\uc2e0\uc5d0 \ub3d9\uae30\ud654\ub97c \ud2b8\ub9ac\uac70\ud558\uae30 \uc704\ud574 Urban Airship\uacfc \uac19\uc740 \uc11c\ube44\uc2a4\ub97c \uc0ac\uc6a9\ud558\ub824\ub294 \uba87 \uac00\uc9c0 \uc774\uc720\uac00 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, \uc5f0\uc18d '\ud480' \ubcf5\uc81c(\ud074\ub77c\uc6b0\ub4dc\uc5d0\uc11c \ub370\uc774\ud130\ub97c \uac80\uc0c9\ud558\ub294 \ubcf5\uc81c)\ub294 \ub124\ud2b8\uc6cc\ud06c \uc5f0\uacb0\uc744 \uacc4\uc18d \uc5f4\uc5b4 \ub450\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc5f0\uacb0\uc774 \uc5f4\ub824 \uc788\uc73c\uba74 \ube44\ud65c\uc131 \uc0c1\ud0dc\uc5d0\uc11c\ub3c4 \uc7a5\uce58 \ubc30\ud130\ub9ac\uac00 \uc5b4\ub290 \uc815\ub3c4 \uc18c\ubaa8\ub420 \uc218\ubc16\uc5d0 \uc5c6\uc2b5\ub2c8\ub2e4. \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc740 \uc804\uc1a1\ud560 \ubcc0\uacbd \uc0ac\ud56d\uc774 \uc788\uc744 \ub54c\ub9cc \uc5f0\uacb0\uc744 \uc5ec\ub294 \uac83\uc774 \uc774\uc0c1\uc801\uc785\ub2c8\ub2e4.<\/p>\n<p>\uadf8 \uc678\uc5d0\ub3c4, \uc5b4\ubc18 \uc5d0\uc5b4\uc2ed\uacfc \uac19\uc740 \ud478\uc2dc \uc54c\ub9bc \uc11c\ube44\uc2a4\uc5d0\ub294 \uc77c\ubc18\uc801\uc73c\ub85c \uc5ec\ub7ec \ub514\ubc14\uc774\uc2a4 \uadf8\ub8f9\uc744 \ub300\uc0c1\uc73c\ub85c \ud558\ub294 \ub2e4\uc591\ud55c \uace0\uae09 \uae30\ub2a5\uc774 \uc788\uc2b5\ub2c8\ub2e4. UA\ub97c \uc0ac\uc6a9\ud558\uba74 \uc791\uc5c5 \ubc1c\uc0dd \uc2dc\uae30\ub97c \uc720\uc5f0\ud558\uac8c \uad00\ub9ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c \uc571\uc5d0\uc11c \uc774\ubbf8 \ud478\uc2dc \uc11c\ube44\uc2a4\ub97c \uc0ac\uc6a9\ud558\uace0 \uc788\ub2e4\uba74 \uc774\ubbf8 \uc790\uccb4 \uac1c\ubc29\ud615 \ub124\ud2b8\uc6cc\ud06c \uc5f0\uacb0\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. \ub124\ud2b8\uc6cc\ud0b9\uc744 \ub450 \ubc30\ub85c \ub298\ub9ac\ub294 \ub300\uc2e0 \uc774\ub97c \uc0ac\uc6a9\ud558\uc5ec Couchbase Lite\ub97c \ud2b8\ub9ac\uac70\ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774 \uc608\uc81c\uc5d0\uc11c\ub294 \ub3c4\uc2dc \ube44\ud589\uc120\uc744 \ud1b5\ud569\ud558\ub294 \ubc29\ubc95\uc744 \ubcf4\uc5ec\ub4dc\ub9ac\uaca0\uc2b5\ub2c8\ub2e4. \uc644\uc804\ud788 \uc791\ub3d9\ud558\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uad6c\ucd95\ud560 \uc218 \uc788\ub3c4\ub85d \ud544\uc694\ud55c \ubaa8\ub4e0 \ubd80\ubd84\uc744 \uc548\ub0b4\ud574 \ub4dc\ub9ac\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\uc560\ud50c\ub9ac\ucf00\uc774\uc158<\/h2>\n<p>\ub2e4\uc74c\uc740 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \uc2e4\uc81c\ub85c \uc791\ub3d9\ud558\ub294 \ubaa8\uc2b5\uc785\ub2c8\ub2e4. \uc774\ubbf8\uc9c0\uc758 \uc704\ucabd\uc740 \uc571\uc774 \uc2e4\ud589 \uc911\uc778 \ubaa8\uc2b5\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4. \uc544\ub798 \ubd80\ubd84\uc740 \uba85\ub839\uc904\uc5d0\uc11c \uc804\uc1a1\ub41c \ud478\uc2dc \uc54c\ub9bc\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4. \uc571\uc774 \ud478\uc2dc \uc54c\ub9bc\uc744 \ubc1b\uc73c\uba74 \uc9c4\ud589\ub960 \uc2a4\ud53c\ub108\ub97c \ub744\uc6b0\uace0 \uc6d0\uc0f7 \ud480 \ubcf5\uc81c\ub97c \uc2e4\ud589\ud55c \ub2e4\uc74c \uc218\uc2e0\ub41c \ubb38\uc11c \ubcc0\uacbd \ub0b4\uc6a9\uc744 \ud14d\uc2a4\ud2b8 \ubcf4\uae30\uc5d0 \ud45c\uc2dc\ud569\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3417\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/04\/CBPushSync.gif\" alt=\"\" width=\"366\" height=\"544\" \/>\uc774 \uc608\uc81c\ub97c \uc774\ud574\ud558\uae30 \uc704\ud574 \ub124 \uac00\uc9c0 \ud074\ub798\uc2a4\uc640 \uc774\ub97c \ud558\ub098\ub85c \ubb36\ub294 '\uc811\ucc29\uc81c'\ub97c \uc0b4\ud3b4\ubcf4\uace0 \uacb0\uacfc\ub97c \ud14c\uc2a4\ud2b8\ud558\ub294 \ubc29\ubc95\uc744 \ubcf4\uc5ec\ub4dc\ub9ac\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\ub3c4\uc2dc \ube44\ud589\uc120\uc5d0 \ud544\uc694\ud55c \ud074\ub798\uc2a4<\/h2>\n<p>\ub3c4\uc2dc \ube44\ud589\uc120(UA)\uc744 \uc0ac\uc6a9\ud558\ub824\uba74 \ub450 \uac1c\uc758 \ud074\ub798\uc2a4, \uc989 Autopilot\uc758 \uc11c\ube0c\ud074\ub798\uc2a4\uc640 AirshipReceiver\uc758 \uc11c\ube0c\ud074\ub798\uc2a4\ub97c \uad6c\ud604\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n<h3>\uc790\ub3d9 \uc870\uc885 \uc7a5\uce58<\/h3>\n<p>UA\ub294 \uc0ac\uc6a9\ud558\uae30 \uc804\uc5d0 \ucd08\uae30\ud654\ud574\uc57c \ud569\ub2c8\ub2e4. \ub450 \uac00\uc9c0 \ubc29\ubc95\uc73c\ub85c \ucd08\uae30\ud654\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <code>takeOff<\/code> \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 <code>onCreate<\/code> \uba54\uc11c\ub4dc\ub97c \uc0ac\uc6a9\ud558\uac70\ub098 \uc624\ud1a0\ud30c\uc77c\ub7ff\uc758 \uc11c\ube0c\ud074\ub798\uc2a4\ub97c \uc0dd\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc800\ub294 \ud6c4\uc790\ub97c \uc120\ud0dd\ud588\uc2b5\ub2c8\ub2e4. \uc55e\uc73c\ub85c \uc0b4\ud3b4\ubcf4\uaca0\uc9c0\ub9cc UA\uc5d0\ub294 \uc11c\ube0c\ud074\ub798\uc2a4\ub97c \uc790\ub3d9\uc73c\ub85c \uc0ac\uc6a9\ud558\ub294 \ud765\ubbf8\ub85c\uc6b4 \ubc29\ubc95\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc218\uc5c5\uc740 \uac04\ub2e8\ud569\ub2c8\ub2e4. \uc54c\ub9bc \ud45c\uc2dc\uc904\uc5d0 \uc544\ubb34\uac83\ub3c4 \ud45c\uc2dc\ud558\uace0 \uc2f6\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc774 \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc0ac\uc6a9\uc790 \uc54c\ub9bc\uc744 \ub044\uae30\ub9cc \ud558\uba74 \ub429\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc740 CBAutoPilot.java\uc758 \uc804\uccb4 \ubaa9\ub85d\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">package com.couchbase.cblite.android.cbpushsync;\r\n\r\nimport com.urbanairship.Autopilot;\r\nimport com.urbanairship.UAirship;\r\n\r\npublic class CBAutoPilot extends Autopilot {\r\n    @Override\r\n    public void onAirshipReady(UAirship airship) {\r\n        airship.getPushManager().setUserNotificationsEnabled(false);\r\n    }\r\n}<\/pre>\n<p>\uc774 \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud558\uae30 \uc704\ud574 UA\ub294 \uc548\ub4dc\ub85c\uc774\ub4dc\uc5d0 \uace0\uc720\ud55c \uae30\uc220\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. Android \ub9e4\ub2c8\ud398\uc2a4\ud2b8 \ud30c\uc77c\uc5d0\uc11c \ud56d\ubaa9\uc5d0 \uc0ac\uc6a9\ud560 \ud074\ub798\uc2a4\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4. \ud544\uc790\uc758 \uacbd\uc6b0 \ud56d\ubaa9\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4( <code>\uc560\ud50c\ub9ac\ucf00\uc774\uc158<\/code> \uc139\uc158):<\/p>\n<pre class=\"lang:default decode:true\">        &lt;meta-data android:name=\"com.urbanairship.autopilot\"\r\n            android:value=\"com.couchbase.cblite.android.cbpushsync.CBAutoPilot\"\/&gt;\r\n<\/pre>\n<p>\uc5ec\uae30\uc11c \uc57d\uac04\uc758 \uc548\ub4dc\ub85c\uc774\ub4dc \ub9c8\ubc95\uc774 \uc77c\uc5b4\ub0a9\ub2c8\ub2e4. UA\uc5d0\ub294 \ucd08\uae30\ud654\ub97c \uc790\ub3d9\ud654\ud558\ub294 \ucf58\ud150\uce20 \ud504\ub85c\ubc14\uc774\ub354 \ud074\ub798\uc2a4\uac00 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \ucf58\ud150\uce20 \ud504\ub85c\ubc14\uc774\ub354\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 <code>onCreate<\/code> \uba54\uc11c\ub4dc\uac00 \ud638\ucd9c\ub429\ub2c8\ub2e4. UA\ub294 \uc774\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc774 \uba54\ud0c0\ub370\uc774\ud130 \ud56d\ubaa9\uc744 \uc77d\uace0, \ud558\uc704 \ud074\ub798\uc2a4\ub97c \uc778\uc2a4\ud134\uc2a4\ud654\ud558\uba70, \uc774 \uba54\ud0c0\ub370\uc774\ud130 \ud56d\ubaa9\uc744 \uc77d\ub294 \ucf54\ub4dc\ub97c \ud3ec\ud568\ud558\uae30 \uc704\ud574 <code>onAirshipReady<\/code> \uba54\uc11c\ub4dc\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n<h3>\ube44\ud589\uc120 \uc218\uc2e0\uae30<\/h3>\n<p>UA\uac00 \ucd08\uae30\ud654\ub418\uace0 \uc0ac\uc6a9\ud560 \uc900\ube44\uac00 \ub418\uc5c8\uc73c\uba74 \uc54c\ub9bc\uc744 \ucea1\ucc98\ud558\uace0 \ucc98\ub9ac\ud558\ub294 \ud6c5\uc744 \uc81c\uacf5\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774\ub97c \uc704\ud574 AirshipReceiver\uc758 \uc11c\ube0c\ud074\ub798\uc2a4\ub97c \uad6c\ud604\ud569\ub2c8\ub2e4. \ub2e4\uc2dc \ub9d0\ud558\uc9c0\ub9cc, \ud074\ub798\uc2a4\ub294 \uac04\ub2e8\ud569\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc740 CBAirshipReceiver.java\uc758 \uc804\uccb4 \ubaa9\ub85d\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">package com.couchbase.cblite.android.cbpushsync;\r\n\r\nimport android.content.Context;\r\nimport android.support.annotation.NonNull;\r\nimport android.util.Log;\r\n\r\nimport com.urbanairship.AirshipReceiver;\r\nimport com.urbanairship.push.PushMessage;\r\n\r\npublic class CBAirshipReceiver extends AirshipReceiver {\r\n    private static final String TAG = \"CBAirshipReceiver\";\r\n\r\n    @Override\r\n    protected void onPushReceived(Context context, PushMessage message, boolean notificationPosted) {\r\n        Log.i(TAG, \"Received push message. Alert: \" + message.getAlert() + \". posted notification: \" + notificationPosted);\r\n\r\n        switch(message.getAlert()) {\r\n            case \"start\":\r\n                CBLHelper.getInstance().startReplication();\r\n                break;\r\n            case \"stop\":\r\n                CBLHelper.getInstance().stopReplication();\r\n                break;\r\n            case \"reset\":\r\n                CBLHelper.getInstance().reset();\r\n                break;\r\n            default:\r\n                break;\r\n        }\r\n    }\r\n\r\n    @Override\r\n    protected void onChannelCreated(@NonNull Context context, @NonNull String channelId) {\r\n        Log.i(TAG, \"Channel created. Channel Id:\" + channelId + \".\");\r\n    }\r\n\r\n    @Override\r\n    protected void onChannelUpdated(@NonNull Context context, @NonNull String channelId) {\r\n        Log.i(TAG, \"Channel updated. Channel Id:\" + channelId + \".\");\r\n    }\r\n\r\n    @Override\r\n    protected void onChannelRegistrationFailed(Context context) {\r\n        Log.i(TAG, \"Channel registration failed.\");\r\n    }\r\n}\r\n<\/pre>\n<p>\uc571 \ud14c\uc2a4\ud2b8\uc5d0 \ub4e4\uc5b4\uac00\uba74 UA\ub97c \ud1b5\ud574 \uc54c\ub9bc \ubb38\uad6c\ub97c \uc124\uc815\ud558\ub294 \ubc29\ubc95\uc744 \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc5ec\uae30\uc11c\ub294 \uba87 \uac00\uc9c0 \ub2e4\ub978 \uc6d0\uaca9 \uc791\uc5c5\uc744 \uc81c\uacf5\ud558\ub294 \ub370 \uc0ac\uc6a9\ud588\uc2b5\ub2c8\ub2e4. \uc54c\ub9bc\uc740 \ubcf5\uc81c\ub97c \uc2dc\uc791\ud558\uace0 \uc911\uc9c0\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ub610\ud55c '\uc7ac\uc124\uc815'\uc744 \uc804\uc1a1\ud558\uc5ec \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc0ad\uc81c\ud558\ub294 \uae30\ub2a5\ub3c4 \ud3ec\ud568\ud588\uc2b5\ub2c8\ub2e4. \uc774\ub807\uac8c \ud55c \uc774\uc720\ub294 \ub370\uc774\ud130\ub97c \ubcf5\uc81c\ud558\uba74 \uae30\uae30\uc5d0\uc11c \uc601\uad6c\uc801\uc73c\ub85c \uc720\uc9c0\ub418\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. \uc571\uc744 \uc885\ub8cc\ud574\ub3c4 \ub85c\uceec \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub294 \ucd08\uae30\ud654\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\ub97c \ud1b5\ud574 \ud56d\uc0c1 \uc0c8 \ubb38\uc11c\ub97c \ucd94\uac00\ud574\uc57c\ub9cc \ubcf5\uc81c\uac00 \uc791\ub3d9\ud558\ub294 \uac83\uc744 \ubcf4\uc5ec\uc8fc\ub294 \ub300\uc2e0 \uc7a5\uce58 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc9c0\uc6b0\uace0 \ub2e4\uc2dc \uc2dc\uc791\ud558\ub294 \uae30\ub2a5\uc744 \ucd94\uac00\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc704\uc5d0\uc11c \uc7ac\uc815\uc758\ub41c \uba87 \uac00\uc9c0 \ub2e4\ub978 \uba54\uc11c\ub4dc\ub97c \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uba54\uc11c\ub4dc\ub294 \ubaa8\ub450 AirshipReceiver \ud074\ub798\uc2a4\uc5d0\uc11c \ucd94\uc0c1\uc801\uc73c\ub85c \uc120\uc5b8\ub418\uc5b4 \uc788\uc73c\ubbc0\ub85c \ucd5c\uc18c\ud55c\uc758 \uad6c\ud604\ub9cc \ud3ec\ud568\ud574\uc57c \ud569\ub2c8\ub2e4. \ud558\uc9c0\ub9cc \uba54\uc2dc\uc9c0\ub97c \ubcf4\ub0b4\ub824\uba74 \ub514\ubc14\uc774\uc2a4 \ucc44\ub110 ID\ub97c \uc54c\uc544\uc57c \ud569\ub2c8\ub2e4. \uc774 \ucc44\ub110 ID\ub294 \uc790\uc8fc \ubcc0\uacbd\ub429\ub2c8\ub2e4. \ub2e4\uc74c \uae00\uc5d0\uc11c\ub294 \uc11c\ubc84 \uce21 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \ub514\ubc14\uc774\uc2a4\uc5d0 \uba54\uc2dc\uc9c0\ub97c \ubcf4\ub0bc \uc218 \uc788\ub3c4\ub85d ID\ub97c \ub4f1\ub85d\ud558\ub294 \ubc29\ubc95\uc744 \ubcf4\uc5ec\ub4dc\ub9ac\uaca0\uc2b5\ub2c8\ub2e4. \uc9c0\uae08\uc740 ID\ub97c \ucd94\ucd9c\ud558\uc5ec \ud14c\uc2a4\ud2b8\uc5d0 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub3c4\ub85d ID\ub97c \uae30\ub85d\ud574 \ub450\ub294 \uac83\uc774 \uc720\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n<h2>\uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ud074\ub798\uc2a4<\/h2>\n<p>\uc704\uc758 \ud6c5\uc740 UA\ub97c \uc2e4\ud589\ud558\uace0, \uc54c\ub9bc\uc744 \ud2b8\ub798\ud551\ud558\uace0, \ucf58\ud150\uce20\uc5d0 \ub530\ub77c \uc561\uc158\uc744 \ud2b8\ub9ac\uac70\ud569\ub2c8\ub2e4. \uc774\uc81c \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc790\uccb4\ub97c \uc0b4\ud3b4\ubcf4\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774 \uc571\uc740 \ubb38\uc11c\uac00 \uac00\uc838\uc62c \ub54c \ubb38\uc11c \ub0b4\uc6a9\uc744 \ubcfc \uc218 \uc788\ub3c4\ub85d \uc124\uc815\ub41c \ud558\ub098\uc758 \ud65c\ub3d9\uc73c\ub85c \uad6c\uc131\ub429\ub2c8\ub2e4. \ub2e4\ub978 \ud074\ub798\uc2a4\ub294 \uc77c\ubd80 Couchbase Lite \uae30\ub2a5\uc744 \ud5ec\ud37c\ub85c \ub798\ud551\ud569\ub2c8\ub2e4.<\/p>\n<h3>\uc8fc\uc694 \ud65c\ub3d9<\/h3>\n<p>\uae30\ubcf8 \ud65c\ub3d9\uc5d0\uc11c \ubcf5\uc81c\uac00 \uc9c4\ud589\ub418\ub294 \ub3d9\uc548 \uc9c4\ud589\ub960 \ud45c\uc2dc\uc904\uc744 \ud45c\uc2dc\ud55c \ub2e4\uc74c \uc804\uc1a1\ub41c \ubb38\uc11c \uc9d1\ud569\uc744 \ud45c\uc2dc\ud558\uace0 \uc2f6\uc2b5\ub2c8\ub2e4.<\/p>\n<p>MainActivity.java\uc758 \uc804\uccb4 \ubaa9\ub85d\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">package com.couchbase.cblite.android.cbpushsync;\r\n\r\nimport android.os.Bundle;\r\nimport android.support.v7.app.AppCompatActivity;\r\nimport android.support.v7.widget.Toolbar;\r\nimport android.util.Log;\r\nimport android.view.View;\r\nimport android.widget.ProgressBar;\r\nimport android.widget.TextView;\r\n\r\nimport com.couchbase.lite.Database;\r\nimport com.couchbase.lite.Document;\r\nimport com.couchbase.lite.DocumentChange;\r\nimport com.couchbase.lite.replicator.Replication;\r\nimport com.couchbase.lite.replicator.ReplicationState;\r\nimport com.fasterxml.jackson.databind.ObjectMapper;\r\n\r\nimport java.io.IOException;\r\n\r\npublic class MainActivity extends AppCompatActivity {\r\n    private static String TAG = MainActivity.class.getSimpleName();\r\n    private static final ObjectMapper mapper = new ObjectMapper();\r\n\r\n    private CBLHelper cblHelper = CBLHelper.getInstance();\r\n    private TextView documentView;\r\n    private ProgressBar progressBar;\r\n\r\n    @Override\r\n    protected void onCreate(Bundle savedInstanceState) {\r\n        super.onCreate(savedInstanceState);\r\n        setContentView(R.layout.activity_main);\r\n        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);\r\n        setSupportActionBar(toolbar);\r\n\r\n        documentView = (TextView) findViewById(R.id.documentView);\r\n        progressBar = (ProgressBar) findViewById(R.id.progressBar);\r\n\r\n        cblHelper.initialize(\r\n            new Database.ChangeListener() {\r\n                @Override\r\n                public void changed(Database.ChangeEvent event) {\r\n                    Log.i(TAG, \"Database change called: count - \" + event.getChanges().size());\r\n\r\n                    if (!event.isExternal()) {\r\n                        return;\r\n                    }\r\n\r\n                    String json = \"\";\r\n\r\n                    for (final DocumentChange change : event.getChanges()) {\r\n                        if (!change.isCurrentRevision()) {\r\n                            continue;\r\n                        }\r\n\r\n                        Document changedDoc = cblHelper.getExistingDocument(change.getDocumentId());\r\n\r\n                        if (changedDoc == null) continue;\r\n\r\n                        try {\r\n                            json += mapper.writeValueAsString(changedDoc.getProperties());\r\n                        } catch (IOException e) {\r\n                            e.printStackTrace();\r\n                        }\r\n                    }\r\n\r\n                    final String text = json;\r\n\r\n                    runOnUiThread(new Runnable() {\r\n                        @Override\r\n                        public void run() {\r\n                            documentView.setText(text);\r\n                        }\r\n                    });\r\n                }\r\n            },\r\n            new Replication.ChangeListener() {\r\n                @Override\r\n                public void changed(Replication.ChangeEvent event) {\r\n                    Log.i(TAG, \"Replication change called: \" + event.toString());\r\n\r\n                    if (event.getError() != null) return;\r\n\r\n                    if (event.getTransition() == null) return;\r\n\r\n                    ReplicationState dest = event.getTransition().getDestination();\r\n\r\n                    final int replicationProgress =\r\n                            ((dest == ReplicationState.STOPPING ||\r\n                              dest == ReplicationState.STOPPED) ?\r\n                                    View.INVISIBLE : View.VISIBLE);\r\n\r\n                    runOnUiThread(new Runnable() {\r\n                        @Override\r\n                        public void run() {\r\n                            progressBar.setVisibility(replicationProgress);\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n        );\r\n    }\r\n}<\/pre>\n<p>\uc5ec\uae30 \ucf54\ub4dc\uc758 \ud575\uc2ec\uc740 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc6a9\uacfc \ubcf5\uc81c\uc6a9 \ub450 \uac1c\uc758 \ubcc0\uacbd \ub9ac\uc2a4\ub108\ub85c \uad6c\uc131\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uac01 \ub9ac\uc2a4\ub108 \uc778\ud130\ud398\uc774\uc2a4\ub294 \ud558\ub098\uc758 \uba54\uc11c\ub4dc\ub97c \uc815\uc758\ud569\ub2c8\ub2e4. <code>\ubcc0\uacbd\ub428<\/code>.<\/p>\n<p>\ubb38\uc11c \ubcc0\uacbd \ub9ac\uc2a4\ub108\ub97c \uc0ac\uc6a9\ud558\uba74 \uc2e4\uc81c \ubb38\uc11c \uc5c5\ub370\uc774\ud2b8\ub97c \ucd94\uc801\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubcf5\uc81c\ub294 \ud55c \ubc88\uc5d0 \ub450 \uac1c \uc774\uc0c1\uc758 \ubb38\uc11c\ub97c \ubcc0\uacbd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubcc0\uacbd \uc774\ubca4\ud2b8\ub294 \ubb38\uc11c ID \ubaa9\ub85d\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4. \ubb38\uc11c ID\ub97c \ubc18\ubcf5\ud558\uc5ec \uac01 \ubb38\uc11c\ub97c \uc9c1\uc811 \uac80\uc0c9\ud558\uace0 JSON \ub0b4\uc6a9\uc744 \ubb38\uc790\uc5f4\ub85c \ubcc0\ud658\ud55c \ub2e4\uc74c \ud45c\uc2dc\ud560 \ud14d\uc2a4\ud2b8\uc5d0 \ucd94\uac00\ud569\ub2c8\ub2e4. \ubcc0\uacbd \ub9ac\uc2a4\ub108\ub294 \ubc31\uadf8\ub77c\uc6b4\ub4dc \uc2a4\ub808\ub4dc\uc5d0\uc11c \ud638\ucd9c\ub429\ub2c8\ub2e4. \ub9c8\ubb34\ub9ac\ud558\ub824\uba74 \uba54\uc778 \uc2a4\ub808\ub4dc\uc5d0\uc11c UI \uc694\uc18c\ub97c \uc870\uc791\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774 \uc791\uc5c5\uc740 <code>\ub7f0\uc628\uc720\uc544\uc774\uc2a4\ub808\ub4dc<\/code> \ud65c\ub3d9\uc758 \uba54\uc11c\ub4dc\uc785\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\ub978 \ub9ac\uc2a4\ub108\ub97c \uc0ac\uc6a9\ud558\uba74 \ubcf5\uc81c \uc0c1\ud0dc\uc5d0 \ub530\ub77c \ubc14\uc058\uac8c \ub300\uae30 \uc911\uc778 \uc2a4\ud53c\ub108(\ubb34\uae30\ud55c \uc9c4\ud589\ub960 \ud45c\uc2dc\uc904)\ub97c \ud45c\uc2dc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubcf5\uc81c \uc0c1\ud0dc \ubaa8\ub2c8\ud130\ub9c1\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\uc138\uc694. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/determining-status-replication-couchbase-lite\/\">\uc5ec\uae30<\/a>.<\/p>\n<h3>\ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub3c4\uc6b0\ubbf8 \ud074\ub798\uc2a4<\/h3>\n<p>\uc800\ub294 \uc885\uc885 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud568\uc218\ub97c \ud5ec\ud37c \ud074\ub798\uc2a4\ub85c \ub798\ud551\ud569\ub2c8\ub2e4. \ud5ec\ud37c\uc758 \uc778\uc2a4\ud134\uc2a4\uac00 \ud558\ub098\ub9cc \ud544\uc694\ud558\uae30 \ub54c\ubb38\uc5d0 \uc2f1\uae00\ud1a4 \ud328\ud134\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4. UA\uc640 \ub9c8\ucc2c\uac00\uc9c0\ub85c \uba54\uc778 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \uc2dc\uc791\ub418\uae30 \uc804\uc5d0 \ud5ec\ud37c\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uae30\ub97c \uc6d0\ud569\ub2c8\ub2e4. \uc800\ub294 \ucf58\ud150\uce20 \uacf5\uae09\uc790\uc5d0 \ucf54\ub4dc\ub97c \ub123\ub294 \ub3d9\uc77c\ud55c \uae30\uc220\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc740 CBLHelper.java\uc758 \uc804\uccb4 \ubaa9\ub85d\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:java decode:true\">package com.couchbase.cblite.android.cbpushsync;\r\n\r\nimport android.content.ContentProvider;\r\nimport android.content.ContentValues;\r\nimport android.database.Cursor;\r\nimport android.net.Uri;\r\nimport android.os.Handler;\r\nimport android.os.Looper;\r\nimport android.support.annotation.NonNull;\r\nimport android.support.annotation.Nullable;\r\nimport android.util.Log;\r\n\r\nimport com.couchbase.lite.CouchbaseLiteException;\r\nimport com.couchbase.lite.Database;\r\nimport com.couchbase.lite.Document;\r\nimport com.couchbase.lite.Manager;\r\nimport com.couchbase.lite.android.AndroidContext;\r\nimport com.couchbase.lite.replicator.Replication;\r\n\r\nimport java.io.IOException;\r\nimport java.net.URL;\r\n\r\npublic class CBLHelper extends ContentProvider {\r\n    public static final String TAG = \"Push Sync\";\r\n\r\n    private static String DB = \"db\";\r\n    \/\/private static String syncGateway = \"https:\/\/localhost:4984\";\r\n    private static String syncGateway = \"https:\/\/10.0.2.2:4984\";\r\n    private static URL syncGatewayURL;\r\n\r\n    private Manager manager;\r\n    private Database database;\r\n    private Replication puller;\r\n\r\n    private Database.ChangeListener databaseChangeListener;\r\n    private Replication.ChangeListener replicationChangeListener;\r\n\r\n    private static CBLHelper instance;\r\n\r\n    public static CBLHelper getInstance() { return instance; }\r\n\r\n    @Override\r\n    public boolean onCreate() {\r\n        instance = this;\r\n\r\n        enableLogging();\r\n\r\n        try {\r\n            syncGatewayURL = new URL(syncGateway + \"\/\" + DB);\r\n            manager = new Manager(new AndroidContext(getContext()), Manager.DEFAULT_OPTIONS);\r\n        } catch (IOException ex) {\r\n            ex.printStackTrace();\r\n        }\r\n\r\n        return true;\r\n    }\r\n\r\n    public void closeDatabase() {\r\n        database.close();\r\n    }\r\n\r\n    public void startReplication() {\r\n        puller.start();\r\n    }\r\n\r\n    public void stopReplication() { puller.stop(); }\r\n\r\n    public void reset() {\r\n        stopReplication();\r\n\r\n        try {\r\n            database.delete();\r\n        } catch (CouchbaseLiteException ex) {\r\n            ex.printStackTrace();\r\n        }\r\n\r\n        initialize(databaseChangeListener, replicationChangeListener);\r\n    }\r\n\r\n    public void initialize(Database.ChangeListener dbl, Replication.ChangeListener rl) {\r\n        try {\r\n            database = manager.getDatabase(DB);\r\n        } catch (CouchbaseLiteException ex) {\r\n            ex.printStackTrace();\r\n        }\r\n\r\n        database.addChangeListener(dbl);\r\n        databaseChangeListener = dbl;\r\n\r\n        puller = database.createPullReplication(syncGatewayURL);\r\n        puller.addChangeListener(rl);\r\n        replicationChangeListener = rl;\r\n    }\r\n\r\n    public Document getExistingDocument(String documentID) {\r\n        return database.getExistingDocument(documentID);\r\n    }\r\n\r\n    \/\/ Logging\r\n\r\n    private void enableLogging() {\r\n        Manager.enableLogging(TAG, Log.VERBOSE);\r\n        Manager.enableLogging(com.couchbase.lite.util.Log.TAG, Log.VERBOSE);\r\n        Manager.enableLogging(com.couchbase.lite.util.Log.TAG_SYNC_ASYNC_TASK, Log.VERBOSE);\r\n        Manager.enableLogging(com.couchbase.lite.util.Log.TAG_SYNC, Log.VERBOSE);\r\n        Manager.enableLogging(com.couchbase.lite.util.Log.TAG_QUERY, Log.VERBOSE);\r\n        Manager.enableLogging(com.couchbase.lite.util.Log.TAG_VIEW, Log.VERBOSE);\r\n        Manager.enableLogging(com.couchbase.lite.util.Log.TAG_DATABASE, Log.VERBOSE);\r\n    }\r\n\r\n    \/\/ Helper function to dispatch on UI thread\r\n    private void runOnUiThread(Runnable runnable) {\r\n        new Handler(Looper.getMainLooper()).post(runnable);\r\n    }\r\n\r\n    \/\/ Required overrides\r\n\r\n    @Nullable\r\n    @Override\r\n    public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) {\r\n        return null;\r\n    }\r\n\r\n    @Nullable\r\n    @Override\r\n    public String getType(@NonNull Uri uri) {\r\n        return null;\r\n    }\r\n\r\n    @Nullable\r\n    @Override\r\n    public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) {\r\n        return null;\r\n    }\r\n\r\n    @Override\r\n    public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) {\r\n        return 0;\r\n    }\r\n\r\n    @Override\r\n    public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection, @Nullable String[] selectionArgs) {\r\n        return 0;\r\n    }\r\n}\r\n<\/pre>\n<p>\uc774 \ud074\ub798\uc2a4\ub294 \uc587\uc740 \ub798\ud37c\ub97c \ud615\uc131\ud558\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud074\ub798\uc2a4\uc758 \uc778\uc2a4\ud134\uc2a4\ub294 <code>onCreate<\/code> \uc2f1\uae00\ud1a4\uc774 \ub429\ub2c8\ub2e4. \ub85c\uae45 \ud65c\uc131\ud654 \ubc0f \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uad00\ub9ac\uc790 \uc0dd\uc131\uacfc \uac19\uc740 \ub2e4\ub978 \uae30\ubcf8 \uc124\uc815\ub3c4 \uc218\ud589\ud569\ub2c8\ub2e4. \uc800\ub294 <code>\ucd08\uae30\ud654<\/code> \uba54\uc11c\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc2e4\uc81c\ub85c \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc5f4\uace0, \ud480 \ubcf5\uc81c\ub97c \uc900\ube44\ud558\uace0, \ub450 \uac1c\uc758 \ubcc0\uacbd \ub9ac\uc2a4\ub108\ub97c \uc5f0\uacb0\ud569\ub2c8\ub2e4. \uc774 \uba54\uc11c\ub4dc\ub294 Activity \ud074\ub798\uc2a4\uc5d0\uc11c \ud638\ucd9c\ub41c\ub2e4\ub294 \uc810\uc744 \uae30\uc5b5\ud558\uc138\uc694. (\ucc38\uace0: \uac01 \uc720\ud615\uc5d0 \ub300\ud574 \ubcc0\uacbd \ub9ac\uc2a4\ub108\ub97c \ub450 \uac1c \uc774\uc0c1 \uac00\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\ub294 \ucd5c\uc2e0 \ub9ac\uc2a4\ub108\ubfd0\ub9cc \uc544\ub2c8\ub77c \ucd94\uac00\ub41c \ubaa8\ub4e0 \ub9ac\uc2a4\ub108\uc758 \ubaa9\ub85d\uc744 \uc720\uc9c0\ud569\ub2c8\ub2e4.) \ub2e4\ub978 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uba54\uc11c\ub4dc\ub294 \uac04\ub2e8\ud55c \ub2e8\ucd95\ud0a4\ub9cc \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/p>\n<p>\ucf58\ud150\uce20 \uacf5\uae09\uc790\ub294 \uad6c\ud604\ud574\uc57c \ud558\ub294 \uba87 \uac00\uc9c0 \ud544\uc218 \uba54\uc18c\ub4dc\uac00 \uc788\uc2b5\ub2c8\ub2e4. \uc774\ub7ec\ud55c \uba54\uc18c\ub4dc\uc5d0 \ub300\ud55c \uc2a4\ud141\uc744 \uc81c\uacf5\ud574\uc57c \ud558\uba70, \ub9c8\uc9c0\ub9c9 \ub2e4\uc12f \uac00\uc9c0 \uba54\uc18c\ub4dc\uc5d0\uc11c \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\uc548\ub4dc\ub85c\uc774\ub4dc \ub9e4\ub2c8\ud398\uc2a4\ud2b8<\/h2>\n<p>\ub9c8\uc9c0\ub9c9\uc73c\ub85c, \uc774\uac83\uc774 \uc5b4\ub5bb\uac8c \uc11c\ub85c \uc5f0\uacb0\ub418\uace0 \ub2e4\uc591\ud55c \ubd80\ubd84\uc774 \ub178\ucd9c\ub418\ub294\uc9c0 \ubcf4\uc5ec\ub4dc\ub9ac\uae30 \uc704\ud574 \ud504\ub85c\uc81d\ud2b8\uc758 \uc548\ub4dc\ub85c\uc774\ub4dc \ub9e4\ub2c8\ud398\uc2a4\ud2b8 \ud30c\uc77c\uc744 \ud3ec\ud568\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc740 AndroidManifest.xml\uc758 \uc804\uccb4 \ubaa9\ub85d\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;manifest xmlns:android=\"https:\/\/schemas.android.com\/apk\/res\/android\"\r\n    package=\"com.couchbase.cblite.android.cbpushsync\"&gt;\r\n\r\n    &lt;application\r\n        android:allowBackup=\"true\"\r\n        android:icon=\"@mipmap\/ic_launcher\"\r\n        android:label=\"@string\/app_name\"\r\n        android:supportsRtl=\"true\"\r\n        android:theme=\"@style\/AppTheme\"&gt;\r\n        &lt;meta-data android:name=\"com.urbanairship.autopilot\"\r\n            android:value=\"com.couchbase.cblite.android.cbpushsync.CBAutoPilot\"\/&gt;\r\n        &lt;activity\r\n            android:name=\".MainActivity\"\r\n            android:label=\"@string\/app_name\"\r\n            android:theme=\"@style\/AppTheme.NoActionBar\"&gt;\r\n            &lt;intent-filter&gt;\r\n                &lt;action android:name=\"android.intent.action.MAIN\" \/&gt;\r\n\r\n                &lt;category android:name=\"android.intent.category.LAUNCHER\" \/&gt;\r\n            &lt;\/intent-filter&gt;\r\n        &lt;\/activity&gt;\r\n        &lt;receiver android:name=\".CBAirshipReceiver\"\r\n            android:exported=\"false\"&gt;\r\n\r\n            &lt;intent-filter&gt;\r\n                &lt;action android:name=\"com.urbanairship.push.CHANNEL_UPDATED\" \/&gt;\r\n                &lt;action android:name=\"com.urbanairship.push.OPENED\" \/&gt;\r\n                &lt;action android:name=\"com.urbanairship.push.RECEIVED\" \/&gt;\r\n                &lt;action android:name=\"com.urbanairship.push.DISMISSED\" \/&gt;\r\n\r\n                &lt;category android:name=\"${applicationId}\" \/&gt;\r\n            &lt;\/intent-filter&gt;\r\n        &lt;\/receiver&gt;\r\n        &lt;provider\r\n            android:authorities=\"${applicationId}.dbhelper\"\r\n            android:exported=\"false\"\r\n            android:enabled=\"true\"\r\n            android:name=\".CBLHelper\" \/&gt;\r\n    &lt;\/application&gt;\r\n\r\n&lt;\/manifest&gt;<\/pre>\n<p>UA \ub77c\uc774\ube0c\ub7ec\ub9ac\ub294 \uc790\uccb4 \ub9e4\ub2c8\ud398\uc2a4\ud2b8 \ud30c\uc77c\uacfc \ud568\uaed8 \uc81c\uacf5\ub429\ub2c8\ub2e4. \uc548\ub4dc\ub85c\uc774\ub4dc \ube4c\ub4dc \uc2dc\uc2a4\ud15c\uc740 \ubaa8\ub4e0 \ub2e4\ub978 \ub9e4\ub2c8\ud398\uc2a4\ud2b8 \ud30c\uc77c\uc744 \ud1b5\ud569\ud558\uc5ec \ucd5c\uc885 \ud30c\uc77c\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4. UA \ub77c\uc774\ube0c\ub7ec\ub9ac \ub9e4\ub2c8\ud398\uc2a4\ud2b8 \ud30c\uc77c\uc5d0\ub294 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ubd80\ud2b8\uc2a4\ud2b8\ub7a9\ud558\ub294 \ucf58\ud150\uce20 \uacf5\uae09\uc790\uc5d0 \ub300\ud55c \ud56d\ubaa9\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<h2>\ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774<\/h2>\n<p>\uc571\uc744 \uc0ac\uc6a9\ud574\ubcf4\uae30 \uc704\ud574 \uc800\ub294 \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc640 \ub0b4\uc7a5\ub41c \uc648\ub7ec\uc2a4 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc0ac\uc6a9\ud588\uc2b5\ub2c8\ub2e4. Walrus\ub294 <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/resources\/concepts\/in-memory-database\/\">\uc778\uba54\ubaa8\ub9ac \ub370\uc774\ud130\ubca0\uc774\uc2a4<\/a> \uc77c\ubc18\uc801\uc73c\ub85c \ud14c\uc2a4\ud2b8\uc6a9\uc73c\ub85c\ub9cc \uc0ac\uc6a9\ub429\ub2c8\ub2e4. \uc774\ub807\uac8c \ud558\uba74 \ubc31\uc5d4\ub4dc \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uc11c\ubc84 \uc778\uc2a4\ud134\uc2a4\ub97c \uc124\uc815\ud558\ub294 \uc218\uace0\ub97c \ub35c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc740 \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774 \uad6c\uc131 \ud30c\uc77c\uc758 \uc804\uccb4 \ubaa9\ub85d\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">{\r\n  \"log\": [\"HTTP+\"],\r\n  \"adminInterface\": \"127.0.0.1:4985\",\r\n  \"interface\": \"127.0.0.1:4984\",\r\n  \"CORS\": {\r\n    \"origin\":[\"*\"],\r\n    \"loginorigin\":[\"*\"],\r\n    \"headers\":[\"Content-Type\"],\r\n    \"maxAge\": 1728000\r\n  },\r\n  \"databases\": {\r\n    \"db\": {\r\n      \"server\": \"walrus:\",\r\n      \"users\": { \"GUEST\": {\"disabled\": false, \"admin_channels\": [\"*\"] } }\r\n    }\r\n  }\r\n}<\/pre>\n<p>\uc774\ub807\uac8c \ud558\uba74 \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uac00 \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc758 <code>localhost<\/code> \uc778\ud130\ud398\uc774\uc2a4\uc5d0 \uc5f0\uacb0\ud558\uace0, \ubaa8\ub4e0 \uad50\ucc28 \ucd9c\ucc98 \uc694\uccad\uc744 \uc218\ub77d\ud558\uace0, \ubaa8\ub4e0 \ucc44\ub110\uc5d0 \uc561\uc138\uc2a4\ud560 \uc218 \uc788\ub294 \ud2b9\uc218 GUEST\ub97c \ud65c\uc131\ud654\ud569\ub2c8\ub2e4. \ubaa8\ub4e0 \uac83\uc774 \uc81c\ub300\ub85c \uc791\ub3d9\ud558\ub294\uc9c0 \ud655\uc778\ud558\uae30 \uc704\ud574 \uc2dc\uc791\ud558\uae30\uc5d0 \ub9e4\uc6b0 \uc88b\uc740 \ubc94\uc6a9 \uad6c\uc131\uc785\ub2c8\ub2e4.<\/p>\n<p>Android \uc571\uc5d0\uc11c \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc758 IP \uc8fc\uc18c\ub85c 10.0.2.2\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc744 \ubcf4\uc168\uc744 \uac83\uc785\ub2c8\ub2e4. Android Studio\uc640 \ud568\uaed8 \uc81c\uacf5\ub418\ub294 \ud45c\uc900 \uc5d0\ubbac\ub808\uc774\ud130\ub294 \uc774 \uc8fc\uc18c\ub97c \ud638\uc2a4\ud305 \uba38\uc2e0\uc758 <code>localhost<\/code>. \ub2e4\ub978 \uc5d0\ubbac\ub808\uc774\ud130(Genymotion\ub3c4 \uc778\uae30 \uc788\ub294 \uc5d0\ubbac\ub808\uc774\ud130 \uc911 \ud558\ub098)\ub97c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0, \uc0ac\uc6a9\ud560 IP \uc8fc\uc18c\uac00 \ub2e4\ub974\ubbc0\ub85c \ubc18\ub4dc\uc2dc \ucc3e\uc544\ubcf4\uc138\uc694.<\/p>\n<p>\uac1c\ubc1c \uba38\uc2e0\uc5d0\uc11c \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\ub97c \uc124\uc815\ud558\ub294 \ubc29\ubc95\uc774\ub098 \uba85\ub839\uc904\uc5d0\uc11c \uc791\uc5c5\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574 \uc790\uc138\ud788 \uc54c\uc544\ubcf4\ub824\uba74 \ub2e4\uc74c\uc744 \ucc38\uc870\ud558\uc138\uc694. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/getting-comfortable-couchbase-mobile-installing-sync-gateway\/\">\ube14\ub85c\uadf8 \uc2dc\ub9ac\uc988<\/a>.<\/p>\n<h2>\ud14c\uc2a4\ud2b8<\/h2>\n<p>\ubaa8\ub4e0 \uac83\uc744 \ud14c\uc2a4\ud2b8\ud558\uace0 \ube14\ub85c\uadf8\uc758 \uc2dc\uc791 \ubd80\ubd84\uc5d0 \ud45c\uc2dc\ub41c \uc560\ub2c8\uba54\uc774\uc158\uc744 \ub179\ud654\ud558\uae30 \uc704\ud574 Android \uc5d0\ubbac\ub808\uc774\ud130\uc640 \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\ub97c \ud55c \ucef4\ud4e8\ud130\uc5d0\uc11c \ubaa8\ub450 \uc2e4\ud589\ud569\ub2c8\ub2e4. \uadf8\ub7f0 \ub2e4\uc74c REST API\ub97c \ud1b5\ud574 UA\uc5d0 \ud478\uc2dc \uc54c\ub9bc\uc744 \uac8c\uc2dc\ud569\ub2c8\ub2e4.<\/p>\n<p>\ud765\ubbf8\ub85c\uc6b4 \uac83\uc744 \uc900\ube44\ud558\uae30 \uc704\ud574 \uba3c\uc800 \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc5d0 \ubb38\uc11c\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \ub2e4\uc74c\uc740 \uc774\ub97c \uc704\ud55c \uc178 \uba85\ub839\uc5b4\uc785\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:sh decode:true\">$ curl -X PUT -H 'Content-Type: application\/json' -H 'Accept: application\/json' -d '{ \"test\" : \"UA\", \"channels\": \"public\" }' https:\/\/localhost:4984\/db\/doc\r\n<\/pre>\n<p>(\uc790\uc138\ud788 \uc54c\uc544\ubcf4\uae30 <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/getting-comfortable-with-couchbase-mobile-sync-gateway-via-the-command-line\/\">\uc5ec\uae30<\/a>).<\/p>\n<p>\ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc758 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc0c8 \ubb38\uc11c\uac00 \uc788\uace0 \uc571\uc774 \uc2e4\ud589 \uc911\uc774\ubbc0\ub85c \uc774\uc81c \ub0a8\uc740 \uac83\uc740 \ud480 \ubcf5\uc81c\ub97c \ud2b8\ub9ac\uac70\ud558\uc5ec \uc791\uc5c5\uc744 \ud655\uc778\ud558\ub294 \uac83\ubfd0\uc785\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc740 <code>curl<\/code> \uba85\ub839\uc744 \uc0ac\uc6a9\ud558\uc5ec \"\uc2dc\uc791\" \uc2e0\ud638\ub97c \ubcf4\ub0c5\ub2c8\ub2e4. \uc54c\ub9bc\uc758 \"\uc54c\ub9bc\" \ubd80\ubd84\uc5d0\uc11c \uac12\uc744 \uac00\uc838\uc640 \uc791\uc5c5\uc744 \ud2b8\ub9ac\uac70\ud558\ub294 \uac83\uc744 \uae30\uc5b5\ud558\uc138\uc694.<\/p>\n<pre class=\"lang:sh decode:true\">$ curl https:\/\/go.urbanairship.com\/api\/push -u 'appKey:appMasterSecret' -X POST -H 'Content-Type: application\/json' -H 'Accept: application\/vnd.urbanairship+json; version=3;' -d '{ \"audience\": { \"android_channel\": \"3110bc81-1c7b-4ef8-a7a3-7c56aab19f08\" }, \"notification\" : { \"alert\": \"start\" }, \"device_types\": \"all\" }'<\/pre>\n<p>\uc704\uc5d0 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ud0a4\uc640 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ub9c8\uc2a4\ud130 \ube44\ubc00\ubc88\ud638\ub97c \uc81c\uacf5\ud574\uc57c \ud569\ub2c8\ub2e4. \ub610\ud55c \ub85c\uadf8 \ud30c\uc77c\uc744 \ud655\uc778\ud558\uc5ec \"android_channel\"\uc5d0 \uc785\ub825\ud560 \ucc44\ub110 \uac12\uc744 \ud655\uc778\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774\ub294 \uc0c1\ub2f9\ud788 \uc815\uae30\uc801\uc73c\ub85c \ubcc0\uacbd\ub429\ub2c8\ub2e4. \uc548\ud0c0\uae5d\uac8c\ub3c4 UA\ub294 \uc774\ub97c \ud45c\uc2dc\ud558\uae30 \uc704\ud574 \ub9ce\uc740 \uc791\uc5c5\uc744 \uc218\ud589\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ud478\uc2dc \uc54c\ub9bc\uc774 \uc544\ubb34\ub7f0 \ud6a8\uacfc\uac00 \uc5c6\ub294 \uac83 \uac19\ub2e4\uba74 \ucc44\ub110 \uac12\uc744 \ud655\uc778\ud558\uc138\uc694.<\/p>\n<p>UA\uc5d0 \uac8c\uc2dc\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc740 \uc751\ub2f5\uc774 \ud45c\uc2dc\ub429\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:default decode:true\">{\"ok\":true,\"operation_id\":\"2a6c0edf-e5d0-4b4d-b762-ad5c4478c291\",\"push_ids\":[\"1951019a-2b7f-4f1b-8888-e87047a1feec\"],\"message_ids\":[],\"content_urls\":[]}<\/pre>\n<p>\ub9c8\uc9c0\ub9c9\uc73c\ub85c \ube48 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub85c \uc7ac\uc124\uc815\ud558\uc5ec \ub2e4\uc2dc \uc2dc\ub3c4\ud558\ub824\uba74 \uc774 \uae00\uc744 \uac8c\uc2dc\ud558\uba74 \ub429\ub2c8\ub2e4.<\/p>\n<pre class=\"lang:sh decode:true\">$ curl https:\/\/go.urbanairship.com\/api\/push -u 'appKey:appMasterSecret' -X POST -H 'Content-Type: application\/json' -H 'Accept: application\/vnd.urbanairship+json; version=3;' -d '{ \"audience\": { \"android_channel\": \"3110bc81-1c7b-4ef8-a7a3-7c56aab19f08\" }, \"notification\" : { \"alert\": \"reset\" }, \"device_types\": \"all\" }'\r\n<\/pre>\n<h2>\uacb0\ub860<\/h2>\n<p>\uc5ec\uae30\uae4c\uc9c0 \ud478\uc2dc \uc54c\ub9bc\uc744 \uae30\ubc18\uc73c\ub85c \ubcf5\uc81c\ub97c \uc218\ud589\ud560 \uc218 \uc788\ub3c4\ub85d Android \uc571\uc744 \uc900\ube44\ud588\uc2b5\ub2c8\ub2e4. \ub2e4\uc74c \uc0ac\ud56d\uc744 \uaf2d \ud655\uc778\ud558\uc138\uc694. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/node-js-swagger-monitor-document-changes-couchbase-mobile\/\">\uc774 \uac8c\uc2dc\ubb3c<\/a> \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774 \ubcc0\uacbd \ud53c\ub4dc \ubaa8\ub2c8\ud130\ub9c1\uc5d0 \ub300\ud574 \uc124\uba85\ud569\ub2c8\ub2e4.<\/p>\n<h2>\ud3ec\uc2a4\ud2b8 \uc2a4\ud06c\ub9bd\ud2b8<\/h2>\n<p>\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ubc0f \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774 \ub2e4\uc6b4\ub85c\ub4dc <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/downloads\/\">\uc5ec\uae30<\/a>. \ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624. <a href=\"https:\/\/developer.couchbase.com\/documentation\/mobile\/current\/guides\/couchbase-lite\/index.html?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">\ubb38\uc11c<\/a> \ub97c \ucc38\uc870\ud558\uc5ec \ud504\ub85c\uc81d\ud2b8\uc5d0 Couchbase Lite\ub97c \ucd94\uac00\ud558\ub294 \ubc29\ubc95\uc744 \ud655\uc778\ud558\uc138\uc694.<\/p>\n<p>\ub354 \ub9ce\uc740 \ub9ac\uc18c\uc2a4\ub97c \ud655\uc778\ud558\uc138\uc694. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/developers\/community\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">\uac1c\ubc1c\uc790 \ud3ec\ud138<\/a> \ud2b8\uc704\ud130\uc5d0\uc11c \ud314\ub85c\uc6b0\ud558\uc138\uc694 <a href=\"https:\/\/twitter.com\/CouchbaseDev\">\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \uac1c\ubc1c<\/a>.<\/p>\n<p>\uc9c8\ubb38\uc5d0 \ub300\ud55c \ub2f5\ubcc0\uc744 \uac8c\uc2dc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/www.couchbase.com\/blog\/ko\/forums\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">\ud3ec\ub7fc<\/a>. \uadf8\ub9ac\uace0 \ub2e4\uc74c\uc5d0\ub3c4 \uc801\uadf9\uc801\uc73c\ub85c \ucc38\uc5ec\ud569\ub2c8\ub2e4. <a href=\"https:\/\/stackoverflow.com\/questions\/tagged\/couchbase\">\uc2a4\ud0dd \uc624\ubc84\ud50c\ub85c<\/a>.<\/p>\n<p>\uc9c8\ubb38, \uc758\uacac, \ubcf4\uace0 \uc2f6\uc740 \uc8fc\uc81c \ub4f1\uc774 \uc788\uc73c\uba74 \ud2b8\uc704\ud130\uc5d0\uc11c \uc800\uc5d0\uac8c \uc5f0\ub77d\ud574 \uc8fc\uc138\uc694. <a href=\"https:\/\/twitter.com\/HodGreeley\">\ud638\ub4dc\uadf8\ub9b4\ub9ac<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Urban Airship is a popular messaging and notification service. \u00a0In part 1 of this post we&#8217;ll look at how to set up Urban Airship push notifications. In part 2 of the post we\u2019ll use these notifications to trigger replications in [&hellip;]<\/p>","protected":false},"author":73,"featured_media":10144,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1810],"tags":[],"ppma_author":[9042],"class_list":["post-2515","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-mobile"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.5 (Yoast SEO v26.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Urban Airship Push Notifications: What You Need to Start<\/title>\n<meta name=\"description\" content=\"Look at this blog post to see how to set up Urban Airship push notifications and how to use these notifications to trigger replications in Couchbase Mobile.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/ko\/getting-started-with-urban-airship-push-notifications\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Getting Started with Urban Airship Push Notifications\" \/>\n<meta property=\"og:description\" content=\"Look at this blog post to see how to set up Urban Airship push notifications and how to use these notifications to trigger replications in Couchbase Mobile.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/getting-started-with-urban-airship-push-notifications\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-04-23T23:14:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-12T20:26:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/04\/big-data-2001190_1280.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Hod Greeley, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@HodGreeley\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Hod Greeley, Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/\"},\"author\":{\"name\":\"Hod Greeley, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/9b62593c8a13531e53d52fcd5aabbca4\"},\"headline\":\"Getting Started with Urban Airship Push Notifications\",\"datePublished\":\"2017-04-23T23:14:25+00:00\",\"dateModified\":\"2024-01-12T20:26:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/\"},\"wordCount\":2410,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/big-data-2001190_1280.jpg\",\"articleSection\":[\"Couchbase Mobile\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/\",\"name\":\"Urban Airship Push Notifications: What You Need to Start\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/big-data-2001190_1280.jpg\",\"datePublished\":\"2017-04-23T23:14:25+00:00\",\"dateModified\":\"2024-01-12T20:26:11+00:00\",\"description\":\"Look at this blog post to see how to set up Urban Airship push notifications and how to use these notifications to trigger replications in Couchbase Mobile.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/big-data-2001190_1280.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/big-data-2001190_1280.jpg\",\"width\":1280,\"height\":720,\"caption\":\"Urban Airship with Couchbase\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getting Started with Urban Airship Push Notifications\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/9b62593c8a13531e53d52fcd5aabbca4\",\"name\":\"Hod Greeley, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/21eb69cb5d4a401fb23b149e4f4e9e87\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/52d0018695c0ced0d1c68cf64a6195c81dbac03dce5983f98eb209e7c84350df?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/52d0018695c0ced0d1c68cf64a6195c81dbac03dce5983f98eb209e7c84350df?s=96&d=mm&r=g\",\"caption\":\"Hod Greeley, Developer Advocate, Couchbase\"},\"description\":\"Hod Greeley is a Developer Advocate for Couchbase, living in Silicon Valley. He has over two decades of experience as a software engineer and engineering manager. He has worked in a variety of software fields, including computational physics and chemistry, computer and network security, finance, and mobile. Prior to joining Couchbase in 2016, Hod led developer relations for mobile at Samsung. Hod holds a Ph.D. in chemical physics from Columbia University.\",\"sameAs\":[\"https:\/\/hod.greeley.org\/blog\",\"https:\/\/x.com\/HodGreeley\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/hod-greeley\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Urban Airship Push Notifications: What You Need to Start","description":"\uc774 \ube14\ub85c\uadf8 \ud3ec\uc2a4\ud305\uc744 \ud1b5\ud574 \ub3c4\uc2dc \ube44\ud589\uc120 \ud478\uc2dc \uc54c\ub9bc\uc744 \uc124\uc815\ud558\ub294 \ubc29\ubc95\uacfc \uc774\ub7ec\ud55c \uc54c\ub9bc\uc744 \uc0ac\uc6a9\ud558\uc5ec Couchbase Mobile\uc5d0\uc11c \ubcf5\uc81c\ub97c \ud2b8\ub9ac\uac70\ud558\ub294 \ubc29\ubc95\uc744 \uc0b4\ud3b4\ubcf4\uc138\uc694.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/ko\/getting-started-with-urban-airship-push-notifications\/","og_locale":"ko_KR","og_type":"article","og_title":"Getting Started with Urban Airship Push Notifications","og_description":"Look at this blog post to see how to set up Urban Airship push notifications and how to use these notifications to trigger replications in Couchbase Mobile.","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/getting-started-with-urban-airship-push-notifications\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-04-23T23:14:25+00:00","article_modified_time":"2024-01-12T20:26:11+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/04\/big-data-2001190_1280.jpg","type":"image\/jpeg"}],"author":"Hod Greeley, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@HodGreeley","twitter_misc":{"Written by":"Hod Greeley, Developer Advocate, Couchbase","Est. reading time":"12\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/"},"author":{"name":"Hod Greeley, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/9b62593c8a13531e53d52fcd5aabbca4"},"headline":"Getting Started with Urban Airship Push Notifications","datePublished":"2017-04-23T23:14:25+00:00","dateModified":"2024-01-12T20:26:11+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/"},"wordCount":2410,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/big-data-2001190_1280.jpg","articleSection":["Couchbase Mobile"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/","url":"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/","name":"Urban Airship Push Notifications: What You Need to Start","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/big-data-2001190_1280.jpg","datePublished":"2017-04-23T23:14:25+00:00","dateModified":"2024-01-12T20:26:11+00:00","description":"\uc774 \ube14\ub85c\uadf8 \ud3ec\uc2a4\ud305\uc744 \ud1b5\ud574 \ub3c4\uc2dc \ube44\ud589\uc120 \ud478\uc2dc \uc54c\ub9bc\uc744 \uc124\uc815\ud558\ub294 \ubc29\ubc95\uacfc \uc774\ub7ec\ud55c \uc54c\ub9bc\uc744 \uc0ac\uc6a9\ud558\uc5ec Couchbase Mobile\uc5d0\uc11c \ubcf5\uc81c\ub97c \ud2b8\ub9ac\uac70\ud558\ub294 \ubc29\ubc95\uc744 \uc0b4\ud3b4\ubcf4\uc138\uc694.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/big-data-2001190_1280.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/big-data-2001190_1280.jpg","width":1280,"height":720,"caption":"Urban Airship with Couchbase"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/getting-started-with-urban-airship-push-notifications\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Getting Started with Urban Airship Push Notifications"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4, Couchbase","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/9b62593c8a13531e53d52fcd5aabbca4","name":"\ud638\ub4dc \uadf8\ub9b4\ub9ac, \uac1c\ubc1c\uc790 \uc639\ud638\uc790, \uce74\uc6b0\uce58\ubca0\uc774\uc2a4","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/21eb69cb5d4a401fb23b149e4f4e9e87","url":"https:\/\/secure.gravatar.com\/avatar\/52d0018695c0ced0d1c68cf64a6195c81dbac03dce5983f98eb209e7c84350df?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/52d0018695c0ced0d1c68cf64a6195c81dbac03dce5983f98eb209e7c84350df?s=96&d=mm&r=g","caption":"Hod Greeley, Developer Advocate, Couchbase"},"description":"\ud638\ub4dc \uadf8\ub808\uc774\ub9ac\ub294 \uc2e4\ub9ac\ucf58\ubc38\ub9ac\uc5d0 \uac70\uc8fc\ud558\ub294 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 \uac1c\ubc1c\uc790 \uc639\ud638\uc790\uc785\ub2c8\ub2e4. \uadf8\ub294 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc5d4\uc9c0\ub2c8\uc5b4 \ubc0f \uc5d4\uc9c0\ub2c8\uc5b4\ub9c1 \uad00\ub9ac\uc790\ub85c\uc11c 20\ub144 \uc774\uc0c1\uc758 \uacbd\ub825\uc744 \ubcf4\uc720\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub294 \uc804\uc0b0 \ubb3c\ub9ac\ud559 \ubc0f \ud654\ud559, \ucef4\ud4e8\ud130 \ubc0f \ub124\ud2b8\uc6cc\ud06c \ubcf4\uc548, \uae08\uc735, \ubaa8\ubc14\uc77c \ub4f1 \ub2e4\uc591\ud55c \uc18c\ud504\ud2b8\uc6e8\uc5b4 \ubd84\uc57c\uc5d0\uc11c \uc77c\ud574 \uc654\uc2b5\ub2c8\ub2e4. 2016\ub144 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc5d0 \ud569\ub958\ud558\uae30 \uc804\uc5d0\ub294 \uc0bc\uc131\uc5d0\uc11c \ubaa8\ubc14\uc77c \uac1c\ubc1c\uc790 \uad00\uacc4\ub97c \uc774\ub04c\uc5c8\uc2b5\ub2c8\ub2e4. \uceec\ub7fc\ube44\uc544 \ub300\ud559\uad50\uc5d0\uc11c \ud654\ud559 \ubb3c\ub9ac\ud559 \ubc15\uc0ac \ud559\uc704\ub97c \ubc1b\uc558\uc2b5\ub2c8\ub2e4.","sameAs":["https:\/\/hod.greeley.org\/blog","https:\/\/x.com\/HodGreeley"],"url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/hod-greeley\/"}]}},"authors":[{"term_id":9042,"user_id":73,"is_guest":0,"slug":"hod-greeley","display_name":"Hod Greeley, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/52d0018695c0ced0d1c68cf64a6195c81dbac03dce5983f98eb209e7c84350df?s=96&d=mm&r=g","author_category":"","last_name":"Greeley","first_name":"Hod","job_title":"","user_url":"https:\/\/hod.greeley.org\/blog","description":"\ud638\ub4dc \uadf8\ub808\uc774\ub9ac\ub294 \uc2e4\ub9ac\ucf58\ubc38\ub9ac\uc5d0 \uac70\uc8fc\ud558\ub294 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc758 \uac1c\ubc1c\uc790 \uc639\ud638\uc790\uc785\ub2c8\ub2e4. \uadf8\ub294 \uc18c\ud504\ud2b8\uc6e8\uc5b4 \uc5d4\uc9c0\ub2c8\uc5b4 \ubc0f \uc5d4\uc9c0\ub2c8\uc5b4\ub9c1 \uad00\ub9ac\uc790\ub85c\uc11c 20\ub144 \uc774\uc0c1\uc758 \uacbd\ub825\uc744 \ubcf4\uc720\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uadf8\ub294 \uc804\uc0b0 \ubb3c\ub9ac\ud559 \ubc0f \ud654\ud559, \ucef4\ud4e8\ud130 \ubc0f \ub124\ud2b8\uc6cc\ud06c \ubcf4\uc548, \uae08\uc735, \ubaa8\ubc14\uc77c \ub4f1 \ub2e4\uc591\ud55c \uc18c\ud504\ud2b8\uc6e8\uc5b4 \ubd84\uc57c\uc5d0\uc11c \uc77c\ud574 \uc654\uc2b5\ub2c8\ub2e4. 2016\ub144 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4\uc5d0 \ud569\ub958\ud558\uae30 \uc804\uc5d0\ub294 \uc0bc\uc131\uc5d0\uc11c \ubaa8\ubc14\uc77c \uac1c\ubc1c\uc790 \uad00\uacc4\ub97c \uc774\ub04c\uc5c8\uc2b5\ub2c8\ub2e4. \uceec\ub7fc\ube44\uc544 \ub300\ud559\uad50\uc5d0\uc11c \ud654\ud559 \ubb3c\ub9ac\ud559 \ubc15\uc0ac \ud559\uc704\ub97c \ubc1b\uc558\uc2b5\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/2515","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/73"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=2515"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/2515\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/10144"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=2515"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=2515"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=2515"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=2515"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}