Skip to content

Instantly share code, notes, and snippets.

@girliemac
Last active October 18, 2017 17:39
Show Gist options
  • Save girliemac/3dccdc7b69b758e710e3 to your computer and use it in GitHub Desktop.
Save girliemac/3dccdc7b69b758e710e3 to your computer and use it in GitHub Desktop.
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
Copy link

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