使用 CloudCode 发送有针对性的推送通知
Sending out a Targeted push notification with CloudCode
我试着写了一个云代码函数,发送定向推送
通知。我传入的 user id 存在于 Parse
数据库,但是当我 运行 这段代码时,我点击了响应,成功和我的
日志显示发送的通知结果为真。
通知存在于推送日志中,但是当我查看推送时
详细信息,它 returns 用户对象上的无效查询的 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);
});
});
编辑:
在安装中添加了一个列 table 作为指向用户的解析列。
从安装查询中删除了 exists 和 includes,同时将用户指针设置为我拥有的用户对象。这会向目标用户发送推送通知。
var queryIos = new Parse.Query(Parse.Installation);
queryIos.equalTo('deviceType', 'ios');
queryIos.equalTo("User", user);
根据 Parse Docs,您正在尝试查询不支持它的数据类型。
你可以在这个 link.
中看到
我的猜测是您无法查询与其直接相关的用户的解析安装。
我也找到了这个,也许有用:Parse Question。它基本上是说您需要在安装中创建一个指向特定用户的指针,然后您可以使用 "advanced targeting" 向与该用户相关的每个设备发送推送通知。
希望这里的内容对您有所帮助。
祝你好运。
我试着写了一个云代码函数,发送定向推送 通知。我传入的 user id 存在于 Parse 数据库,但是当我 运行 这段代码时,我点击了响应,成功和我的 日志显示发送的通知结果为真。
通知存在于推送日志中,但是当我查看推送时 详细信息,它 returns 用户对象上的无效查询的 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);
});
});
编辑:
在安装中添加了一个列 table 作为指向用户的解析列。 从安装查询中删除了 exists 和 includes,同时将用户指针设置为我拥有的用户对象。这会向目标用户发送推送通知。
var queryIos = new Parse.Query(Parse.Installation);
queryIos.equalTo('deviceType', 'ios');
queryIos.equalTo("User", user);
根据 Parse Docs,您正在尝试查询不支持它的数据类型。
你可以在这个 link.
中看到我的猜测是您无法查询与其直接相关的用户的解析安装。
我也找到了这个,也许有用:Parse Question。它基本上是说您需要在安装中创建一个指向特定用户的指针,然后您可以使用 "advanced targeting" 向与该用户相关的每个设备发送推送通知。
希望这里的内容对您有所帮助。
祝你好运。