我試圖在解析雲服務中實現一次PUSH通知訂閱。這裏是我的模型:Parse.Push.send成功可能稱爲太快
Installation.user
- 指針User
User
-team
(String
)Subscription
-email
(String
),status
(String
),user
(指針User
)
作爲一個用戶,我可以說 - 發送PUSH通知(s),t o我所有的設備,當用戶email
成爲status
,並且此用戶位於我的team
。用戶可以有很多訂閱。用戶可以手動取消訂閱(通過OS X,iOS,Android,...應用程序)或自動取消訂閱 - 當用戶收到PUSH通知時,應該自動取消訂閱。他可以再次訂閱,沒問題,但自動取消是必須的。這些訂閱是基於用戶的,用戶可以在設備上看到它們。
我寫了Parse Cloud函數,它由兩部分組成。
發送PUSH
Parse.Push.send({
where : query,
data : pushData
},
{ success: function() {
response.success('OK');
}, error: function(err) {
console.log(err);
response.error({ error: err });
}});
這並不工作。我的query
作品和PUSH收到。
刪除訂閱
deleteSubscriptionQuery.find({
success: function(objects) {
Parse.Object.destroyAll(objects, {
success: function() {
response.success('OK');
},
error: function(err) {
console.log(err);
response.error(err);
}
});
},
error: function(err) {
console.log(err);
response.error(err);
},
});
這並不工作。我的deleteSubscriptionQuery
正常工作並刪除了正確的訂閱。
結合在一起
Parse.Push.send({
where : query,
data : pushData
},
{ success: function() {
deleteSubscriptionQuery.find({
success: function(objects) {
Parse.Object.destroyAll(objects, {
success: function() {
response.success('OK');
},
error: function(err) {
console.log(err);
response.error(err);
}
});
},
error: function(err) {
console.log(err);
response.error(err);
},
});
}, error: function(err) {
console.log(err);
response.error({ error: err });
}});
這並不工作,併成功報道。看來問題在於Parse.Push.send
,即。 success
被稱爲太快。我認爲Parse.Push.send
並不真的發送通知,但只是安排它們,success
在成功的時間表上被調用。如果是這樣,應該更名爲Parse.Push.schedule
。此外,我認爲他們被安排與我的查詢(查詢保存,沒有真正執行),因此,我懷疑這個解決方案並不因爲工作:
Parse.Push.send
- 節省了我的query
,並呼籲success
,Subscription
對象在success
刪除,- 解析開始處理我與保存
query
推動,執行query
,它返回零個對象,因爲我已經在Parse.Push.send
success
刪除Subscription
對象。
對不起,對嗎?有誰知道解析內部?如果我是對的,你建議我應該怎麼做來實現基於自定義查詢的一次PUSH通知?
我懷疑你是對的,API允許你指定一個發送日期,所以自然是異步的。考慮更改查詢,以便首先獲取所有安裝,然後進行查詢以匹配來自用戶數組的安裝用戶。 – Wain
我也在想這件事,但對我來說似乎並不合適。我的意思是,Parse可以在內部更有效地執行它(如果它立即執行查詢)比我更有效。但這可能是不必要的恐懼。 – robertvojta