lykan
lykan

Reputation: 1

Not receiving push notification, quickblox, android

So I'm trying to implement push notifications using GCM and quickBlox, so i'm able to subscribe for push notifications using quickblox and while the message is being sent, no notification is received.

I basically followed the guide here: http://quickblox.com/developers/SimpleSample-messages_users-android#Send_Push_Notifications_from_Application

Here's My code

public class MainActivity extends AppCompatActivity {

static final String APP_ID = "45535";
static final String AUTH_KEY = "L-kz28SrxuSrn23";
static final String AUTH_SECRET = "zJX63sgj9Nm3qMB";
static final String ACCOUNT_KEY = "sor71FWvtVnx7d9JdTyd";

private GoogleCloudMessaging googleCloudMessaging;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);



    QBSettings.getInstance().init(getApplicationContext(), APP_ID, AUTH_KEY, AUTH_SECRET);
    QBSettings.getInstance().setAccountKey(ACCOUNT_KEY);

    if (checkPlayServices()) {
        // Start IntentService to register this application with GCM.
        Intent intent = new Intent(this, RegistrationIntentService.class);
        startService(intent);
    }


    // Create quickblox session with user
    QBAuth.createSession("laddu", "chowmein", new QBEntityCallback<QBSession>() {
        @Override
        public void onSuccess(QBSession session, Bundle params) {
            //request Registration ID
            String registrationId = "16441570";

            // Subscribe to Push Notifications
            subscribeToPushNotifications(registrationId);

        }

        @Override
        public void onError(QBResponseException errors) {

        }
    });


    EditText text;
    text = (EditText) findViewById(R.id.editText);

    Button send;
    send = (Button) findViewById(R.id.button);
    send.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            StringifyArrayList<Integer> userIds = new StringifyArrayList<Integer>();
            //add different user ID
            userIds.add(16335930);
            userIds.add(16441570);

            QBEvent event = new QBEvent();
            event.setUserIds(userIds);
            event.setEnvironment(QBEnvironment.DEVELOPMENT);
            event.setNotificationType(QBNotificationType.PUSH);
            event.setPushType(QBPushType.GCM);

            //HashMap<String, String> data = new HashMap<String, String>();
            //data.put("data.message", "Hello");
            //data.put("data.type", "welcome message");

            event.setMessage("Hello");

            QBPushNotifications.createEvent(event, new QBEntityCallback<QBEvent>() {
                @Override
                public void onSuccess(QBEvent qbEvent, Bundle args) {
                    // sent
                }

                @Override
                public void onError(QBResponseException errors) {

                }
            });
        }
    });
}

/**
 * Check the device to make sure it has the Google Play Services APK. If
 * it doesn't, display a dialog that allows users to download the APK from
 * the Google Play Store or enable it in the device's system settings.
 */
private boolean checkPlayServices() {
    GoogleApiAvailability apiAvailability = GoogleApiAvailability.getInstance();
    int resultCode = apiAvailability.isGooglePlayServicesAvailable(this);
    if (resultCode != ConnectionResult.SUCCESS) {
        if (apiAvailability.isUserResolvableError(resultCode)) {
            //apiAvailability.getErrorDialog(this, resultCode, PLAY_SERVICES_RESOLUTION_REQUEST)
                    //.show();
        } else {
            //Log.i(TAG, "This device is not supported.");
            finish();
        }
        return false;
    }
    return true;
}


public void subscribeToPushNotifications(String registrationID) {
    QBSubscription subscription = new QBSubscription(QBNotificationChannel.GCM);
    subscription.setEnvironment(QBEnvironment.DEVELOPMENT);
    //
    String deviceId;
    final TelephonyManager mTelephony = (TelephonyManager) getSystemService(
            Context.TELEPHONY_SERVICE);
    if (mTelephony.getDeviceId() != null) {
        deviceId = mTelephony.getDeviceId(); //*** use for mobiles
    } else {
        deviceId = mTelephony.getDeviceId();
        //deviceId = Settings.Secure.getString(activity.getContentResolver(),
           //     Settings.Secure.ANDROID_ID); //*** use for tablets
    }
    subscription.setDeviceUdid(deviceId);
    Toast.makeText(MainActivity.this, deviceId, Toast.LENGTH_SHORT).show();
    //
    subscription.setRegistrationID(registrationID);
    //
    QBPushNotifications.createSubscription(subscription, new QBEntityCallback<ArrayList<QBSubscription>>() {

        @Override
        public void onSuccess(ArrayList<QBSubscription> subscriptions, Bundle args) {

        }

        @Override
        public void onError(QBResponseException error) {

        }
    });
}

}

public class MyGcmListenerService extends GcmListenerService {

private static final String TAG = "MyGcmListenerService";

@Override
public void onMessageReceived(String from, Bundle data) {
    String message = data.toString();
    Log.d(TAG, "From: " + from);
    Log.d(TAG, "Message: " + message);

    if (from.startsWith("/topics/")) {
        // message received from some topic.
    } else {
        // normal downstream message.
    }

    sendNotification(message);
    // [END_EXCLUDE]
}

private void sendNotification(String message) {
    Intent intent = new Intent(this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
            PendingIntent.FLAG_ONE_SHOT);

    Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
            .setContentTitle("GCM Message")
            .setContentText(message)
            .setAutoCancel(true)
            .setSound(defaultSoundUri)
            .setContentIntent(pendingIntent);

    NotificationManager notificationManager =
            (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
}

}

Upvotes: 0

Views: 713

Answers (1)

Romario
Romario

Reputation: 1

You can check the next:

  1. Check push certificate : Admin panel ->Push Notification ->Settings -> APNS, GCM etc.
  2. Check subscriptions: Admin panel -> Push Notifications - > Subscriptions. Also you can check subscription for user: Admin panel -> Users - > "your" user
  3. Send push from Admin Panel - > Push notifications - > Send http://quickblox.com/developers/SimpleSample-messages_users-android#Send_Push_Notifications_from_Admin_panel

Upvotes: 0

Related Questions