我在两天前集成了解析推送通知,它工作得很完美。今天我做了一些更多的测试,并且我有很大的滞后,例如解析通知在30分钟后发出,而不是在前几天达到5秒。
另外我有4个设备,我收到11个“推送已发送”而不是4个。 经过一段时间的测试后,它开始正常工作,只有4次“推送发送”,最多一分钟而不是30次。
此外,我在我的开发者设备上获得5次相同的推送,我在其他开发设备上经常安装和卸载应用程序4次,因此它总计达到幻数11。
Parse有滞后的已知问题吗?我需要最多一分钟的回复。我认为这是可靠的服务。这是暂时的情况还是这是正常的?
答案 0 :(得分:0)
每次卸载并安装应用程序时,都会获得一个新的安装对象。不幸的是,旧的安装对象永远不会消失。您需要做的是为设备使用一些唯一标识符,如果存在则只更新安装。
例如,假设您尝试在Android上执行此操作。
在您的应用中,您可以获取设备的ANDROID_ID
并将其保存到安装:`
ParseInstallation.getCurrentInstallation().put("uniqueId",
Settings.Secure.getString(getApplicationContext().getContentResolver(),
Settings.Secure.ANDROID_ID));
然后,您可以拥有每次保存新安装时触发的云功能:
Parse.Cloud.beforeSave(Parse.Installation, function(request, response) {
Parse.Cloud.useMasterKey();
var query = new Parse.Query(Parse.Installation);
query.equalTo("uniqueId", request.object.get("uniqueId"));
query.first().then(function(duplicate) {
if (typeof duplicate === "undefined") {
console.log("Duplicate does not exist,New installation");
response.success();
} else {
console.log("Duplicate exist..Trying to delete " + duplicate.id);
duplicate.destroy().then(function(duplicate) {
console.log("Successfully deleted duplicate");
response.success();
}, function() {
console.log(error.code + " " + error.message);
response.success();
});
}
}, function(error) {
console.warn(error.code + error.message);
response.success();
});
})
P.S。我已经有很长一段时间没有这个功能,不记得我从哪里得到它,但我自己没有写它。