{"id":1923,"date":"2015-04-26T09:00:41","date_gmt":"2015-04-26T16:00:41","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1923"},"modified":"2024-09-12T01:40:19","modified_gmt":"2024-09-12T08:40:19","slug":"tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/","title":{"rendered":"\ud29c\ud1a0\ub9ac\uc5bc: \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ubaa8\ubc14\uc77c \uc571\uc5d0\uc11c \uc548\ub4dc\ub85c\uc774\ub4dc \ud478\uc2dc \uc54c\ub9bc \uad6c\ud604\ud558\uae30"},"content":{"rendered":"<p><script src=\"\/webfiles\/1484262819972\/js\/thirdparty\/vendor\/prism.js\"><\/script><\/p>\n<p>\uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uac1c\ubc1c\ud560 \ub54c\ub294 \uc5f0\uc18d \ubaa8\ub4dc\uc5d0\uc11c \ud478\uc2dc \ubc0f \ud480 \ubcf5\uc81c\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \ub9e4\uc6b0 \uc720\uc6a9\ud569\ub2c8\ub2e4. \uc571\uacfc \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uac00 \ud56d\uc0c1 \ucd5c\uc2e0 \ubb38\uc11c\ub97c \ub3d9\uae30\ud654\ud560 \uc218 \uc788\ub3c4\ub85d \ubaa8\ub4e0 \uac83\uc774 \ub9ac\ud50c\ub9ac\ucf00\uc774\ud130\uc5d0 \uc758\ud574 \ucc98\ub9ac\ub429\ub2c8\ub2e4.<\/p>\n<p>\uadf8\ub7ec\ub098 \uc9c0\uc18d\uc801\uc778 \ud480 \ubcf5\uc81c\ub294 Couchbase Lite\uac00 \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc5d0\uc11c \uac00\uc838\uc62c \uc0c8 \ub370\uc774\ud130\uac00 \uc788\ub294\uc9c0 \ud655\uc778\ud558\uae30 \uc704\ud574 \uae34 \ud3f4\ub9c1 \ub610\ub294 \uc6f9 \uc18c\ucf13\uacfc \uac19\uc740 \uae30\uc220\uc744 \uc0ac\uc6a9\ud55c\ub2e4\ub294 \uac83\uc744 \uc758\ubbf8\ud569\ub2c8\ub2e4. \uc774\ub294 \ubc30\ud130\ub9ac \uc218\uba85\uacfc \uacb0\uacfc\uc801\uc73c\ub85c \uc0ac\uc6a9\uc790 \uacbd\ud5d8\uc5d0 \uc601\ud5a5\uc744 \ubbf8\uce60 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc774 \uac8c\uc2dc\ubb3c\uc5d0\uc11c\ub294 Android\uc758 \ud478\uc2dc \uc54c\ub9bc \uc11c\ube44\uc2a4\uc778 Google \ud074\ub77c\uc6b0\ub4dc \uba54\uc2dc\uc9d5\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc5f0\uc18d \ud480 \ubcf5\uc81c\uc5d0 \ub300\ud55c \ub300\uc548\uc744 \uc0b4\ud3b4\ubd05\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc5d0\uc11c \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. <a href=\"https:\/\/github.com\/couchbaselabs\/ToDoLite-Android\">\uc791\uc5c5 \uc608\uc81c<\/a>\u00a0\ub97c \ucd94\uac00\ud588\uc2b5\ub2c8\ub2e4. \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 GCM \ub3d9\uae30\ud654\ub97c \ud3ec\ud568\ud558\ub294 \ubc29\ubc95\uc744 \uc54c\uc544\ubcf4\uc138\uc694!<\/p>\n<h2>\uc571\uc5d0\uc11c GCM \ud65c\uc131\ud654\ud558\uae30<\/h2>\n<p>\uba3c\uc800 Google \ud074\ub77c\uc6b0\ub4dc \uba54\uc2dc\uc9d5\uc5d0 \ub4f1\ub85d\ud558\ub3c4\ub85d ToDoLite Android\ub97c \uad6c\uc131\ud574 \ubcf4\uaca0\uc2b5\ub2c8\ub2e4. \uc0c8 Google API \ud504\ub85c\uc81d\ud2b8\ub97c \uc0dd\uc131\ud558\uace0 <a href=\"https:\/\/developer.google.com\/console\">\uac1c\ubc1c\uc790 \ucf58\uc194<\/a>. \ub2e4\uc74c\uc744 \ub530\ub974\uc2ed\uc2dc\uc624. <a href=\"https:\/\/developer.android.com\/google\/gcm\/gs.html\">\uac00\uc774\ub4dc<\/a>\u00a0\ub97c \ud074\ub9ad\ud558\uc5ec \uc124\uc815\ud569\ub2c8\ub2e4. \ud504\ub85c\uc81d\ud2b8 \ubc88\ud638\uc640 API \ud0a4\uac00 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc774\uc81c \ud504\ub85c\uc81d\ud2b8\uc758 <strong>AndroidManifest.xml<\/strong> \uc5d0 \ud544\uc694\ud55c \uad8c\ud55c, \uc778\ud150\ud2b8 \ud544\ud130 \ubc0f \uc11c\ube44\uc2a4\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4. \ub2e4\uc74c\uacfc \uac19\uc774 \ud45c\uc2dc\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-markup\">\r\n \/\/ ...\r\n\r\n\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\r\n\r\n\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\r\n\r\n\u00a0\u00a0\u00a0\u00a0 \/\/ ...\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/* ... activities ... *\/\r\n\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\r\n\u00a0\u00a0\u00a0\u00a0\r\n\r\n\r\n<\/code><\/pre>\n<p><strong>\ucc38\uace0:<\/strong> \ub2e4\uc74c \ub0b4\uc6a9\uc744 \ud655\uc778\ud558\uc138\uc694. <a href=\"https:\/\/developer.android.com\/google\/gcm\/client.html#manifest\">\uc608\uc81c<\/a>\u00a0\ub97c \uc548\ub4dc\ub85c\uc774\ub4dc \uac1c\ubc1c\uc790 \uc0ac\uc774\ud2b8\uc5d0\uc11c\ub3c4 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ud504\ub85c\uc81d\ud2b8\uac00 \uc62c\ubc14\ub974\uac8c \uad6c\uc131\ub41c \uacbd\uc6b0 Google \uac1c\ubc1c\uc790 \ucf58\uc194\uc5d0\uc11c \uc571\uc744 \ub9cc\ub4e4 \ub54c \ubc1b\uc740 \ud504\ub85c\uc81d\ud2b8 \ubc88\ud638\ub85c \ub514\ubc14\uc774\uc2a4 \ud1a0\ud070\uc744 \uac80\uc0c9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4 \uba54\uc778 \ud65c\ub3d9\uc5d0 \uba54\uc18c\ub4dc\ub97c \ucd94\uac00\ud558\uc5ec GCM\uc5d0\uc11c \ub514\ubc14\uc774\uc2a4 \ud1a0\ud070\uc744 \uac80\uc0c9\ud558\uace0 \uc0ac\uc6a9\uc790 \ud504\ub85c\ud544 \ubb38\uc11c\uc5d0 \uc800\uc7a5\ud569\ub2c8\ub2e4:<\/p>\n<pre class=\"line-numbers\"><code class=\"language-java\">void getDeviceToken() {\r\n        new AsyncTask() {\r\n            @Override\r\n            protected String doInBackground(Void... params) {\r\n\r\n                GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(getApplicationContext());\r\n\r\n                String deviceToken = gcm.register(\"632113338862\");\r\n                Log.i(\"GCM\", \"Device token : \" + deviceToken);\r\n\r\n                \/\/ update user profile document\r\n\r\n                return null;\r\n            }\r\n        }.execute(null, null, null);\r\n}<\/code><\/pre>\n<p><strong>\ucc38\uace0:<\/strong> Android\uc758 \ub514\ubc14\uc774\uc2a4 \ud1a0\ud070\uc740 \ud56d\uc0c1 APA91\ub85c \uc2dc\uc791\ud558\ubbc0\ub85c LogCat\uc5d0\uc11c \uc774\ub97c \uc8fc\uc2dc\ud558\uc138\uc694.)<\/p>\n<p>\ub2e4\uc74c\uc73c\ub85c \uc218\uc2e0 \uc54c\ub9bc\uc744 \ucc98\ub9ac\ud558\uae30 \uc704\ud574 \uba87 \uac00\uc9c0 \ucf54\ub4dc\ub97c \ucd94\uac00\ud574\uc57c \ud569\ub2c8\ub2e4. \uc54c\ub9bc\uc744 \uc218\uc2e0\ud560 \ub54c\ub9c8\ub2e4 onReceive \uba54\uc11c\ub4dc\uac00 \ud638\ucd9c\ub418\ub294 WakefulBroadcastReceiver \ud074\ub798\uc2a4\ub97c \uc11c\ube0c\ud074\ub798\uc2f1\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n<pre class=\"line-numbers\"><code class=\"language-java\">public class GcmBroadcastReceiver extends WakefulBroadcastReceiver {\r\n\r\n    @Override\r\n    public void onReceive(Context context, Intent intent) {\r\n        \/\/ Explicitly specify that GcmMessageHandler will handle the intent.\r\n        ComponentName component = new ComponentName(context.getPackageName(),\r\n                GcmMessageHandler.class.getName());\r\n\r\n        \/\/ Start the service, keeping the device awake while it is launching.\r\n        startWakefulService(context, (intent.setComponent(component)));\r\n        setResultCode(Activity.RESULT_OK);\r\n    }\r\n\r\n}<\/code><\/pre>\n<p>\uac70\uae30\uc11c\ubd80\ud130 \uae68\uc5b4 \uc788\ub294 \uc11c\ube44\uc2a4\ub294 GcmMessageHandler \ud074\ub798\uc2a4\ub97c \uc2dc\uc791\ud558\uace0 \uc6d0\uc0f7 \ud480 \ubcf5\uc81c\ub97c \uc218\ud589\ud569\ub2c8\ub2e4. \uae68\uc5b4\uc788\ub294 \uc11c\ube44\uc2a4\ub294 \uc571\uc774 \ubc31\uadf8\ub77c\uc6b4\ub4dc\uc5d0\uc11c \uc2e4\ud589 \uc911\uc774\ub354\ub77c\ub3c4 \uc2e4\ud589\ub429\ub2c8\ub2e4. \uadf8\ub7ec\uba74 \uc571\uc744 \uc5f4 \ub54c \uc571\uc774 \uadf8\uc5d0 \ub530\ub77c \uc0c8 \ub370\uc774\ud130\ub97c \ud45c\uc2dc\ud569\ub2c8\ub2e4.<\/p>\n<pre class=\"line-numbers\"><code class=\"language-java\">\r\npublic class GcmMessageHandler extends IntentService {\r\n    \r\n    \/* ... *\/\r\n    \r\n    @Override\r\n    protected void onHandleIntent(Intent intent) {\r\n        mIntent = intent;\r\n        showToast();\r\n        Application application = (Application) getApplication();\r\n\r\n        try {\r\n            URL url = new URL(BuildConfig.SYNC_URL_HTTP);\r\n            Replication pull = application.getDatabase().createPullReplication(url);\r\n            pull.addChangeListener(getReplicationListener());\r\n            pull.start();\r\n        } catch (MalformedURLException e) {\r\n            e.printStackTrace();\r\n        }\r\n\r\n    }\r\n\r\n    private Replication.ChangeListener getReplicationListener() {\r\n        return new Replication.ChangeListener() {\r\n            @Override\r\n            public void changed(Replication.ChangeEvent event) {\r\n                Log.i(\"GCM\", \"replication status is : \" + event.getSource().getStatus());\r\n                if (event.getSource().getStatus() == Replication.ReplicationStatus.REPLICATION_STOPPED) {\r\n                    GcmBroadcastReceiver.completeWakefulIntent(mIntent);\r\n                }\r\n            }\r\n        };\r\n    }\r\n\r\n    \/* ... *\/\r\n\r\n}\r\n<\/code><\/pre>\n<p>\ubcf5\uc81c \ubcc0\uacbd \ub9ac\uc2a4\ub108\ub97c \uc0ac\uc6a9\ud558\uc5ec \ubcf5\uc81c \ubcc0\uacbd\uc774 \uc644\ub8cc\ub418\uba74 \uc54c\ub9bc\uc744 \ubc1b\uace0 \uae68\uc5b4 \uc788\ub294 \uc11c\ube44\uc2a4\ub97c \uc885\ub8cc\ud569\ub2c8\ub2e4.<\/p>\n<p>Android \ucabd\uc5d0\uc11c \ub3d9\uae30\ud654 \uc54c\ub9bc\uc744 \ucc98\ub9ac\ud558\uae30 \uc704\ud574 \ud574\uc57c \ud560 \uc77c\uc740 \uc774\uac83\ubfd0\uc785\ub2c8\ub2e4.<\/p>\n<h2>\ub514\ubc14\uc774\uc2a4 \ud1a0\ud070 \uc800\uc7a5\ud558\uae30<\/h2>\n<p>\uc774\uc81c \uc0ac\uc6a9\uc790 \ud504\ub85c\ud544 \ubb38\uc11c\uc5d0 \ub514\ubc14\uc774\uc2a4 \ud1a0\ud070\uc744 \uc800\uc7a5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uac01 \uc0ac\uc6a9\uc790\ub294 \ud55c \ubc88\uc5d0 \ub450 \uac1c \uc774\uc0c1\uc758 \ub514\ubc14\uc774\uc2a4\uc5d0 \ub85c\uadf8\uc778\ud560 \uc218 \uc788\uc73c\ubbc0\ub85c \uac01\uac01\uc758 \ub514\ubc14\uc774\uc2a4\ub97c \uc800\uc7a5\ud574\uc57c \ud569\ub2c8\ub2e4. \uc0ac\uc6a9\uc790 \ubb38\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<pre><code class=\"language-javascript\">{\r\n \"_id\": \"profile:johnny@couchbase.com\",\r\n ...\r\n \"device_tokens\": [\"APA91K...\", \"APA91O...\"]\r\n}<\/code><\/pre>\n<p>\ub2e4\uc74c \uc139\uc158\uc5d0\uc11c\ub294 \ubcc0\uacbd\uc0ac\ud56d \ud53c\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc5ec \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc5d0 \ucd94\uac00 \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \ub85c\uc9c1\uc744 \ucd94\uac00\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud574 \uc124\uba85\ud569\ub2c8\ub2e4.<\/p>\n<h2>\ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uac00 \ud53c\ub4dc\ub97c \ubcc0\uacbd\ud569\ub2c8\ub2e4.<\/h2>\n<p>\uadf8\ub9ac\uace0 <strong>\/\ub370\uc774\ud130\ubca0\uc774\uc2a4\/\ubcc0\uacbd<\/strong> \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \ubb38\uc11c\uc5d0 \uc801\uc6a9\ub41c \ubcc0\uacbd \uc0ac\ud56d\uc758 \uc815\ub82c\ub41c \ubaa9\ub85d\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4. \uc774 \uc5d4\ub4dc\ud3ec\uc778\ud2b8\ub294 CouchDB\uc758 \uc77c\ubd80\uc785\ub2c8\ub2e4. <a href=\"https:\/\/docs.couchdb.org\/en\/latest\/api\/database\/changes.html\">\uc0ac\uc591<\/a>\u00a0\uadf8\ub9ac\uace0 Couchbase Lite \ub9ac\uc2a4\ub108\uc640 \ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774 \ubaa8\ub450 \uc774\ub97c \uad6c\ud604\ud569\ub2c8\ub2e4.<\/p>\n<p>\ub3d9\uae30\ud654 \uac8c\uc774\ud2b8\uc6e8\uc774\uc758 \ubcc0\uacbd \ud53c\ub4dc\uc5d0 \uc5f0\uacb0\ud558\uc5ec \ud478\uc2dc \uc54c\ub9bc\uc744 \ubcf4\ub0b4\ub294 \ub4f1 \ubc31\uc5d4\ub4dc\uc5d0 \ucd94\uac00 \ub85c\uc9c1\uc744 \ucd94\uac00\ud558\ub294 \uac83\uc740 \ub9e4\uc6b0 \uc27d\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ubcc0\uacbd \ud53c\ub4dc API\ub97c \uad6c\ud604\ud558\ub294 \ubaa8\ub4e0 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<ul>\n<li>NodeJS: <a href=\"https:\/\/github.com\/djc\/couchdb-python\">https:\/\/github.com\/iriscouch\/follow<\/a><\/li>\n<li>Go: <a href=\"https:\/\/github.com\/djc\/couchdb-python\">https:\/\/github.com\/fjl\/go-couchdb<\/a><\/li>\n<li>Python: <a href=\"https:\/\/github.com\/djc\/couchdb-python\">https:\/\/github.com\/djc\/couchdb-python<\/a><\/li>\n<li>Java: <a href=\"https:\/\/github.com\/djc\/couchdb-python\">https:\/\/github.com\/helun\/Ektorp<\/a><\/li>\n<\/ul>\n<p>\ubaa8\ub4e0 <a href=\"https:\/\/docs.couchdb.org\/en\/latest\/api\/database\/changes.html\">\uc0ac\uc6a9 \uac00\ub2a5\ud55c \ub9e4\uac1c \ubcc0\uc218<\/a> \ucffc\ub9ac \ubb38\uc790\uc5f4\uc5d0\uc11c \uac00\uc7a5 \uc911\uc694\ud55c \uac83\uc740 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4:<\/p>\n<ul>\n<li>\ud53c\ub4dc=\uc5f0\uc18d\uc73c\ub85c \uc124\uc815\ud558\uc5ec \ubcc0\uacbd \uc0ac\ud56d\uc744 \uc989\uc2dc \uac00\uc838\uc624\ub3c4\ub85d \ud569\ub2c8\ub2e4.<\/li>\n<li>\uc774\ud6c4=\uc9c0\uae08'\uc744 \uc0ac\uc6a9\ud558\uba74 \ud604\uc7ac \uc2dc\uac04\uc758 \ubcc0\uacbd \uc0ac\ud56d\uc744 \uac00\uc838\uc624\uace0, \uadf8\ub807\uc9c0 \uc54a\uc73c\uba74 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \uc0dd\uc131\ub41c \uc774\ud6c4\uc758 \ubaa8\ub4e0 \ubcc0\uacbd \uc0ac\ud56d\uc744 \uae30\ub85d\ud569\ub2c8\ub2e4!<\/li>\n<\/ul>\n<p>\ub9c8\uc9c0\ub9c9\uc73c\ub85c \ud37c\uc990\uc758 \ub9c8\uc9c0\ub9c9 \uc870\uac01\uc778 \ubcc0\uacbd \uc0ac\ud56d \ud53c\ub4dc\uc5d0\uc11c \ubb38\uc11c\uac00 \ubcc0\uacbd\ub418\uba74 \uc0ac\uc6a9\uc790 \ud504\ub85c\ud544 \ubb38\uc11c\ub97c \uac00\uc838\uc640\uc57c \ud569\ub2c8\ub2e4.\"<em>\uad00\uc2ec\"<\/em> \ub514\ubc14\uc774\uc2a4 \ud1a0\ud070\uc744 \ubcf4\uc720\ud558\uace0 \uc788\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4.<\/p>\n<h2>\ud53c\ub4dc \ubcc0\uacbd \u2192 GCM<\/h2>\n<p>ToDoLite\uc5d0\ub294 \ud504\ub85c\ud544, \ubaa9\ub85d, \uc791\uc5c5\uc758 \uc138 \uac00\uc9c0 \ubb38\uc11c \uc720\ud615\uc774 \uc788\uc2b5\ub2c8\ub2e4. \uc791\uc5c5 \ubb38\uc11c\uc5d0\ub294 \ud574\ub2f9 \ubb38\uc11c\uac00 \uc18d\ud55c \ubaa9\ub85d\uc5d0 \ub300\ud55c \ucc38\uc870\uac00 \uc788\uace0 \ubaa9\ub85d\uc5d0\ub294 \uc18c\uc720\uc790\uc640 \uad6c\uc131\uc6d0 \ubc30\uc5f4\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cl.ly\/image\/1J3O1D1s131U\/Model.png\" \/><\/p>\n<p>\uc791\uc5c5 \ubb38\uc11c\ub098 \ubaa9\ub85d \ubb38\uc11c\uac00 \ubcc0\uacbd\ub418\uba74 \ud574\ub2f9 \ubaa9\ub85d\uc758 \uc18c\uc720\uc790\uc640 \uad6c\uc131\uc6d0\uc5d0\uac8c \uc54c\ub9bc\uc744 \ubcf4\ub0b4\uace0 \uc2f6\uc2b5\ub2c8\ub2e4. \ucc98\ub9ac\ud558\uace0\uc790 \ud558\ub294 \uc774\ubca4\ud2b8\uc5d0\ub294 \ub450 \uac00\uc9c0 \uc720\ud615\uc774 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<p>1. \ubaa9\ub85d \ubb38\uc11c \ubcc0\uacbd \uc774\ubca4\ud2b8:<\/p>\n<ul>\n<li style=\"margin-left: 40px;\">\uc18c\uc720\uc790\uc758 \ud504\ub85c\ud544 \ubb38\uc11c \uac00\uc838\uc624\uae30<\/li>\n<li style=\"margin-left: 40px;\">\uac01 \uba64\ubc84\uc758 \ud504\ub85c\ud544 \ubb38\uc11c \uac00\uc838\uc624\uae30<\/li>\n<\/ul>\n<p>2. \uc791\uc5c5 \ubb38\uc11c \ubcc0\uacbd \uc774\ubca4\ud2b8:<\/p>\n<ul>\n<li style=\"margin-left: 40px;\">\ubaa9\ub85d\uc774 \uc18d\ud55c \ubb38\uc11c \uac00\uc838\uc624\uae30<\/li>\n<li style=\"margin-left: 40px;\">1)\uacfc \ub3d9\uc77c\ud55c \ub2e8\uacc4\ub97c \ub530\ub985\ub2c8\ub2e4.<\/li>\n<\/ul>\n<p>\ub514\ubc14\uc774\uc2a4 \ud1a0\ud070\uc744 \uac80\uc0c9\ud55c \ud6c4 \ub9c8\uc9c0\ub9c9 \ub2e8\uacc4\ub294 API \ud0a4\uc640 \uc54c\ub9bc \ud398\uc774\ub85c\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc5ec Google \ud074\ub77c\uc6b0\ub4dc \uba54\uc2dc\uc9d5 \uc11c\ubc84\uc5d0 \uc694\uccad\uc744 \ubcf4\ub0b4\ub294 \uac83\uc785\ub2c8\ub2e4. GitHub\uc5d0\uc11c GCM \uc11c\ubc84\uc640 \uac04\ub2e8\ud558\uac8c \uc0c1\ud638 \uc791\uc6a9\ud560 \uc218 \uc788\ub294 \ub9ce\uc740 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \ucc3e\uc744 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4:<\/p>\n<ul>\n<li>NodeJS: <a href=\"https:\/\/github.com\/ToothlessGear\/node-gcm\">https:\/\/github.com\/ToothlessGear\/node-gcm<\/a><\/li>\n<li>Go: <a href=\"https:\/\/github.com\/alexjlockwood\/gcm\">https:\/\/github.com\/alexjlockwood\/gcm<\/a><\/li>\n<li>Python: <a href=\"https:\/\/github.com\/geeknam\/python-gcm\">https:\/\/github.com\/geeknam\/python-gcm<\/a><\/li>\n<li>Java: <a href=\"https:\/\/github.com\/inloop\/easygcm\">https:\/\/github.com\/inloop\/easygcm<\/a><\/li>\n<\/ul>\n<h2>\ub9c8\ubb34\ub9ac<\/h2>\n<p>Google \ud074\ub77c\uc6b0\ub4dc \uba54\uc2dc\uc9d5\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc11c\ubc84 \uce21\uc5d0\uc11c \ub370\uc774\ud130 \uac00\uc838\uc624\uae30\ub97c \ud2b8\ub9ac\uac70\ud558\uba74 \ucd94\uac00\uc801\uc778 \ubc30\ud130\ub9ac \ubc0f \ub124\ud2b8\uc6cc\ud06c \uc0ac\uc6a9 \uc624\ubc84\ud5e4\ub4dc \uc5c6\uc774\ub3c4 \ub6f0\uc5b4\ub09c \uc0ac\uc6a9\uc790 \uacbd\ud5d8\uc744 \uc81c\uacf5\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\ub2e4\uc74c\uc744 \ub530\ub974\uc2ed\uc2dc\uc624. <a href=\"https:\/\/github.com\/couchbaselabs\/ToDoLite-Android#syncing-with-google-cloud-messaging\">README<\/a>\u00a0\ub97c \ud074\ub9ad\ud574 ToDoLite \ub370\ubaa8\ub97c \uc2e4\ud589\ud558\uc138\uc694.<\/p>\n<p>\uc571\uc5d0\uc11c Google \ud074\ub77c\uc6b0\ub4dc \uba54\uc2dc\uc9d5 \uc54c\ub9bc\uc744 \uc5b4\ub5bb\uac8c \uc0ac\uc6a9\ud558\uace0 \uacc4\uc2e0\uc9c0 \uc54c\uace0 \uc2f6\uc2b5\ub2c8\ub2e4. \uc544\ub798 \ub313\uae00\ub85c \uc54c\ub824\uc8fc\uc138\uc694!<\/p>\n<p>\uc790\uc138\ud788 \uc54c\uc544\ubcf4\uae30:<\/p>\n<ul>\n<li>\uc571\uc5d0\uc11c GCM\uc744 \uc124\uc815\ud558\ub294 \ubc29\ubc95\uc5d0 \ub300\ud55c \ud301\uc785\ub2c8\ub2e4: <a href=\"https:\/\/blog.pushbullet.com\/2014\/02\/12\/keeping-google-cloud-messaging-for-android-working-reliably-techincal-post\/\">https:\/\/blog.pushbullet.com\/2014\/02\/12\/keeping-google-cloud-messaging-for-android-working-reliably-techincal-post\/<\/a><\/li>\n<li>Google I\/O \uc571\uc758 \ub370\uc774\ud130 \ub3d9\uae30\ud654: <a href=\"https:\/\/android-developers.blogspot.co.uk\/2014\/09\/conference-data-sync-gcm-google-io.html\">https:\/\/android-developers.blogspot.co.uk\/2014\/09\/conference-data-sync-gcm-google-io.html<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>When developing an application, it\u2019s very helpful to use the push and pull replication in continuous mode. Everything is handled by the replicators to make sure your app and Sync Gateway always have the latest documents synced. However, a continuous [&hellip;]<\/p>","protected":false},"author":51,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[9028],"class_list":["post-1923","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tutorial: Implement Android Push Notifications in your Couchbase Mobile app - The Couchbase Blog<\/title>\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\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: Implement Android Push Notifications in your Couchbase Mobile app\" \/>\n<meta property=\"og:description\" content=\"When developing an application, it\u2019s very helpful to use the push and pull replication in continuous mode. Everything is handled by the replicators to make sure your app and Sync Gateway always have the latest documents synced. However, a continuous [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-04-26T16:00:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-12T08:40:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cl.ly\/image\/1J3O1D1s131U\/Model.png\" \/>\n<meta name=\"author\" content=\"James Nocentini, Technical Writer, Mobile, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"James Nocentini, Technical Writer, Mobile, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/\"},\"author\":{\"name\":\"James Nocentini, Technical Writer, Mobile, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/ec4dfbd349cb4a321fb6a92b71a9a7f6\"},\"headline\":\"Tutorial: Implement Android Push Notifications in your Couchbase Mobile app\",\"datePublished\":\"2015-04-26T16:00:41+00:00\",\"dateModified\":\"2024-09-12T08:40:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/\"},\"wordCount\":909,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/\",\"name\":\"Tutorial: Implement Android Push Notifications in your Couchbase Mobile app - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-04-26T16:00:41+00:00\",\"dateModified\":\"2024-09-12T08:40:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: Implement Android Push Notifications in your Couchbase Mobile app\"}]},{\"@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\/ec4dfbd349cb4a321fb6a92b71a9a7f6\",\"name\":\"James Nocentini, Technical Writer, Mobile, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/09977bdd14473dc23a125f2f74c3e816\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0aa80108e5c81e282d705199edae5a25f8ef92abf15cd64f8ff19837abcee09a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0aa80108e5c81e282d705199edae5a25f8ef92abf15cd64f8ff19837abcee09a?s=96&d=mm&r=g\",\"caption\":\"James Nocentini, Technical Writer, Mobile, Couchbase\"},\"description\":\"James Nocentini is the Technical Writer in charge of the documentation for Couchbase Mobile. Previously, he worked as a Developer Advocate and before that as a front-end developer for HouseTrip. He also enjoys writing Android tutorials for raywenderlich.com in his spare time.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/ko\/author\/james-nocentini\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Tutorial: Implement Android Push Notifications in your Couchbase Mobile app - The Couchbase Blog","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\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/","og_locale":"ko_KR","og_type":"article","og_title":"Tutorial: Implement Android Push Notifications in your Couchbase Mobile app","og_description":"When developing an application, it\u2019s very helpful to use the push and pull replication in continuous mode. Everything is handled by the replicators to make sure your app and Sync Gateway always have the latest documents synced. However, a continuous [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-04-26T16:00:41+00:00","article_modified_time":"2024-09-12T08:40:19+00:00","og_image":[{"url":"https:\/\/cl.ly\/image\/1J3O1D1s131U\/Model.png","type":"","width":"","height":""}],"author":"James Nocentini, Technical Writer, Mobile, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"James Nocentini, Technical Writer, Mobile, Couchbase","Est. reading time":"4\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/"},"author":{"name":"James Nocentini, Technical Writer, Mobile, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/ec4dfbd349cb4a321fb6a92b71a9a7f6"},"headline":"Tutorial: Implement Android Push Notifications in your Couchbase Mobile app","datePublished":"2015-04-26T16:00:41+00:00","dateModified":"2024-09-12T08:40:19+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/"},"wordCount":909,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/","url":"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/","name":"Tutorial: Implement Android Push Notifications in your Couchbase Mobile app - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2015-04-26T16:00:41+00:00","dateModified":"2024-09-12T08:40:19+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/tutorial-implement-android-push-notifications-in-your-couchbase-mobile-app\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: Implement Android Push Notifications in your Couchbase Mobile app"}]},{"@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\/ec4dfbd349cb4a321fb6a92b71a9a7f6","name":"\uc81c\uc784\uc2a4 \ub178\uc13c\ud2f0\ub2c8, \ubaa8\ubc14\uc77c \ud14c\ud06c\ub2c8\uceec \ub77c\uc774\ud130, Couchbase","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/09977bdd14473dc23a125f2f74c3e816","url":"https:\/\/secure.gravatar.com\/avatar\/0aa80108e5c81e282d705199edae5a25f8ef92abf15cd64f8ff19837abcee09a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0aa80108e5c81e282d705199edae5a25f8ef92abf15cd64f8ff19837abcee09a?s=96&d=mm&r=g","caption":"James Nocentini, Technical Writer, Mobile, Couchbase"},"description":"\uc81c\uc784\uc2a4 \ub178\uc13c\ud2f0\ub2c8\ub294 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ubaa8\ubc14\uc77c\uc758 \ubb38\uc11c\ub97c \ub2f4\ub2f9\ud558\ub294 \ud14c\ud06c\ub2c8\uceec \ub77c\uc774\ud130\uc785\ub2c8\ub2e4. \uc774\uc804\uc5d0\ub294 \uac1c\ubc1c\uc790 \uc9c0\uc6d0 \ub2f4\ub2f9\uc790\ub85c \uc77c\ud588\uc73c\uba70 \uadf8 \uc804\uc5d0\ub294 HouseTrip\uc758 \ud504\ub860\ud2b8\uc5d4\ub4dc \uac1c\ubc1c\uc790\ub85c \uc77c\ud588\uc2b5\ub2c8\ub2e4. \ub610\ud55c \uc5ec\uac00 \uc2dc\uac04\uc5d0\ub294 raywenderlich.com\uc5d0 \uc548\ub4dc\ub85c\uc774\ub4dc \ud29c\ud1a0\ub9ac\uc5bc\uc744 \uc791\uc131\ud558\ub294 \uac83\uc744 \uc990\uae41\ub2c8\ub2e4.","url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/james-nocentini\/"}]}},"authors":[{"term_id":9028,"user_id":51,"is_guest":0,"slug":"james-nocentini","display_name":"James Nocentini, Technical Writer, Mobile, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/0aa80108e5c81e282d705199edae5a25f8ef92abf15cd64f8ff19837abcee09a?s=96&d=mm&r=g","author_category":"","last_name":"Nocentini","first_name":"James","job_title":"","user_url":"","description":"\uc81c\uc784\uc2a4 \ub178\uc13c\ud2f0\ub2c8\ub294 \uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ubaa8\ubc14\uc77c\uc758 \ubb38\uc11c\ub97c \ub2f4\ub2f9\ud558\ub294 \ud14c\ud06c\ub2c8\uceec \ub77c\uc774\ud130\uc785\ub2c8\ub2e4. \uc774\uc804\uc5d0\ub294 \uac1c\ubc1c\uc790 \uc9c0\uc6d0 \ub2f4\ub2f9\uc790\ub85c \uc77c\ud588\uc73c\uba70 \uadf8 \uc804\uc5d0\ub294 HouseTrip\uc758 \ud504\ub860\ud2b8\uc5d4\ub4dc \uac1c\ubc1c\uc790\ub85c \uc77c\ud588\uc2b5\ub2c8\ub2e4. \ub610\ud55c \uc5ec\uac00 \uc2dc\uac04\uc5d0\ub294 raywenderlich.com\uc5d0 \uc548\ub4dc\ub85c\uc774\ub4dc \ud29c\ud1a0\ub9ac\uc5bc\uc744 \uc791\uc131\ud558\ub294 \uac83\uc744 \uc990\uae41\ub2c8\ub2e4."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/1923","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\/51"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=1923"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/1923\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=1923"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=1923"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=1923"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=1923"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}