解析云代码推送通知

Parse Cloud Code Push Notifications

我有一个 Class "Storybaord" 并且有两个何时发送推送通知的实例。

  1. 一个用户喜欢 post - [postObject addUniqueObject: [PFUser currentUser] forKey:@"likes"];

  2. 用户评论 post - [postObject addUniqueObject: self.comment forKey:@"comments"];

在我的云代码中我使用 Parse.Cloud.afterSave 但我不确定如何区分两者,也不确定它们是否会发生,因为还有其他情况下保存 postObject 没有需要发送推送。

云码:

Parse.Cloud.afterSave("Storyboard", function(request){
    var user = Parse.User.current();
    var postUser = request.object.get('userId');

    var pushQuery = new Parse.Query(Parse.Installation);
    pushQuery.equalTo ('userId', postUser);

    Parse.Push.send({
            where: pushQuery,
            data: {
                alert: "Liked Your Post"
                }
                    }, {
                    success: function(){

                    },
                    error: function(){

                    }
            });
    });

如果你坚持通过云代码发送推送,你所要做的就是在客户端设置一个条件语句并相应地执行,这样你就可以根据你的需要选择发送或不发送,因为你提到关于选择性发送推送的一些事情:

if (self.likeButton.isSelected) {
    [PFCloud callFunctionInBackground:@"alertAuthor" withParameters:@{@"message", [NSString stringWithFormat:@"%@ liked your post!", [PFUser currentUser].username]}
} 

if (self.commentEntered) {
    [PFCloud callFunctionInBackground:@"alertAuthor" withParameters:@{@"message", [NSString stringWithFormat:@"%@ commented on your post!", [PFUser currentUser].username]}
}

并且只需通过云代码使用参数发送推送:

Parse.Cloud.define("alertAuthor", function(request,response){
  var query = new Parse.Query(Parse.User);
  var message = request.params.message;
  query.equalTo('username', 'postUser');

  Parse.Push.send({
    where: query,
    data : { 
      alert: message,
      badge: "Increment",
      sound: "",
    }
    }, {
    success: function() {
    //Success
    },
    error: function(error) {
    //Oops
    }
  });
});