我可以通过用户ID获取PFInstallation对象,以便我可以为该安装订阅频道。 [PFInstallation currentInstallation]仅给出该设备的istallation。我想按用户ID安装其他设备。
答案 0 :(得分:2)
是的,我所做的是我将用户订阅到他自己的频道,前面有user_
。频道不能以数字开头,而某些objectId也是如此。
currentInstallation.channels = ["global", "user_" + PFUser.currentUser().objectId]
然后,您可以通过将推送通知发送到频道user_objectId
,将推送通知发送给用户。
在这种情况下,用户订阅了文档。提问者将订阅的频道存储到Installation对象。这就是我的建议。
创建一个名为Subscriptions
每行应包含:user: UserPointer
和document: DocumentPointer
当用户订阅文档时,您需要为该用户/文档组合创建一个新行。
然后,当发送推送而不是向documentId频道发送推送时,您将其发送给订阅该文档的所有用户。代码如下。
//Get all the users that are subscribed to docId
var userQuery = new Parse.Query("Subscriptions");
userQuery.equalTo("document", docId);
userQuery.limit(1000);
userQuery.find({
success: function(results) {
//results contains at most 1000 subscribed users
var userIdChannels = [];
//Extract out the userIds from results
for(var i = 0; i < userIds.length; ++i) {
userIdChannels.push("user_" + results[i].get("user").id);
}
//Now send a push notification to all the subscribed users
var pushQuery = new Parse.Query(Parse.Installation);
pushQuery.equalTo('channels', userIdChannels);
Parse.Push.send({
where: pushQuery, // Set our Installation query
data: {
alert: "Document updated"
}
},{
success: function() {
// Push was successful
},
error: function(error) {
throw "Error sending push";
}
});
}, error: function(error) {
throw "Error getting subscribed users";
}
});