1. SDK 버전 1.0.16이상 사용

가이드: Flex SDK 레퍼런스

참고: GitHub - FlexApp Android

kr.co.flexapp.andr:flex-lib:1.0.16

2. 커스텀 프래그먼트 선언

FlexFragment를 상속하는 커스텀 프래그먼트(Custom Fragment) 를 선언하세요.

import kr.co.ksystem.companity.FlexFragment;
import kr.co.ksystem.companity.dto.CustomAction;

public class MyFragment extends FlexFragment {
    @Override
    protected void onCustomAction(CustomAction customAction, PassResultToWeb passResultToWeb) {
        //onCustomAction() 콜백은 웹뷰 컨텍스트에서 받은 커스텀 액션을 처리하는 데 사용해야 합니다.
        //받은 customAction?.action 및 customAction?.param에 따라 처리합니다.
        //액션의 결과를 passResultToWeb?.onResult(errStr, resultStr)로 전달합니다.
    }
}

3. Activity에서 커스텀 프래그먼트 생성

알림 Intent의 linkParamappId(fAppID)를 커스텀 프래그먼트로 전달합니다.

Activity는 반드시 AppCompatActivity를 상속하고,FlexFragment.onWebViewBackPressed 인터페이스를 구현해야 합니다. 이렇게 하면 웹뷰에서의 뒤로가기 동작을 액티비티로 전달할 수 있습니다.

또한, onDestroy(), onStop(), onPause() 콜백 내에서 반드시 아래 메서드를 호출해 주세요:

CookieManager.getInstance().flush();

4. 푸시 알림용 커스텀 Application 클래스 생성

Application 클래스를 아래와 같이 확장하여 오버라이드 해주세요.

import android.app.Application;
import android.content.Context;

import com.google.firebase.messaging.RemoteMessage;

import kr.co.ksystem.companity.utils.PushNotificationConfig;
import kr.co.ksystem.companity.utils.PushNotificationHandler;

public class MyApplication extends Application implements PushNotificationHandler {

    @Override
    public void onCreate() {
        super.onCreate();
         /*
					PushNotificationHandler는 푸시 알림 설정을 처리하는 데 사용됩니다.  
					이 클래스는 앱이 포그라운드(화면에 활성화된 상태)일 때 수신되는 RemoteMessage에 대해서만 동작합니다.  
					앱이 백그라운드에 있을 경우에는 운영체제가 자동으로 푸시 알림을 처리하고,  
					AndroidManifest에 설정된 액티비티를 열어 앱을 실행합니다.
					*/
        PushNotificationConfig.setPushNotificationHandler(this);
    }

    @Override
    public boolean handleMessage(Context context, RemoteMessage remoteMessage) {
       // true를 반환하면 앱 측 코드가 RemoteMessage를 처리했음을 의미하며,  
// 이 경우 SDK는 별도로 알림을 생성하지 않습니다.  
// false를 반환하면 앱 측 코드가 RemoteMessage를 처리하지 않았음을 의미하며,  
// 이 경우 SDK가 알림 표시를 처리합니다.
        return false;
    }

    @Override
    public Class<?> getTargetActivity(RemoteMessage remoteMessage) {
// handleMessage()에서 false를 반환하면, SDK는 알림 클릭 시 실행할 액티비티 클래스를 요청합니다.  
// 이 클래스가 제공되지 않으면, SDK는 기본적으로 SDK에 정의된 MainActivity를 실행 액티비티로 설정합니다.
        return  MainActivity.class;
    }
}

5. SDK의 MainActivity를 교체합니다.