Search code examples
androidquickblox

Quickblox - GCM, is sent to all devices?


In Quickblox GCM, when i try to send a message via push to a certain user id, i receive the notification on the sender's device too. I am not sure why, is it the norm in development mode?

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 ");
                }
            });

The above code does send a GCM, but to both devices. The sendToUserId as well as the sender's device.

Am i doing anything wrong?


Solution

  • Actually you don't need to set the user_id field - it comes in a response from server and contains the ID of a sender

    Look at Push code sample http://quickblox.com/developers/SimpleSample-messages_users-android#Send_Push_Notifications_from_Application

    // recipients
    StringifyArrayList<Integer> userIds = new StringifyArrayList<Integer>();
    userIds.add(53779);
    userIds.add(960);
    
    QBEvent event = new QBEvent();
    event.setUserIds(userIds);
    

    So, it should be userIds, not userId