我創建了一個應用程序,用戶可以在其他用戶中發送消息(通知)。請使用解析SDK來解決這些問題。所以我用下面的代碼將設備發出的消息發送到解析雲。解析雲功能發送JSON給特定用戶
final ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereEqualTo("email", "[email protected]");
query.getFirstInBackground(new GetCallback<ParseUser>() {
public void done(ParseUser object, ParseException e) {
if (e == null) {
Toast.makeText(getActivity(), "User found", Toast.LENGTH_SHORT).show();
String search_username = object.getString("username");
String id = object.getObjectId();
Log.d("ObjectID:",id);
HashMap<String, Object> params = new HashMap<String, Object>();
params.put("recipientId", id);
params.put("message", username);
ParseCloud.callFunctionInBackground("sendPushToUser", params, new FunctionCallback<String>() {
public void done(String success, ParseException e) {
if (e == null) {
// Push sent successfully
Toast.makeText(getActivity(), "Request send", Toast.LENGTH_SHORT).show();
}
}
});
然後我有下一個雲功能接收和推送消息給特定用戶。
Parse.Cloud.define("sendPushToUser", function(request,response){
var senderUser = request.user;
var recipientUserId = request.params.recipientId;
var message = request.params.message;
var title ="Friend Request";
if(message.length > 140){
message = message.substring(0, 137) + "...";
}
var recipientUser = new Parse.User();
recipientUser.id = recipientUserId;
var pushQuery = new Parse.Query(Parse.Installation);
pushQuery.equalTo("user", recipientUser);
Parse.Push.send({
where: pushQuery,
data: {
"alert":{"data":{"message":"message",
"title":"title"}}
}
}).then(function(){
response.success("true")
}, function(error) {
response.error("Push failed to send with error: "+error.message);
});
});
但是從未收到該消息。如果我從解析儀表板發送推送通知,一切正常。任何人都知道如何解決它?設備期望收到JSON,因此我的雲端功能可能不會以json格式發送數據?在此先感謝
您是否啓用了客戶端推送? – SaNtoRiaN
不,我認爲使用雲功能並不需要啓用客戶端推送 –