OneSignal Android NotificationOpenedHandler - start activity

后端 未结 2 1289
遇见更好的自我
遇见更好的自我 2021-01-05 01:35

Trying to migrate from Parse to OneSignal and I am stuck on how to start a new Activity after the user clicks on a push notification. My handler is working, the log shows th

2条回答
  •  慢半拍i
    慢半拍i (楼主)
    2021-01-05 02:05

    Here's how I made it work:

    public class MyApplication extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            OneSignal.startInit(this)
                    .setNotificationOpenedHandler(new MyNotificationOpenedHandler(this))
                    .init();
        }
    }
    

    The NotificationOpenedHandler custom class

    public class MyNotificationOpenedHandler implements OneSignal.NotificationOpenedHandler {
    
        private Application application;
    
        public MyNotificationOpenedHandler(Application application) {
            this.application = application;
        }
    
        @Override
        public void notificationOpened(OSNotificationOpenResult result) {
    
            // Get custom datas from notification
            JSONObject data = result.notification.payload.additionalData;
            if (data != null) {
                String myCustomData = data.optString("key", null);
            }
    
            // React to button pressed
            OSNotificationAction.ActionType actionType = result.action.type;
            if (actionType == OSNotificationAction.ActionType.ActionTaken)
                Log.i("OneSignalExample", "Button pressed with id: " + result.action.actionID);
    
            // Launch new activity using Application object
            startApp();
        }
    
        private void startApp() {
            Intent intent = new Intent(application, MyActivity.class)
                    .setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
            application.startActivity(intent);
        }
    }
    

    Don't forget to add this to your manifest:

    
       
    
    

提交回复
热议问题