gpt4 book ai didi

android - 解析云函数将 JSON 发送给特定用户

转载 作者:行者123 更新时间:2023-11-30 01:41:05 25 4
gpt4 key购买 nike

我创建了一个用户可以向其他用户发送消息(通知)的应用程序。对于这些问题,我使用解析 SDK。所以我使用以下代码将消息从设备发送到解析云。

final ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereEqualTo("email", "user@email.com");
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 格式的数据吗?提前致谢

最佳答案

由于两件事,我在发送通知时遇到了问题

  • 启用客户端推送“不是你的情况”
  • 没有在安装中保存用户“尝试以下操作”

用户登录到您的应用后,通过以下方式将他的 ID 添加到安装中

ParseInstallation installation = ParseInstallation.getCurrentInstallation();
installation.addUnique("userId", currentUser.getObjectId());
installation.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
// check the returned exception
if (e == null) {
// everything worked fine
} else {
// error occurred
}
}
});

希望对你有帮助:)

更新
在您的代码中,您正在发送收件人 userId,尽管您也在云功能中保存了用户名,但您遇到了同样的问题,用户名已保存,但您根据 ID 查询安装。我已经更新了上面的安装,还将您的云功能中的“用户”更改为“userId”

pushQuery.equalTo("userId", recipientUser);

关于android - 解析云函数将 JSON 发送给特定用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34495508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com