我正在编写一个广泛使用推送通知的应用,因此推送通知的可靠性对于应用来说非常重要。
我通过解析云代码函数发送推送通知
Parse.Cloud.define("sendPush", function(request, response) {
var query = new Parse.Query(Parse.Installation);
query.equalTo('userObjectId', request.params.toUser);
query.exists("deviceToken");
Parse.Push.send({
where: query,
data: {
"alert": request.params.alert,
"sound": "default",
"type": request.params.type,
"status": request.params.status,
"fromUserId": request.params.fromUserId,
"fromUserName": request.params.fromUserName,
"messageId": request.params.messageId
}
}, { success: function() {
response.success("success");
}, error: function(err) {
response.error("error");
}
});
});
如果我的iPhone在线,此功能可以提供更好的功能。但是,如果我在我的iPhone上关闭互联网30秒并发送推送,当我打开互联网时,这个推送不会发送。因此,我尝试在我的解析云代码功能中设置到期日期,以提高设备不在线时提供推送的可靠性。
// Expiration_interval added
Parse.Cloud.define("sendPush", function(request, response) {
var query = new Parse.Query(Parse.Installation);
query.equalTo('userObjectId', request.params.toUser);
query.exists("deviceToken");
Parse.Push.send({
expiration_interval: 24 * 60 * 60,
where: query,
data: {
"alert": request.params.alert,
"sound": "default",
"type": request.params.type,
"status": request.params.status,
"fromUserId": request.params.fromUserId,
"fromUserName": request.params.fromUserName,
"messageId": request.params.messageId
}
}, { success: function() {
response.success("success");
}, error: function(err) {
response.error("error");
}
});
});
但即使我关闭互联网只持续30秒,它仍然无法正常工作。
感谢您的任何帮助/想法。
答案 0 :(得分:0)
这是与PUSH系统的Apple服务质量指南相关的工件。
在实践中,这意味着有时会推迟推送。如果它们对您的设计至关重要,我建议创建一个推送数据库表,该表将传递消息或数据,并让应用程序检查每个负载是否有新消息。
实际上,这意味着推送不会总是引起用户的注意,但至少会传递所有数据。
您可以在此处的parse.com帮助主题中了解更多信息:https://www.parse.com/questions/sending-push-notifications-quickly-causes-some-notifications-to-be-missed