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 cordova-ios@4.0.1 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 ios@4.0.1
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 AndroidAPI - 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
Namefor 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 me@example.com:~/
- 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_notificationsto enable itscreateanddeleteresources - Click
Save - Flush all of Drupal's caches
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
Credentialsbutton in the sidebar menu for your project - Click the
New credentialsbutton - Select
API key - Click
Android key - Enter a
Namefor your key, e.g.example.com - Click the
+ Add package name and fingerprintbutton - Enter the
Package name, which can be found as the value of thepackageattribute in themanifestelement in theAndroidManifest.xmlfile - 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
SHA1fingerprint - Go back to the Google window and paste in the
SHA1fingerprint - Click
Create, then copy the API key that is shown
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.jsfile
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).