IMPORTANT: This is a fork from the mrDoctorWho repo to change the database used from Mnesia to MySQL.
It works, but there are many things that should be improved.
mod_gcm is an ejabberd module to send offline messages as PUSH notifications for Android using Google Cloud Messaging API.
Consider using mod_push which implements XEP-0357 and works with many PUSH services.
This module has nothing to do with XEP-0357.
The main goal of this module is to send all offline messages to the registered (see Usage) clients via Google Cloud Messaging service.
Compilation:
Because of the dependencies such as xml.hrl, logger.hrl, etc it's recommended to compile the module with ejabberd itself: put it in the ejabberd/src directory and run the default compiler.
Configuration:
To let the module work fine with Google APIs, put the line below in your ejabberd config file. This line must be independent of the module configuration, not a parameter of it. In case of ejabberd 14, the line is:
gcm_api_key: "Your Google APIs key"
Here you can create your own API key for Google Cloud Messaging (you need the server key). Bear in mind that the feature is highly limited for free users.
As you may know, Google Cloud Messaging won't work as you expect without the client part.
You won't find the instructions how to create your own Google Cloud Messaging client here. Although, this example should work fine.
You also need to send this stanza to the server over the XMPP connection, to let the server know your client key:
<iq to="YourServer" type="set">
<register xmlns="https://android.googleapis.com/gcm" >
<key>API_KEY</key>
</register>
</iq>
The key is kept in mnesia database and completely belongs to the JabberID which it was sent from.
Compatibility:
The module should work fine in erlang 14+. It does not require any special features from the server, although it was tested only on ejabberd 14.12.