TransWikia.com

Como abrir a MainActivity ao receber uma Push Notification pelo OneSignal?

Stack Overflow em Português Asked by joao_coelho on January 28, 2021

Bom dia comunidade, primeiro queria agradecer o espaço e pedir ajuda de vocês com o seguinte problema:

Tenho uma função de uma classe que é chamada toda vez que uma notificação é recebida que é a CordovaNotificationReceivedHandler e ela é instanciada pelo init do OneSignal conforme o código abaixo.

OneSignal.init(this.cordova.getActivity(),
              googleProjectNumber,
              appId,
              new CordovaNotificationOpenedHandler(notifOpenedCallbackContext),
              new CordovaNotificationReceivedHandler(notifReceivedCallbackContext)

      );

Tentando fazer com que meu aplicativo seja reordenado e seja exibido, mesmo que o usuário esteja em outro aplicativo, eu fiz as seguintes modificações:

OneSignal.init(this.cordova.getActivity(),
              googleProjectNumber,
              appId,
              new CordovaNotificationOpenedHandler(notifOpenedCallbackContext),
              new CordovaNotificationReceivedHandler(this.cordova.getActivity(), notifReceivedCallbackContext)

      );

No corpo da função que é chamada ao receber uma push eu adicionei o seguinte código:

Intent it = new Intent("intent.my.action");
      it.setComponent(new ComponentName(contextActivy.getPackageName(), MainActivity.class.getName()));
      it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      contextActivy.getApplicationContext().startActivity(it);
      this.handleActivityLifecycleHandler();

Como a classe ficou após a modificação:

private class CordovaNotificationReceivedHandler implements NotificationReceivedHandler {

    private CallbackContext jsNotificationReceivedCallBack;
    private Context contextActivy;

    public CordovaNotificationReceivedHandler(Context contextActivy, CallbackContext inCallbackContext) {
      jsNotificationReceivedCallBack = inCallbackContext;
      this.contextActivy = contextActivy;
    }

    @Override
    public void notificationReceived(OSNotification notification) {
      Log.w("Chegou","Aqui");

      Intent it = new Intent("intent.my.action");
      it.setComponent(new ComponentName(contextActivy.getPackageName(), MainActivity.class.getName()));
      it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      contextActivy.getApplicationContext().startActivity(it);
      this.handleActivityLifecycleHandler();

      try {
        CallbackHelper.callbackSuccess(jsNotificationReceivedCallBack, new JSONObject(notification.stringify()));
      }
      catch (Throwable t) {
        t.printStackTrace();
      }
    }
  }

O problema é que o aplicativo não é reordenado para ser exibido ou mostrado ou aberto.
Importante lembrar que eu estou assumindo que o aplicativo sempre estará aberto.

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP