使用 CloudCode 发送有针对性的推送通知

Posted

技术标签:

【中文标题】使用 CloudCode 发送有针对性的推送通知【英文标题】:Sending out a Targeted push notification with CloudCode 【发布时间】:2015-11-05 03:41:53 【问题描述】:

我尝试编写一个发送目标推送的云代码函数 通知。我传入的 user id 存在于 Parse 中 数据库,但是当我运行此代码时,我点击了响应、成功和我的 日志显示发送通知的结果为真。

通知存在于推送日志中,但是当我查看推送时 详细信息,它会为对 User 对象的无效查询返回 102 错误。

这是完整的目标:

     
  "deviceType": "ios", 
  "user":  
    "$exists": true, 
    "$inQuery":  
      "className": "_User", 
      "where":  
        "objectId": "R8q99hu62c" 
       
     
   

这是错误:

error 102: bad type for $inQuery 

有人能解释一下为什么会这样吗?

    Parse.Cloud.define('sendPushNotification', function(request, response) 

    console.log(request);

    var userQuery = new Parse.Query(Parse.User);
    userQuery.equalTo('objectId', request.params.userId);

    var queryIos = new Parse.Query(Parse.Installation);
    queryIos.equalTo('deviceType', 'ios');
    queryIos.exists('user');

    queryIos.matchesQuery('user', userQuery);


    Parse.Push.send(
      where: queryIos,
      data: 
        alert: request.params.firstName + ' has invited you to join his party',
        badge: "Increment",
        guestlistInviteId: request.params.guestlistInviteId,
        notificationText: request.params.firstName + "has invited you to his party"
      
    ).then(function(result) 
      console.log(result);
      response.success('sent out the push');
      , function(error) 
          console.log('error');
          response.error(error);
    ); 
);

编辑:

在解析时在安装表中添加一列作为指向用户的指针。 从安装查询中删除了存在和包含,同时将用户指针设置为我拥有的用户对象。这会向目标用户发送推送通知。

 var queryIos = new Parse.Query(Parse.Installation);
 queryIos.equalTo('deviceType', 'ios');
 queryIos.equalTo("User", user);

【问题讨论】:

【参考方案1】:

根据 Parse Docs,您正在尝试查询不支持它的数据类型。

您可以在link 中看到这一点。

我的猜测是您无法直接查询与其相关的用户的解析安装。

我也发现了这个,也许它有用:Parse Question。这基本上是说您需要在安装中创建一个指向特定用户的指针,然后您可以使用“高级定位”向与该用户相关的每个设备发送推送通知。

我希望这里能对你有所帮助。

祝你好运。

【讨论】:

以上是关于使用 CloudCode 发送有针对性的推送通知的主要内容,如果未能解决你的问题,请参考以下文章

向所有用户发送推送通知

从云代码发送本地化推送通知

解析 CloudCode 的执行顺序

Parse.com - 为单个用户设置推送通知

推送到设备后过期推送通知

向基于 Azure 的 Android 应用发送有针对性的推送通知