使用 Facebook ID 向特定用户发送 Parse 推送通知无法在 Android 上运行
Posted
技术标签:
【中文标题】使用 Facebook ID 向特定用户发送 Parse 推送通知无法在 Android 上运行【英文标题】:Sending Parse push notifications to specific users using Facebook ID not working from Android 【发布时间】:2014-03-28 07:01:15 【问题描述】:我正在尝试向我的 Facebook 好友列表发送推送通知。我已经为每个 Parse 用户存储了 Facebook ID,并将该用户保存在 Parse Installation 中。 android 实现存在问题,因为从 Android 设备发送通知时不会将通知发送给所有朋友,但从 ios 设备发送通知时,所有朋友都会收到通知。下面是我从 iOS 和 Android 发送通知的代码。
Android 推送的 Targeting 字段如下:
用户高级运算符 ($inQuery "where"=>"fbid"=>"$in"=>[“id1”, “id2”, “id3”, “id4”], “className "=>"_User") deviceType 是“ios”、“android”、“winphone”或“js”中的任何一个
而 iOS 推送的 Targeting 字段如下:
用户高级运算符 ($inQuery "className"=>"_User", "where"=>"fbid"=>"$in"=>["id1", "id2", "id3", "id4"]) deviceType 是“ios”、“android”、“winphone”或“js”中的任何一个
然而,在 Android 的情况下,通知仅发送给 1 个用户而不是 4 个(基于推送通知中的“订阅者”字段)。而在 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】:不允许使用 ClientKey 的应用查询安装类。
我建议使用独特的渠道,使用渠道您可以针对特定用户推送消息。
【讨论】:
以上是关于使用 Facebook ID 向特定用户发送 Parse 推送通知无法在 Android 上运行的主要内容,如果未能解决你的问题,请参考以下文章
Facebook iOS SDK - 向 facebook 用户发送应用请求