{"id":183906,"date":"2013-06-19T18:17:03","date_gmt":"2013-06-19T14:17:03","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=183906"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=183906","title":{"rendered":"<span class=\"post_title\">Real-time \u0434\u0435\u0431\u0430\u0433 Android \u0438 iOS \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Unity<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t<b>Real-time \u0434\u0435\u0431\u0430\u0433 Android \u0438 iOS \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Unity<\/b><\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u0434\u0451\u0442 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043b\u043e\u0433\u0430 \u043d\u0435 \u0432\u0441\u0442\u0430\u0451\u0442. \u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0448\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0435, \u0442\u043e \u0432\u0441\u0451 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u0435\u0447\u0430\u043b\u044c\u043d\u0435\u0435. \u041d\u0430 iPad \u043d\u0430\u0434\u043e \u0437\u0430\u0439\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 iTunes, \u043d\u0430\u0439\u0442\u0438 \u0441\u0432\u043e\u0439 \u043b\u043e\u0433, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435. \u041d\u0430 Android \u0432\u0441\u0451 \u0435\u0449\u0451 \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0438 \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u0435\u0435. \u0417\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0432\u0438\u0434\u0435\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 real-time. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0434\u0432\u0438\u0436\u043a\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439 \u0432 \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0435\u0440, \u043d\u043e \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e \u0437\u0430\u0431\u044b\u043b\u0438 \u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043a\u043e\u043d\u0441\u043e\u043b\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0432\u0448\u0438\u0441\u044c \u043d\u0430 \u0435\u0451 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043c\u043e\u0433 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0442 \u0441\u0432\u043e\u0435\u0439 \u0438\u0433\u0440\u044b \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0440\u044f\u043c\u043e \u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u043d\u0430 \u043f\u043b\u0430\u043d\u0448\u0435\u0442.<br \/>  \u042d\u0442\u043e \u0443\u043f\u0443\u0449\u0435\u043d\u0438\u0435 \u043c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0438 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u0415\u0441\u043b\u0438 \u043a\u0440\u0430\u0442\u043a\u043e, \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0432 Google Docs, \u0438 \u0441\u043a\u0440\u0438\u043f\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u0443\u0434\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u0418 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u0432 \u0434\u0432\u0438\u0436\u043a\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043b\u0443\u0448\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0442\u0438\u043f\u0430 Debug.Log() \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u0445 \u043d\u0430\u0448\u0435\u043c\u0443 \u0441\u043a\u0440\u0438\u043f\u0442\u0443. \u0414\u0435\u043b \u043d\u0430 10 \u043c\u0438\u043d\u0443\u0442, \u043d\u043e \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u043e \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e. \u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043a\u043e\u043d\u0441\u043e\u043b\u044c, \u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e\u0431\u044b \u0441\u043a\u0440\u0438\u043f\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u043b \u043e\u0442\u043a\u043b\u0438\u043a (\u0441\u043a\u0430\u0436\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u0430\u043c\u0438 \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u044f\u0447\u0435\u0439\u043a\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b), \u043c\u043e\u0436\u043d\u043e \u044d\u0442\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c.<br \/>  \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432\u0441\u0451 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e, \u0443 \u043c\u0435\u043d\u044f \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 50 mbit, \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e. \u0422\u0430\u0431\u043b\u0438\u0446\u0430 Google \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u0430, \u0440\u0435\u0444\u0440\u0435\u0448\u0438\u0442\u044c \u043d\u0435 \u043d\u0430\u0434\u043e.<\/p>\n<p>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0441\u0443\u0442\u0438.<\/p>\n<p>  <b>1. \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438.<\/b><\/p>\n<p>  \u0414\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043d\u0443\u0436\u0435\u043d \u0430\u043a\u043a\u0430\u0443\u043d\u0442 Google, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0432 Google Drive.<\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 Spreadsheet.<\/p>\n<p>  \u0412 \u043c\u0435\u043d\u044e \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0441\u043a\u0440\u0438\u043f\u0442 (Tools -&gt; Script Editor -&gt; Script as Web App).<\/p>\n<p>  \u0423\u0434\u0430\u043b\u0438\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043c\u043f\u043b\u0435\u0439\u0442 \u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:<\/p>\n<pre><code>function doGet(e) {   var sheet = SpreadsheetApp.openById(&quot;0Ap2rwVyty8rZdElOTFhlTG9BSEZGY29BZDlpQWdMR2c&quot;);   var n = sheet.getLastRow() + 1;   sheet.getRange(&quot;A&quot;+n).setValue( new Date() );   sheet.getRange(&quot;B&quot;+n).setValue(e.parameter.p);   return ContentService.createTextOutput(&quot;OK&quot;); }<\/code><\/pre>\n<p>  <i>!!! \u0412 \u043a\u043e\u0434\u0435 id 0Ap2rwVyty8rZdElOTFhlTG9BSEZGY29BZDlpQWdMR2c \u043d\u0430\u0434\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 id \u0432\u0430\u0448\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c \u0438\u0437 URL \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0432\u0430\u043c\u0438 Spreadsheet.<\/i><\/p>\n<p>  \u041f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u044d\u0442\u043e\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0431\u0440\u0430\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u0443\u044e \u0432\u0430\u043c\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0432\u0440\u0435\u043c\u044f \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u0448\u043b\u043e \u043f\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0443 GET \u0441 \u043a\u043b\u044e\u0447\u043e\u043c p.<\/p>\n<p>  \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435 \u0441\u043a\u0440\u0438\u043f\u0442 \u043f\u043e\u0434 \u0438\u043c\u0435\u043d\u0435\u043c, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, RemoteLogger.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0435\u0440\u0441\u0438\u044e (File -&gt; Manage versions -&gt; Save new version).<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043e\u043f\u0435\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e (Publish -&gt; Deploy as Web App) \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u043c\u0438:<br \/>  <i>!!! Execute the app as: me<br \/>  !!! Who has access to the app: Anyone, even anonymous<br \/>  <\/i><br \/>  \u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f Deploy Google \u0434\u0430\u0451\u0442 \u043d\u0430\u043c URL \u0442\u0430\u043a\u043e\u0433\u043e \u0432\u0438\u0434\u0430:<br \/>  <a href=\"https:\/\/script.google.com\/macros\/s\/AKfycbyubkC0TQbyrRYvVD9nYezvxuDkya0Asbvff67EUK0G0oqFndws\/exec\">script.google.com\/macros\/s\/AKfycbyubkC0TQbyrRYvVD9nYezvxuDkya0Asbvff67EUK0G0oqFndws\/exec<\/a><br \/>  \u043f\u0440\u0438 \u0435\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0439 \u0432\u0430\u043c\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0441\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c undefined, \u0435\u0441\u043b\u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0434\u043e\u043f\u0438\u0441\u0430\u0442\u044c ?p=test<br \/>  <a href=\"https:\/\/script.google.com\/macros\/s\/AKfycbyubkC0TQbyrRYvVD9nYezvxuDkya0Asbvff67EUK0G0oqFndws\/exec?p=test\">script.google.com\/macros\/s\/AKfycbyubkC0TQbyrRYvVD9nYezvxuDkya0Asbvff67EUK0G0oqFndws\/exec?p=test<\/a><br \/>  \u0442\u043e \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0441\u043e \u0441\u043b\u043e\u0432\u043e\u043c \u00abtest\u00bb<\/p>\n<p>  \u041c\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e.<\/p>\n<p>  <b>2. \u041a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 Unity-\u0441\u043a\u0440\u0438\u043f\u0442.<\/b><\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u0441\u043a\u0440\u0438\u043f\u0442, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443 RemoteLogger.cs \u0438 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u0442\u0435 \u0442\u0443\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u0434:  <\/p>\n<pre><code>using UnityEngine; using System.Collections; using System.IO;  public class RemoteLogger : MonoBehaviour {  \tstring url = &quot;https:\/\/script.google.com\/macros\/s\/AKfycbyubkC0TQbyrRYvVD9nYezvxuDkya0Asbvff67EUK0G0oqFndws\/exec&quot;; \/\/ Your URL copy here \t \t\/\/ Use this for initialization \tvoid Start () { \t\tDebug.Log(&quot;Hello world!&quot;); \t} \t \t\/\/ Update is called once per frame \tvoid Update () { \t} \t \t\/\/get method here http:\/\/forum.antichat.ru\/showthread.php?t=290347 \tstring UrlEncode(string instring) \t{ \t    StringReader strRdr = new StringReader(instring); \t    StringWriter strWtr = new StringWriter(); \t    int charValue = strRdr.Read(); \t    while (charValue != -1) \t    { \t        if (((charValue &gt;= 48) && (charValue &lt;= 57)) \/\/ 0-9 \t        || ((charValue &gt;= 65)  && (charValue &lt;= 90)) \/\/ A-Z \t        || ((charValue &gt;= 97)  && (charValue &lt;= 122))) \/\/ a-z \t        { \t            strWtr.Write((char) charValue); \t        } \t        else if (charValue == 32) \/\/ Space \t        { \t            strWtr.Write(&quot;+&quot;); \t        } \t        else \t        { \t            strWtr.Write(&quot;%{0:x2}&quot;, charValue); \t        } \t        charValue = strRdr.Read(); \t    } \t    return strWtr.ToString(); \t} \t  \tvoid SendLog(string mes) { \t\tstring t_url = url + &quot;?p=&quot; + UrlEncode(mes); \t\tWWW www = new WWW(t_url); \t\tStartCoroutine(WaitForRequest(www)); \t}  \tIEnumerator WaitForRequest(WWW www) \t{ \t\tyield return www; \t\t\/\/ check for errors \t\tif (www.error == null) { \t\t\t\/\/OK \t\t} else { \t\t\t\/\/Error \t\t} \t} \t \tvoid OnEnable() {         Application.RegisterLogCallback(HandleLog);     }      \tvoid OnDisable() {         Application.RegisterLogCallback(null);     }      \tvoid HandleLog(string logString, string stackTrace, LogType type) { \t\tSendLog(logString);     }\t }<\/code><\/pre>\n<p>  <i>!!! \u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 url \u043d\u0430 \u0430\u0434\u0440\u0435\u0441 \u0432\u0430\u0448\u0435\u0433\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430.<\/i><\/p>\n<p>  \u042d\u0442\u043e\u0442 \u0441\u043a\u0440\u0438\u043f\u0442 \u0441\u043b\u0443\u0448\u0430\u0435\u0442 \u043b\u043e\u0433, \u0431\u0435\u0440\u0451\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u043f\u043e \u043c\u0435\u0442\u043e\u0434\u0443 GET \u0438 \u043e\u0442\u0441\u044b\u043b\u0430\u0435\u0442 \u0435\u0433\u043e \u043d\u0430\u0448\u0435\u043c\u0443 \u0441\u043a\u0440\u0438\u043f\u0442\u0443, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u0435\u0433\u043e \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443.<\/p>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a GameObject \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430, \u043d\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0439 \u0432 \u0432\u0430\u0448\u0435\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u00abHello world!\u00bb (\u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438). \u0415\u0441\u043b\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e, \u0442\u043e \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0432\u044b \u0437\u0430\u0431\u044b\u043b\u0438 \u043f\u043e\u043c\u0435\u043d\u044f\u0442\u044c id \u0442\u0430\u0431\u043b\u0438\u0446\u044b, url \u0438\u043b\u0438 \u043f\u0440\u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438 \u043f\u0440\u0430\u0432\u0430 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e.<\/p>\n<p>  <b>3. \u0411\u0430\u0442\u0447\u0438\u043d\u0433.<\/b><br \/>  \u0415\u0441\u043b\u0438 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 \u043c\u043d\u043e\u0433\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439, \u0442\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0440\u0430\u0441\u0442\u043e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0434\u043e 10 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0437\u0430\u0440\u0430\u0437, \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u0442\u044c \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442.<br \/>  \u0421\u043b\u043e\u0436\u043d\u043e\u0433\u043e \u0432 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0445 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435\u0442, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e \u043a\u043e\u0434 \u0438 \u043f\u043e\u044f\u0441\u043d\u044e \u043a\u0440\u0430\u0442\u043a\u043e.<\/p>\n<p>  \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0441\u043a\u0440\u0438\u043f\u0442 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435:  <\/p>\n<pre><code>function doGet(e) {   var sheet = SpreadsheetApp.openById(&quot;0Ap2rwVyty8rZdElOTFhlTG9BSEZGY29BZDlpQWdMR2c&quot;);   var n = sheet.getLastRow() + 1;   sheet.getRange(&quot;A&quot;+n).setValue( new Date() );    for (var j = 0; j &lt; 10; j++) {     if (e.parameter[&quot;p&quot; + j] != null) {       sheet.getRange(&quot;B&quot;+n).setValue(e.parameter[&quot;p&quot; + j]);       n++;     }   }   return ContentService.createTextOutput(&quot;OK&quot;); }<\/code><\/pre>\n<p>  \u0422\u043e \u0435\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043e\u0442 p0 \u0434\u043e p9, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 \u0442\u043e \u043e\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f.<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043a\u043e\u0434 \u043a\u043b\u0430\u0441\u0441\u0430 RemoteLogger.cs  <\/p>\n<pre><code>using UnityEngine; using System.Collections; using System.Collections.Generic; using System.IO;  public class RemoteLogger : MonoBehaviour {  \tstring url = &quot;https:\/\/script.google.com\/macros\/s\/AKfycbx6q4xPM-5S7FJn1QFHHd9eXhF4yXvaguawc-yEoxU6ETFrZmU\/exec&quot;; \tbool sema = false; \tQueue&lt;string&gt; log = new Queue&lt;string&gt;(); \t \t\/\/ Use this for initialization \tvoid Awake () { \t\tDontDestroyOnLoad(gameObject); \t} \t \t\/\/ Use this for initialization \tvoid Start () { \t\tDebug.Log(&quot;Hello world!&quot;); \t} \t \t\/\/ Update is called once per frame \tvoid Update () { \t\tif (!sema && log.Count &gt; 0) { \t\t\tSendLog(); \t\t} \t} \t \t\/\/get method here http:\/\/forum.antichat.ru\/showthread.php?t=290347 \tstring UrlEncode(string instring) \t{ \t    StringReader strRdr = new StringReader(instring); \t    StringWriter strWtr = new StringWriter(); \t    int charValue = strRdr.Read(); \t    while (charValue != -1) \t    { \t        if (((charValue &gt;= 48) && (charValue &lt;= 57)) \/\/ 0-9 \t        || ((charValue &gt;= 65)  && (charValue &lt;= 90)) \/\/ A-Z \t        || ((charValue &gt;= 97)  && (charValue &lt;= 122))) \/\/ a-z \t        { \t            strWtr.Write((char) charValue); \t        } \t        else if (charValue == 32) \/\/ Space \t        { \t            strWtr.Write(&quot;+&quot;); \t        } \t        else \t        { \t            strWtr.Write(&quot;%{0:x2}&quot;, charValue); \t        } \t        charValue = strRdr.Read(); \t    } \t    return strWtr.ToString(); \t} \t  \tvoid SendLog() { \t\tif (sema) return; \t\tsema = true; \t\tint count = log.Count &gt; 10 ? 10 : log.Count; \t\tstring t_url = url + &quot;?p0=&quot; + UrlEncode(log.Dequeue()); \t\tfor (int i = 1; i &lt; count; i++) { \t\t\tt_url += &quot;&p&quot; + i + &quot;=&quot; + UrlEncode(log.Dequeue()); \t\t} \t\tWWW www = new WWW(t_url); \t\tStartCoroutine(WaitForRequest(www)); \t}  \tIEnumerator WaitForRequest(WWW www) \t{ \t\tyield return www; \t\t\/\/ check for errors \t\tif (www.error == null) { \t\t\t\/\/OK \t\t} else { \t\t\t\/\/Error \t\t} \t\tsema = false; \t} \t \tvoid OnEnable() {         Application.RegisterLogCallback(HandleLog);     }      \tvoid OnDisable() {         Application.RegisterLogCallback(null);     }      \tvoid HandleLog(string logString, string stackTrace, LogType type) { \t\tlog.Enqueue(logString);     }\t }<\/code><\/pre>\n<p>  \u041c\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0447\u0442\u043e\u0431\u044b \u043b\u043e\u0433\u0433\u0435\u0440 \u043d\u0435 \u0438\u0441\u0447\u0435\u0437\u0430\u043b \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0446\u0435\u043d\u044b. \u0422\u0430\u043a \u0436\u0435 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u0432 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0438\u0433\u0440\u044b, \u0438 \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043d\u0438 \u043e\u0442\u0441\u044b\u043b\u0430\u044e\u0442\u0441\u044f. \u0422\u0430\u043a \u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043b\u0438 \u0441\u0435\u043c\u0430\u0444\u043e\u0440, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u043d\u0430 1 \u043c\u043e\u043c\u0435\u043d\u0442.<\/p>\n<p>  <b>TODO:<\/b><\/p>\n<p>  \u0412 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0430\u0448\u0438\u0445 \u043d\u0443\u0436\u0434, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0435\u0435\u0434\u0435\u0432\u0430\u0442\u044c \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0447\u0442\u043e \u044d\u0442\u043e \u0437\u0430 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 error\/warning\/message \u0438 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0432\u0435\u043d\u043d\u043e, \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u0432 Unity. <br \/>  \u041c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0442\u0435\u043a, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u0432\u0430\u0436\u043d\u043e \u0432\u0438\u0434\u0435\u0442\u044c, \u043e\u0442\u043a\u0443\u0434\u0430 \u0431\u044b\u043b\u043e \u043e\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e.<br \/>  \u0422\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432.<br \/>  \u041c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0432\u044f\u0437\u044c, \u0438 \u043f\u0435\u0440\u0435\u0434\u0432\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u0438\u0433\u0440\u0443, \u0442\u0430\u043c \u0443\u0436\u0435 \u0441\u043b\u0443\u0448\u0430\u044f \u043e\u0442\u043a\u043b\u0438\u043a \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044f \u0435\u0433\u043e \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c. \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0435\u0433\u043a\u043e.<br \/>  \u041c\u043e\u0436\u043d\u043e \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c, \u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0443\u043d\u043a\u0442\u044b \u043c\u0435\u043d\u044e, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443 \u00abMake screenshot\u00bb, \u00abEnable cheats\u00bb, \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0438\u0445.<\/p>\n<p>  \u0412 \u043e\u0431\u0449\u0435\u043c, \u0435\u0441\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f. \u0414\u0435\u043b\u0438\u0442\u0435\u0441\u044c \u0432\u0430\u0448\u0438\u043c\u0438 \u0438\u0434\u0435\u044f\u043c\u0438 \u0438 \u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f\u043c\u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u043d\u0438 \u043a\u043e\u043c\u0443-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0440\u0438\u0433\u043e\u0434\u044f\u0442\u0441\u044f. \ud83d\ude42<\/p>\n<p>  PS: \u0411\u043e\u043b\u044c\u0448\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0430\u0432\u0442\u043e\u0440\u0443 \u044d\u0442\u043e\u0439 <a href=\"http:\/\/habrahabr.ru\/sandbox\/46965\/\">\u0441\u0442\u0430\u0442\u044c\u0438<\/a> \u0438\u0437 \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b.    \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/183906\/\"> http:\/\/habrahabr.ru\/post\/183906\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t<b>Real-time \u0434\u0435\u0431\u0430\u0433 Android \u0438 iOS \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043d\u0430 Unity<\/b><\/p>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u0434\u0451\u0442 \u043d\u0430 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u043b\u043e\u0433\u0430 \u043d\u0435 \u0432\u0441\u0442\u0430\u0451\u0442. \u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0448\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u043f\u043b\u0430\u043d\u0448\u0435\u0442\u0435, \u0442\u043e \u0432\u0441\u0451 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043f\u0435\u0447\u0430\u043b\u044c\u043d\u0435\u0435. \u041d\u0430 iPad \u043d\u0430\u0434\u043e \u0437\u0430\u0439\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 iTunes, \u043d\u0430\u0439\u0442\u0438 \u0441\u0432\u043e\u0439 \u043b\u043e\u0433, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u043e\u0433\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435. \u041d\u0430 Android \u0432\u0441\u0451 \u0435\u0449\u0451 \u0441\u043b\u043e\u0436\u043d\u0435\u0435 \u0438 \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u0435\u0435. \u0417\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u0432\u0438\u0434\u0435\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0432 real-time. \u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0434\u0432\u0438\u0436\u043a\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0439 \u0432 \u043f\u0440\u043e\u0444\u0430\u0439\u043b\u0435\u0440, \u043d\u043e \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e \u0437\u0430\u0431\u044b\u043b\u0438 \u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043a\u043e\u043d\u0441\u043e\u043b\u0438, \u0447\u0442\u043e\u0431\u044b \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0432\u0448\u0438\u0441\u044c \u043d\u0430 \u0435\u0451 \u0432\u043a\u043b\u0430\u0434\u043a\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043c\u043e\u0433 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e\u0442 \u0441\u0432\u043e\u0435\u0439 \u0438\u0433\u0440\u044b \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043f\u0440\u044f\u043c\u043e \u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0430 \u043d\u0430 \u043f\u043b\u0430\u043d\u0448\u0435\u0442.<br \/>  \u042d\u0442\u043e \u0443\u043f\u0443\u0449\u0435\u043d\u0438\u0435 \u043c\u044b \u0441\u0435\u0439\u0447\u0430\u0441 \u0438 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-183906","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/183906","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=183906"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/183906\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=183906"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=183906"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=183906"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}