将服务器推送通知解析到特定用户问题

Posted

技术标签:

【中文标题】将服务器推送通知解析到特定用户问题【英文标题】:Parse Server Push Notification to Specific user issue 【发布时间】:2016-10-17 20:07:14 【问题描述】:

我需要在用户更新类后发送推送通知,推送通知正在仪表板中工作。 我将此代码添加到我的云代码中,我可以看到带有成功消息的日志,但是通知没有发送给用户,在过去的通知中,它显示已发送,但受众是所有人,但推送已发送为 0,这是我的云代码

Parse.Cloud.afterSave("Class", function(request, response) 
var inObject = request.object;
if (inObject.get("isLost"))
    console.log("inObject is lost");

    var targetUser = new Parse.User();
    targetUser.id = inObject.get("UserID");

    var query = new Parse.Query(Parse.Installation);
    query.equalTo("user", targetUser);

    Parse.Push.send(
        where: query,
        data: 
            alert: "InObject",
            badge: "Increment",
            message: "Testando"
        
    , 
        success: function() 
            // Push was successful
            console.log("success");
        ,
        error: function(error) 
            // Handle error
            console.log("error: "+error.code+" message "+error.message);
            throw "Got an error " + error.code + " : " + error.message;
        ,
        useMasterKey: true
    );

);

我尝试以帖子link 的形式进行双重查询,但没有成功,我登录了用户 ID,与我在仪表板中的安装中显示的相同。 如果我单击推送通知以获取更多详细信息,这是它显示的目标: Target details from push

编辑

保存该类的代码(在 java 中):

ParseObject object = new ParseObject(Class.class.getSimpleName());
    object.put(NAME, getName());
    object.put(UUID, getUUID());
    object.put(ICON_ID, getIconID());
    object.put(ADDRESS, getAddress());
    object.put(ID1, iD1.toString());
    object.put(ID2, iD2.toString());
    object.put(ID3, iD3.toString());
    object.put(IS_LOST, getIsLost());
    object.put(USER, parseUserID);
    object.put(DISTANCE, getDistance());
    object.put(LATITUDE, getLatitude());
    object.put(LONGITUDE, getLongitude());
    object.saveEventually();

parseID 是由 ParseUser.getCurrentUser().getObjectID() 生成的;

【问题讨论】:

您的查询返回 0 次安装,因此发送了 0 次推送!使用这个:var user = request.object.get("user"); @SteveMcMeen,这样可以工作,但是传递的是哪个用户?提出请求的那个?如果是,那么这对我不起作用,因为我需要保存在 inObject 上的用户。 是的,是那个用户提出了请求,请添加保存该类的代码,以便我更好地帮助您,我不知道您保存的是哪种数据。跨度> @SteveMcMeen 添加了保存代码,在 Parse Dashboard 上,UserId 保存为字符串 您正在设置 USER 并尝试获取用户 ID 【参考方案1】:

所以,在尝试了很多方法之后,我最终在我的对象和 ParseUser 对象之间创建了一个关系,这解决了这个问题,我仍然不知道为什么我不能只保存 UserID,但是我的问题现在解决了。

【讨论】:

以上是关于将服务器推送通知解析到特定用户问题的主要内容,如果未能解决你的问题,请参考以下文章

解析从云代码向特定用户发送推送通知

解析服务器云代码将通知徽章设置为特定数字

在 Unity 中更改服务器端解析通知的推送通知图标

Apple 向特定用户推送通知

特定用户的静默推送通知

服务器到客户端推送通知? [关闭]