简体   繁体   中英

Can't receive push notification from Parse server and ionic app (ios)

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.

please click to see picture

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM