<li>The Google API project number of the account registered to use GCM.</li>
</ul>
<h3 id="gcm-setup">Setting Up GCM</h3>
<p>Before proceeding with the server and client setup, it's necessary to register
a Google account with the Google API Console, enable Google Cloud Messaging in GCM,
and obtain an API key from the <a href="https://code.google.com/apis/console">
Google API Console</a>.</p>
<p>For instructions on how to set up GCM, see <a href="gs.html">Getting Started</a>.</p>
<h3 id="server-setup">Setting Up an HTTP Server</h3>
<p>This section describes the different options for setting up an HTTP server.</p>
<h4 id="webserver-setup">Using a standard web server</h4>
<p>To set up the server using a standard, servlet-compliant web server:</p>
<ol>
<li>From the <a href="http://code.google.com/p/gcm">open source site</a>,
download the following directories: <code>gcm-server</code>,
<code>samples/gcm-demo-server</code>, and <code>samples/gcm-demo-appengine</code>.</p>
<li>In a text editor, edit the <code>samples/gcm-demo-server/WebContent/WEB-INF/classes/api.key</code> and replace the existing text with the API key obtained above.</li>
<li>In a shell window, go to the <code>samples/gcm-demo-server</code> directory.</li>
<li>Generate the server's WAR file by running <code>ant war</code>:</li>
<pre class="prettyprint">$ ant war
Buildfile:build.xml
init:
[mkdir] Created dir: build/classes
[mkdir] Created dir: dist
compile:
[javac] Compiling 6 source files to build/classes
war:
[war] Building war: <strong>dist/gcm-demo.war</strong>
BUILD SUCCESSFUL
Total time: 0 seconds
</pre>
<li>Deploy the <code>dist/gcm-demo.war</code> to your running server. For instance, if you're using Jetty, copy <code>gcm-demo.war</code> to the <code>webapps</code> directory of the Jetty installation.</li>
<li>Open the server's main page in a browser. The URL depends on the server you're using and your machine's IP address, but it will be something like <code>http://192.168.1.10:8080/gcm-demo/home</code>, where <code>gcm-demo</code> is the application context and <code>/home</code> is the path of the main servlet.
</li>
</ol>
<p class="note"><strong>Note:</strong> You can get the IP by running<code>ifconfig</code>on Linux or MacOS, or<code>ipconfig</code>on Windows. </p>
<p> You server is now ready.</p>
<h4 id="appengine-setup">Using App Engine for Java</h4>
<p>To set up the server using a standard App Engine for Java:</p>
<ol>
<li>Get the files from the <a href="http://code.google.com/p/gcm">open source
and replace the existing text with the API key obtained above.
<p class="note"><strong>Note:</strong> The API key value set in that class will
be used just once to create a persistent entity on App Engine. If you deploy
the application, you can use App Engine's <code>Datastore Viewer</code> to change
it later.</p>
</li>
<li>In a shell window, go to the <code>samples/gcm-demo-appengine</code> directory.</li>
<li>Start the development App Engine server by <code>ant runserver</code>,
using the <code>-Dsdk.dir</code> to indicate the location of the App Engine SDK
and <code>-Dserver.host</code> to set your server's hostname or IP address:</li>
<pre class="prettyprint">
$ ant -Dsdk.dir=/opt/google/appengine-java-sdk runserver -Dserver.host=192.168.1.10
Buildfile: gcm-demo-appengine/build.xml
init:
[mkdir] Created dir: gcm-demo-appengine/dist
copyjars:
compile:
datanucleusenhance:
[enhance] DataNucleus Enhancer (version 1.1.4) : Enhancement of classes
[enhance] DataNucleus Enhancer completed with success for 0 classes. Timings : input=28 ms, enhance=0 ms, total=28 ms. Consult the log for full details
[enhance] DataNucleus Enhancer completed and no classes were enhanced. Consult the log for full details
runserver:
[java] Jun 15, 2012 8:46:06 PM com.google.apphosting.utils.jetty.JettyLogger info
[java] INFO: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger
[java] Jun 15, 2012 8:46:06 PM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
[java] Jun 15, 2012 8:46:09 PM com.google.android.gcm.demo.server.ApiKeyInitializer contextInitialized
[java] SEVERE: Created fake key. Please go to App Engine admin console, change its value to your API Key (the entity type is 'Settings' and its field to be changed is 'ApiKey'), then restart the server!
[java] Jun 15, 2012 8:46:09 PM com.google.appengine.tools.development.DevAppServerImpl start
[java] INFO: The server is running at http://192.168.1.10:8080/
[java] Jun 15, 2012 8:46:09 PM com.google.appengine.tools.development.DevAppServerImpl start
[java] INFO: The admin console is running at http://192.168.1.10:8080/_ah/admin
</pre>
<li>Open the server's main page in a browser. The URL depends on the server
you're using and your machine's IP address, but it will be something like
<code>http://192.168.1.10:8080/home</code>, where <code>/home</code>
is the path of the main servlet.</li>
<p class="note"><strong>Note:</strong> You can get the IP by running <code>ifconfig</code>
on Linux or MacOS, or <code>ipconfig</code> on Windows.</p>