Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Snippets for blog, "Sending Android Push Notifications via GCM in JavaScript using PhoneGap and PubNub"
<script type="text/javascript" src="js/PushNotification.js"></script>
<script type="text/javascript" src="https://cdn.pubnub.com/pubnub-3.7.4.min.js"></script>
var pushNotification = window.plugins.pushNotification;
pushNotification.register(
successHandler,
errorHandler,
{
'senderID':'your_sender_id',
'ecb':'onNotificationGCM' // callback function
}
);
function successHandler(result) {
console.log('Success: '+ result);
}
function errorHandler(error) {
console.log('Error: '+ error);
}
function onNotificationGCM(e) {
switch(e.event){
case 'registered':
if (e.regid.length > 0){
deviceRegistered(e.regid);
}
break;
case 'message':
if (e.foreground){
// When the app is running foreground.
alert('The room temperature is set too high')
}
break;
case 'error':
console.log('Error: ' + e.msg);
break;
default:
console.log('An unknown event was received');
break;
}
}
/* Cordova Push Notification Demo
* index.js - this file should be in your_cordova_app_root/www/js
* Also, you need PushNotification.js and PubNub.js in the dir too.
* Install Cordova Push Plugin w/ CLI...
* $ cordova plugin add https://github.com/phonegap-build/PushPlugin.git
*/
var channel = '';
var t = document.getElementById('temperature');
var pubnub = PUBNUB.init({
subscribe_key: 'sub-c-f762fb78-2724-11e4-......',
publish_key: 'pub-c-156a6d5f-22bd-4a13-......',
});
function initialize() {
bindEvents();
}
function bindEvents() {
document.addEventListener('deviceready', init, false);
}
function init() {
var pushNotification = window.plugins.pushNotification;
pushNotification.register(successHandler, errorHandler, {'senderID':'8370991XXXXX','ecb':'onNotificationGCM'});
// Get your Sender ID at cloud.google.com/console
}
function successHandler(result) {
console.log('Success: '+ result);
}
function errorHandler(error) {
console.log('Error: '+ error);
}
function onNotificationGCM(e) {
switch( e.event ){
case 'registered':
if ( e.regid.length > 0 ){
console.log('regid = '+e.regid);
deviceRegistered(e.regid);
}
break;
case 'message':
console.log(e);
if (e.foreground){
alert('The room temperature is set too high')
}
break;
case 'error':
console.log('Error: '+e.msg);
break;
default:
console.log('An unknown event was received');
break;
}
}
// Publish the channel name and regid to PubNub
function deviceRegistered(regid) {
channel = regid.substr(regid.length - 8).toLowerCase();
var c = document.querySelector('.channel');
c.innerHTML = 'Your Device ID: <strong>' + channel + '</strong>';
c.classList.remove('blink');
pubnub.publish({
channel: channel,
message: {
regid: regid
}
});
pubnub.subscribe({
channel: channel,
callback: function(m) {
console.log(m);
t.classList.remove('gears');
if(m.setting) {
t.textContent = m.setting + '°';
}
}
});
}
initialize();
var pubnub = PUBNUB.init({
subscribe_key: 'your-sub-key',
publish_key: 'your-pub-key',
ssl: true
});
function changeTemperature(e) {
var temp = input.value;
pubnub.publish({
channel: 'gcm-test',
message: {
temperature: temp
}
});
if(temp >= 80) {
sendPush();
}
}
function sendPush() {
pubnub.mobile_gw_provision ({
device_id: 'APA91bERgbCFiAaR5awbHISeMDlCYfJB7pe95StxP8zNETEkBxgWY-HkxTXkB....', // Reg ID you got on your device
channel : channel,
op: 'add',
gw_type: 'gcm',
error : function(msg){console.log(msg);},
callback : successCallback
});
}
function successCallback() {
var message = PNmessage();
message.pubnub = pubnub;
message.callback = function(msg){ console.log(msg); };
message.error = function (msg){ console.log(msg); };
message.channel = channel;
message.gcm = {
title: 'Push Demo',
message: 'The room temperature is set too high'
};
message.publish();
}
@karimovisky

This comment has been minimized.

Copy link

commented Feb 24, 2016

when i try to use this code i got this error

has no method 'mobile_gw_provision'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.