The Push Notifications module for DrupalGap helps users to send push messages from their Drupal website to devices.
Before getting started, make sure you're running the latest versions of:
- PhoneGap/Cordova
- Android SDK(s)
- iOS/xCode
First, download and extract this module so it lives here:
app/modules/push_notifications
Add it to the settings.js
file:
Drupal.modules.contrib['push_notifications'] = {};
Then install the PhoneGap Plugin Push
https://github.com/phonegap/phonegap-plugin-push
cordova plugin add phonegap-plugin-push
cordova plugin save
You may have to run this command if you're having issues building for an Android device:
android update sdk --no-ui --filter "extra"
You'll need to be running at least [email protected]
to get the build to compile proplery for iOS. To see your current version of the iOS platform:
cordova platform ios
Then if it isn't running at least 4.0.1
, then run this command:
cordova platform update [email protected]
Next, follow these steps for your desired platform(s):
- Go to https://console.cloud.google.com/home/dashboard
- Create a new project (or use an existing one)
- On the
Dashboard
, clickEnable and manage APIs
- Enable the
Google Cloud Messaging for Android
API - Once enabled, click
Go to Credentials
- Under
Where will you be calling the API from?
chooseWeb server
- Click
What credentials do I need?
- Enter a
Name
for your web server - Click
Create API key
- Copy the API key and set it aside
High level overview
cd ~/Desktop
openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12
openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12
cat apns-dev-cert.pem apns-dev-key.pem > apns-dev.pem
scp apns-dev.pem [email protected]:~/
- Download and enable the Push Notifications module for Drupal: https://www.drupal.org/project/push_notifications
- In Drupal, go to
admin/config/services/push_notifications/configure
- For Android, paste in the API key you generated earlier into this form
- Click
Save configuration
- Go to
admin/structure/services/list/drupalgap/resources
- Check the box next to
push_notifications
to enable itscreate
anddelete
resources - Click
Save
- Flush all of Drupal's caches
BEGIN: THIS SECTION MIGHT NOT BE NEEDED
Next, we'll head back to the Google Cloud Platform API (if you're working with Android)...
- Go to https://console.cloud.google.com
- Click on the
Credentials
button in the sidebar menu for your project - Click the
New credentials
button - Select
API key
- Click
Android key
- Enter a
Name
for your key, e.g.example.com
- Click the
+ Add package name and fingerprint
button - Enter the
Package name
, which can be found as the value of thepackage
attribute in themanifest
element in theAndroidManifest.xml
file - Open a terminal window and navigate to the root of your cordova project
- Run this command:
keytool -genkey -v -keystore example.keystore -alias example -keyalg RSA -keysize 2048 -validity 10000
- Follow all the prompts and take note of the password you enter, because you'll need it later
- Run this command:
keytool -exportcert -alias example -keystore example.keystore -list -v
- Copy the
SHA1
fingerprint - Go back to the Google window and paste in the
SHA1
fingerprint - Click
Create
, then copy the API key that is shown
END: THIS SECTION MIGHT NOT BE NEEDED
Next, get the senderID
by...
- Go to https://console.developers.google.com/home/dashboard
- On your project's dashboard, you should see the
ID
- Click on the down arrow next to the
ID
- Copy the
Project number
, this will go into yoursettings.js
file
Next, add this to your app's settings.js
file, using the Project number
from above as the senderID
below:
drupalgap.settings.push_notifications = {
android: {
senderID: "12345679"
},
ios: {
alert: "true",
badge: "true",
sound: "true"
},
windows: {}
};
That's it, finally. You're now ready to send a push notification. Compile the app to a mobile device to test it out.
In Drupal, first go to admin/config/services/push_notifications
and verify that a token has been registered for your
desired device(s). If there is a token registered, then go to admin/config/services/push_notifications/message
and
fill out the form to send a push notification to your desired platform(s).