在Quickblox GCM中,当我尝试通过推送向某个用户ID发送消息时,我也会在发送者的设备上收到通知。我不确定为什么,它是开发模式的常态吗?
QBEvent event = new QBEvent();
event.setUserId(sendToUserId);
event.setType(QBEventType.ONE_SHOT);
event.setEnvironment(QBEnvironment.DEVELOPMENT);
event.setNotificationType(QBNotificationType.PUSH);
event.setPushType(QBPushType.GCM);
HashMap<String, String> data = new HashMap<String, String>();
data.put("data.message", "Message from John");
data.put("data.type", "Notify");
data.put("ParentId",dialogId.toString());
event.setMessage(data);
QBMessages.createEvent(event, new QBEntityCallbackImpl<QBEvent>() {
@Override
public void onSuccess(QBEvent qbEvent, Bundle args) {
System.out.println("GCM Message Sent inside event " );
}
@Override
public void onError(List<String> errors) {
System.out.println("GCM Message ERROR inside event ");
}
});
以上代码确实发送了GCM,但是发送给两个设备。 sendToUserId以及发件人的设备。
我做错了吗?
答案 0 :(得分:1)
实际上,您不需要设置 user_id 字段 - 它来自服务器的响应并包含发件人的ID
// recipients
StringifyArrayList<Integer> userIds = new StringifyArrayList<Integer>();
userIds.add(53779);
userIds.add(960);
QBEvent event = new QBEvent();
event.setUserIds(userIds);
因此,它应该是 userIds ,而不是userId