addJavascriptInterface선언 시 name 값을 BlpLauncher로 설정해야 합니다.
binding.webViewLauncher.apply {
// JavascriptInterface 추가
addJavascriptInterface(
ExampleWebAppInterface(this@LauncherActivity),
"BlpLauncher"
)
}
ExampleWebAppInterface 클래스 내부에 아래 케이스 function들을 선언합니다.
Interface function
Description
closeLauncher()
런처의 Back 버튼 UI 클릭 시 (뒤로가기 처리)
launcherLoaded()
런처의 로드가 완료된 후 추가적인 처리 필요 시 사용
timerMissionComplete()
타이머 미션 완료 후 추가적인 처리 필요 시 사용
giftReceived()
육성완료 후 추가적인 처리 필요 시 사용
// 블리피 Launcher Web <-> App 인터페이스 규격
class ExampleWebAppInterface(private val mContext: Context) {
@JavascriptInterface
fun closeLauncher() {
// 런처 뒤로가기 > 런처 종료
(mContext as Activity).finish()
}
@JavascriptInterface
fun launcherLoaded() {
// 런처의 로드가 완료된 후 추가적인 처리 필요 시 사용
}
@JavascriptInterface
fun timerMissionComplete() {
// 타이머 미션 완료 후 추가적인 처리 필요 시 사용
}
@JavascriptInterface
fun giftReceived() {
// 육성완료 후 추가적인 처리 필요 시 사용
}
}
2. WebView 기본 설정 추가
런처가 WebView 내에서 정상적인 동작을 하려면 몇가지 기본 설정이 필요합니다.
WebView에 로드한 런처 자바스크립트 코드가 정상적으로 허용되도록 javaScriptEnabled 값을 true 로 설정해주세요.
런처에서는 Storage 영역을 사용하기에 domStorageEnabled 값을 true 로 설정해주세요.
binding.webViewLauncher.settings.apply {
javaScriptEnabled = true // 자바 스크립트 허용
domStorageEnabled = true // storage enabled (스토리지 사용하여 dom 가져올 수 있도록 함)
}
3. WebView URL 로드
Activity가 실행되었을 때 onCreate() 안에서 런처 호출 URL 을 WebView에 로드합니다.