code: public static synchronized void unsubscribe(android.content.Context context,
                                                java.lang.String channel) {
      if (channel == null) {
        return;
      }
      AVPushMessageListener.getInstance().getNotificationManager().removeDefaultPushCallback(channel);
      final java.lang.String finalChannel = channel;
      if (StringUtil.isEmpty(AVInstallation.getCurrentInstallation().getObjectId())) {
        AVInstallation.getCurrentInstallation().saveInBackground().subscribe(new Observer<AVObject>() {
          @Override
          public void onSubscribe(Disposable d) {
  
          }
  
          @Override
          public void onNext(AVObject avObject) {
            AVInstallation.getCurrentInstallation().removeAll("channels", Arrays.asList(finalChannel));
            _installationSaveHandler.sendMessage(Message.obtain());
          }
  
          @Override
          public void onError(Throwable e) {
            LOGGER.w(e);
          }
  
          @Override
          public void onComplete() {
  
          }
        });
      } else {
        AVInstallation.getCurrentInstallation().removeAll("channels", Arrays.asList(finalChannel));
        _installationSaveHandler.sendMessage(Message.obtain());
      }
    }
docs: Cancels a previous call to subscribe. If the user is not subscribed to this channel, this is a
  no-op. This call does not require internet access. It returns without blocking
  
  @param context A currently viable Context.
  @param channel The string defining the channel to unsubscribe from.