我目前正在使用back4app作为我的解析主机。
使用Parse.Cloud.afterSave时,我已将推送通知正确发送到所需的设备。因此,我可以排除服务器设置问题。
我还希望检测何时删除行,并且我相信我可以通过使用Parse.Cloud.beforeDelete函数来执行此操作。
我的Parse.Cloud.beforeDelete函数如下所示
Parse.Cloud.beforeDelete("CallSession", function(request, response) {
query = new Parse.Query("CallSession");
query.equalTo("callerID", request.object.get('callerID'));
var recieverID = request.object.get('receiverID');
var sessionID = request.object.get('sessionID');
var subscriberToken = request.object.get('subscriberToken');
var publisherToken = request.object.get('publisherToken');
var callerTitle = request.object.get('callerTitle');
var callerImageURL = request.object.get('callerImageURL');
var isVideoCall = request.object.get('isVideo');
var pushID = request.object.get('pushID');
var callerID = request.object.get('callerID');
var callerObjectID = request.object.get('callerObjectId');
var publicFigureObjectID = request.object.get('publicFigureObjectId');
Parse.Push.send({
where: query, // Set our Installation query
data: {
"content-available" : 1,
"sessionID" : sessionID,
"subscriberToken" : subscriberToken,
"publisherToken" : publisherToken,
"callerTitle" : callerTitle,
"callerID" : callerID,
"callerObjectId" : callerObjectID,
"publicFigureObjectId" : publicFigureObjectID,
"callerImageURL" : callerImageURL,
"isVideo" : isVideoCall,
"pushID" : "endCall"
}
},{success: function() {
return response.success('endcall Sent OK');
},
error: function(error) {
console.log('Push AfterSave Error = ' + error);
return response.success(error);
},
useMasterKey: true
});
});
服务器日志显示正在触发beforeDelete,但推送未发送到设备。
有人知道我上面的云功能有什么问题吗?
提前致谢
Thomas Richardson
答案 0 :(得分:1)
我可以检查您在Parse.Push.send()中插入的数据量是否超过了Parse Server基本设置中的预设值。您可以查看他们的Documentation:
如果要发送的不仅仅是消息,还可以在数据字典中设置其他字段。有些保留字段具有特殊含义。
这可以改进并且可以添加特定需求,但是,由于您可以查看文档,因此您需要配置应用程序以获取这些设置并处理Cloud Code可以执行的操作。
您可能需要考虑的另一件事是通过调试查询查询结果是否与您希望在后续代码行中使用的内容匹配(添加一些显示查询响应内容的日志应该足够)。