オブジェクトを直接送信することはできません。例外が発生します (数日前にこの問題が発生しましたが、例外の名前を書き留めていませんでした)。これまでのところ、最良の答えは BrentonGray88 によるものです。
Badge: "Increment" 値が含まれているため、Android を使用していないと思いますが、これは私が行う方法です。
通知を送信する Android コード:
Comment オブジェクトに、pointer (_User) column
コメントを送信したユーザーへの があることを確認してください。user.put("commentAuthor", ParseUser.getCurrentUser());
コメントを作成するときは、コメントを作成したユーザーにいつでもアクセスできるように、Android コードに含めます。
ここで、Comment をクエリして、その objectId をプッシュ通知に送信する必要があります。
ParseQuery<ParseObject> query = new ParseQuery<>("Comment");
query.whereEqualTo("objectId", I AM NOT SURE WHAT CONDITION YOU WANT HERE);
query.findInBackground((comment, e) -> {
if (e == null) for (ParseObject commentObject: comment) {
String recipientObjectId = commentObject.getParseObject("commentAuthor").getObjectId();
final Map<String, Object> params = new HashMap<>();
// This is to send the notification to the author of the Comment
params.put("recipientObjectId", recipientObjectId);
// This is so we can use values from the Comment in the notification
params.put("commentObjectId", commentObject.getObjectId());
// This is a required lined
params.put("useMasterKey", true);
ParseCloud.callFunctionInBackground("pushMessage", params, new FunctionCallback<String>() {
public void done(String result, ParseException e) {
if (e == null) {
Log.d(getClass().toString(), "ANNOUNCEMENT SUCCESS");
} else {
System.out.println(e);
Log.d(getClass().toString(), "ANNOUNCEMENT FAILURE");
}
}
});
}
});
Cloude コードのクエリについては、次のとおりです。
Parse.Cloud.define("pushMessage", function (request, response) {
// Again, we are sending the notification to the author of the Comment
var pushQuery = new Parse.Query(Parse.Installation);
pushQuery.equalTo('user', request.params.get("recipientObjectId"));
// We retrieve information from the Comment created by that author
var commentQuery = new Parse.Query(Parse.Comment);
commentQuery.equalTo('objectId', request.params.commentObjectId);
commentQuery.get("commentObjectId", {
success: function(userObject) {
var displayName = userObject.get("displayName");
var content = userObject.get("content");
var message = displayName + ': ';
message += content.trim();
Parse.Push.send({
where: pushQuery,
data: {
alert: message
},
}, {
useMasterKey: true,
success: function () {
response.success("Success!");
},
error: function (error) {
response.error("Error! " + error.message);
}
});
console.log();
},
error: function(error) {
console.log("An error occured :(");
}
});
});
申し訳ありませんが、私は JavaScript が得意ではありませんが、それが私のやり方です。頑張ってください!:)