2015-08-28 3 views
0

У меня есть класс «Storybaord», и есть два случая отправки Push-уведомления.Parse Cloud Code Push Notifications

  1. пользователь любит пост - [postObject addUniqueObject: [PFUser currentUser] forKey:@"likes"];

  2. комментарии пользователя на пост - [postObject addUniqueObject: self.comment forKey:@"comments"];

В моем облаке кода я использую Parse.Cloud.afterSave, но я не уверен в том, как отличить два, а также определить, если они даже происходят, потому что есть другие случаи сохранения postObject без необходимости отправки push.

Облако Код:

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(){ 

        } 
      }); 
    }); 
+0

Итак, вы используете код на стороне клиента для выполнения обновления объекта, но облачный код для отправки push? Вы должны будете сказать, если клиентская сторона выполняет облачную функцию с параметрами для push или просто нажимает на сторону уведомления. В любом случае это делается на стороне клиента postObject. Вы хотите ответить на один пример для клиентской стороны или будете ли вы настроены на нажатие на облако? – soulshined

+0

@soulshined Ну прямо сейчас push-уведомления отправляются на клиентскую сторону, но из того, что я прочитал, это проблема безопасности. Итак, я пытаюсь перейти на облачный код для отправки push-уведомлений. – Peter

+0

Итак, создайте функцию облачного кода, когда пользователю нравится 'postObject', и если он успешно сохранен, отправьте push. Затем создайте отдельную функцию облачного кода для комментария и отправьте push внутри этой функции. По сути, как и на стороне клиента. Нет причин для создания условного оператора, когда все его можно обрабатывать в ответах или обратных вызовах. – soulshined

ответ

1

Если настойчивое на отправку нажим через облака кода, все, что вам нужно сделать, это установить условный оператор на стороне клиента и действовать соответствующим образом, таким образом, вы можете выбрать отправлять или не в соответствии с вашими потребностями, поскольку вы упомянули что-то о выборочно отправки толкая:

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 
    } 
    }); 
}); 
+1

Спасибо. Получил работу – Peter

Смежные вопросы