I step into a problem that I don't even know what is the problem.
Trying with ios first.
I am making the push notification from parse server open source. I set up the parse server for push:
"push": {
"ios":{
"pfx": "/var/www..../Certificates.p12",
"passphrase": "...",
"bundleId": "com.xxxx.testPushNotification",
"production": false
}
}
I am using this plugin https://github.com/phonegap-build/PushPlugin. Here is my platform
Installed platforms:
ios 4.3.1
Available platforms:
amazon-fireos ~3.6.3 (deprecated)
android ~6.0.0
blackberry10 ~3.8.0
browser ~4.1.0
firefoxos ~3.6.3
osx ~4.0.1
webos ~3.7.0
and
cordova 6.4.0
and here is the code in app.js
$("#app-status-ul").append('<li>registering ' + device.platform + '</li>');
pushNotification.register(
tokenHandler,
errorHandler,
{
"badge":"true",
"sound":"true",
"alert":"true",
"ecb":"onNotificationAPN"
});
// result contains any message sent from the plugin call
function successHandler (result) {
alert('result = ' + result);
}
// result contains any error description text returned from the plugin call
function errorHandler (error) {
alert('error = ' + error);
}
function onNotificationAPN (event) {
if ( event.alert )
{
navigator.notification.alert(event.alert);
}
if ( event.sound )
{
var snd = new Media(event.sound);
snd.play();
}
if ( event.badge )
{
pushNotification.setApplicationIconBadgeNumber(successHandler, errorHandler, event.badge);
}
}
function tokenHandler (result) {
// Your iOS push server needs to know the token before it can push to this device
// here is where you might want to send it the token for later use.
alert('device token = ' + result);
}
// fired when push notification is received
window.onNotification = function (e) {
navigator.notification.alert('Notification received: ' + JSON.stringify(e));
}
var pushNotification = window.plugins.pushNotification;
pushNotification.register(successHandler, errorHandler, {"channelName":"xxxx","ecb":"onNotification"});
function successHandler(result) {
console.log('registered###' + result.uri);
// send uri to your notification server
}
function errorHandler(error) {
console.log('error###' + error);
}
basically I may manage the server side since I sent several of messages but they are not actually sent.
I managed to get the .p12 and .pem and the app id is matched between app and server side.
Where is my problem? Help would be appreciated.
I found my answer myself, hope it helps
inside deviceReady()
if(window.ParsePushPlugin){
ParsePushPlugin.getInstallationId(function(id) {
// note that the javascript client has its own installation id,
// which is different from the device installation id.
alert("device installationId: " + id);
}, function(e) {
alert('error');
});
ParsePushPlugin.getSubscriptions(function(subscriptions) {
alert(subscriptions);
}, function(e) {
alert('error');
});
ParsePushPlugin.subscribe('SampleChannel', function(msg) {
alert('OK');
}, function(e) {
alert('error');
});
ParsePushPlugin.unsubscribe('SampleChannel', function(msg) {
alert('OK');
}, function(e) {
alert('error');
});
ParsePushPlugin.on('receivePN', function(pn){
alert('yo i got this push notification:' + JSON.stringify(pn));
});
//inside config.xml
<preference name="ParseAppId" value="xxxxxx" />
<preference name="ParseServerUrl" value="http://xxxxx:1389/parse" />
<preference name="ParseGcmSenderId" value="xxxxxx" />
<preference name="ParseMultiNotifications" value="true" />
Plugin : https://github.com/taivo/parse-push-plugin
Notice: set appId (app bundle) the same between server and app and make sure p12 and pem file in the root folder of your app.