好日子,推送通知條件
我使用的解析推送通知,以下是我的苦衷: 總之,我想「合併」這兩個條件:
query.whereEqualTo("Gender", userLookingGender);
pushQuery.whereEqualTo("the gender column of the ParseQuery", the user gender of the ParseQuery column);
在其他單詞,我想向屬於該性別的用戶發送消息。在稱爲「用戶」的分析查詢中找到性別列和性別。
更新: userLookingGender如下:
String userLookingGender = ParseUser.getCurrentUser().getString(
"Looking_Gender");
如果您需要任何澄清,讓我知道。
更新2: 我使用一個條件,性別,使更容易理解。現在想象一下,如果我有多重條件,並試圖發送推送消息,只有符合下面所有條件的接收者才能發送推送消息,並且在按鈕單擊它時會將他們帶到特定的活動頁面。
ParseQuery<ParseObject> query = ParseQuery.getQuery("User");
query.whereNotEqualTo("objectId", ParseUser.getCurrentUser()
.getObjectId());
// users with Gender = currentUser.Looking_Gender
query.whereEqualTo("Gender", userLookingGender);
// users with Looking_Gender = currentUser.Gender
query.whereEqualTo("Looking_Gender", userGender);
query.setLimit(1) ;
ParseGeoPoint point = ParseUser.getCurrentUser().getParseGeoPoint("location");
query.whereWithinKilometers("location", point, mMax_Distance.doubleValue());
query.whereEqualTo("ActivityName", activityName);
query.whereGreaterThanOrEqualTo("UserAge", minimumAge);
query.whereLessThanOrEqualTo("UserAge", maximumAge);
更新3:
的Android代碼
ParseCloud.callFunctionInBackground("sendPushToNearbyAndMatching", new HashMap<String, Object>(), new FunctionCallback<String>() {
public void done(String result, ParseException e) {
if (e == null) {
// success
}
}
});
解析雲JavaScript代碼(在雲/ main.js找到) 在這種情況下僱主列是用戶
// Use Parse.Cloud.define to define as many cloud functions as you want.
// For example:
Parse.Cloud.define("hello", function(request, response) {
response.success("Hello world!");
});
Parse.Cloud.define("sendPushToNearbyAndMatching", function(request, response) {
Parse.Cloud.useMasterKey();
// the authenticated user on the device calling this function
var user = request.user;
// the complex query matching users
var query = new Parse.Query(Parse.User);
query.whereNotEqualTo("objectId", user.id);
// users with Gender = currentUser.Looking_Gender
query.equalTo("Gender", user.get("Gender"));
// users with Looking_Gender = currentUser.Gender
query.equalTo("Looking_Gender", user.get("Looking_Gender"));
query.equalTo("ActivityName", user.get("ActivityName"));
query.greaterThanOrEqualTo("UserAge", user.get("Minimum_Age"));
query.lessThanOrEqualTo("UserAge", user.get("Maximum_Age"));
query.limit(1);
query.each(function(user) {
// sendPushNotification is added in next code section
return sendPushNotification(user);
}).then(function() {
response.success("success!");
}, function(err) {
response.error(err);
});
});
var sendPushNotification = function(user) {
var query = new Parse.Query(Parse.Installation);
query.equalTo('users', user);
return Parse.Push.send({
where : query, // send to installations matching query
expiration_interval : 600, // optional - expires after 10 minutes
data : {
alert: "App says hello!",
}
})
}
如果將用戶的「Gender」和「Looking_Gender」保存到「Installation」對象,聽起來會更容易。然後,您可以使用單個查詢定位安裝以進行推送。或者我誤解了,必須承認這個問題對我來說有點困惑。 – cYrixmorten 2014-10-04 19:41:11
我看到你在哪裏,但我不想創建不必要的請求。從某種意義上說,如果用戶的性別已經存儲在「用戶」表下的解析中,那麼僅僅從這裏獲取信息反對通過安裝創建一個名爲性別的新列將不會更好。它在那裏存儲的原因是因爲我不僅僅使用Push通知,在許多活動中我都參考了parsequery。 – John 2014-10-04 20:01:43
澄清,這兩個值是否已經保存在用戶對象上? – cYrixmorten 2014-10-04 20:08:59