使用无法在Android上运行的Facebook ID向特定用户发送解析推送通知

时间:2014-03-28 07:01:16

标签: android notifications push-notification parse-platform android-notifications

我试图将推送通知发送到我的Facebook好友列表中。我已经为每个Parse用户存储了Facebook ID,并且还将该用户保存在Parse安装中。 Android实施存在问题,因为当从Android设备发送通知时,通知不会发送给所有朋友,但是当从iOS设备发送通知时,所有朋友都会收到通知。以下是我从iOS和Android发送通知的代码。

Android推送的定位字段如下:

用户高级操作员($ inQuery {"其中" => {" fbid" => {" $ in" => [“id1” ,“id2”,“id3”,“id4”]}}," className" =>" _User"})deviceType是" ios"中的任何一个, " android"," winphone",或" js"

虽然iOS推送的定位字段如下:

用户高级操作员($ inQuery {" className" =>" _用户","其中" => {" fbid" => {" $ in" => [" id1"," id2"," id3"," id4&# 34;]}}}})deviceType是" ios"," android"," winphone"或" js"

然而,通知仅发送给1个用户而不是4个用户(基于推送通知中的' Subscribers'字段)。在iOS的情况下,其ID在列表中的所有朋友都会收到通知。

任何帮助将不胜感激。

iOS代码:

NSMutableArray *friendsArray;
PFQuery *friendQuery = [PFUser query];
[friendQuery whereKey:[NSString stringWithUTF8String:@"fbID"] containedIn:friendsArray];

PFQuery *query = [PFInstallation query];
[query whereKey:@"user" matchesQuery:friendQuery];

PFPush *push = [[PFPush alloc] init];
[push setQuery:query];

[push setMessage:[NSString stringWithFormat:@"%@ sent you this test message!", [NSString stringWithCString:"TestUser" encoding:NSUTF8StringEncoding]]];
[push sendPushInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
    if (!error) {
        NSLog(@"Push sent to users successfully");
    }
    else {
        NSLog(@"Error while fetching sending push from Parse: %@ %@", error, [error userInfo]);
    }
}];

Android代码:

List<String> friends;
ParseQuery<ParseUser> friendQuery = ParseUser.getQuery();
friendQuery.whereContainedIn("fbID", friends);

ParseQuery<ParseInstallation> query = ParseInstallation.getQuery();
query.whereMatchesQuery("user", friendQuery);

ParsePush push = new ParsePush();
push.setQuery(query);
push.setMessage(userFullName + " sent you this test message from Android!");
push.sendInBackground();

编辑:

我发现了这个问题。由于ParseInstallation查询,我得到此异常。

com.parse.ParseException:客户端不允许对安装集合执行查找操作。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

使用ClientKey的应用程序不允许查询安装类。

我建议使用独特的渠道,使用可以针对特定用户定位推送消息的渠道。