gpt4 book ai didi

javascript - 在 ParseInstallation 对象中包含用户名是不是一种不好的形式?

转载 作者:太空宇宙 更新时间:2023-11-04 13:39:42 24 4
gpt4 key购买 nike

我正在构建一个 Android 应用程序,它使用 Parse 的推送功能在单个用户之间发送消息,经过大量尝试不同的解决方案(没有启用客户端推送,因为这显然是一个安全风险),我决定这样做:

// com.myapp.Application.java
public void onCreate(){
...
ParseInstallation i = ParseInstallation.getCurrentInstallation();

i.put("username", ParseUser.getCurrentUser().getUsername());
i.saveInBackground();
...
}

现在,当我想向单个用户发送推送时,我会调用执行此操作的 Cloud Code 函数:

// cloud/main.js
Parse.Cloud.define("pushMessage", function(request,response) {

var from = request.user.getUsername();
var to = request.params["receiver"];

var query = new Parse.Query(Parse.Installation);
query.equalTo('username', to);

Parse.Push.send({
where: query,
data: {
alert: "message from " + from,
// more data
}
}
}

这感觉有点像黑客,但它确实有效。是不是形式不好?我无法真正理解迄今为止所见过的解决方案,主要是因为它们几乎完全面向 iOS,而我无法阅读 Objective-C。

最佳答案

好吧,所以我不得不重新做一次。如果有人遇到同样的问题,我会回答。

在安装中包含用户名的问题是您需要确保正确处理它。顾名思义,安装与设备而不是用户相关。这意味着,如果您的应用程序支持多个用户,则需要处理重新登录的额外步骤,否则用户将收到不适合他们的推送。

我忘了做其中的一些事情,我的代码变成了意大利面条。

经过一番研究后,我更改了方法,改为订阅以用户的 ObjectId 命名的 channel ,然后简单地将推送发送到该 channel 。然后,我在注销时取消订阅,并在每次应用程序打开时重新订阅。这样,如果您关闭应用程序,您仍然可以收到推送。它工作得同样好,并且需要更少的代码。

关于javascript - 在 ParseInstallation 对象中包含用户名是不是一种不好的形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31340725/

24 4 0
文章推荐: java - 在java中运行javascript,或者从chrome中检索数据
文章推荐: javascript - Jquery::如何删除 div
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com