스윙투앱에서 제공하는 웹뷰와 푸시전용 프로토타입의 앱을 제어할 수 있는 javascript API 입니다.
공통적으로 아래의 js 파일을 include 하여 사용하시고 아래의 API 명세를 통해서
필요한 기능을 실행하시면 됩니다.
공통 js 파일 HTML 파일에 아래의 js 파일을 포함시켜주세요
Copy < script src = "https://pcdn2.swing2app.co.kr/swing_public_src/v3/2024_10_23_001/js/swing_app_on_web.js" ></ script >
웹뷰 Javascript API 명세서
웹뷰 제어관련 Method
• 웹뷰 뒤로가기
웹뷰에서 이전 페이지로 이동 웹브라우저에서 뒤로가기 기능과 동일한 동작
Copy swingWebViewPlugin . app . webview .back ();
• 웹뷰 앞으로 가기
웹뷰에서 앞의 페이지로 이동 웹브라우저에서 앞으로가기 기능과 동일한 동작
Copy swingWebViewPlugin . app . webview .forward ();
• 웹뷰 홈으로 이동
웹뷰에서 스윙투앱에 셋팅된 홈 페이지(설정된 초기 페이지)로 이동하는 기능
Copy swingWebViewPlugin . app . webview .navigateToHome ()
• 웹뷰 캐시 초기화
웹뷰에서 캐시를 초기화 하는 Command
*js lib 2024_02_28_002 버전 부터 사용 가능
Copy swingWebViewPlugin . app . webview .clearCache ()
• 웹뷰 Navigation History 초기화
웹뷰에서 Navigation History 를 초기화하는 기능
*js lib 2024_02_28_002 버전 부터 사용 가능
Copy swingWebViewPlugin . app . webview .clearWebViewRouteHistory ()
툴바 제어관련 Method
• 툴바 활성화 설정하기
푸시전용 프로토타입에서 Toolbar 를 API 통해서 제어할 수 있습니다.
앱 실행상태에서 툴바를 숨기거나 활성화 그리고 자동 숨김 옵션까지 모두 제어할 수 있습니다.
*js lib 2024_02_28_002 버전 부터 사용 가능
Copy // toolbar 활성화 , 자동숨김 비활성화
// swingWebViewPlugin.app.webview.updateToolbar(true,false)
// toolbar 활성화 , 자동숨김 활성화
// swingWebViewPlugin.app.webview.updateToolbar(true,true)
// toolbar 비활성화 , 자동숨김 비활성화
// swingWebViewPlugin.app.webview.updateToolbar(false,false)
swingWebViewPlugin . app . webview .updateToolbar ( false , false )
어플리케이션 관련 Method
• 플랫폼 정보 가져오기
웹상에서 플랫폼 정보를 가져오기 위한 함수
Copy if ( swingWebViewPlugin . app . methods .getCurrentPlatform () == 'android' )
{
console .log ( 'android' );
}
else if ( swingWebViewPlugin . app . methods .getCurrentPlatform () == 'ios' )
{
console .log ( 'ios' );
}
else
{
console .log ( 'web browser' );
}
• 버전 및 기기정보 가져오기
앱의 버전및 기기의 H/W 그리고 S/W 정보를 가져오는 함수
Copy // android
swingWebViewPlugin . app . methods .getAppVersion ( function (value){
var appVersion = JSON .parse (value);
console .log ( 'model : ' + appVersion .model);
console .log ( 'sdk_version : ' + appVersion .sdk_version);
console .log ( 'version_release : ' + appVersion .version_release);
console .log ( 'manufacturer : ' + appVersion .manufacturer);
console .log ( 'app_version : ' + appVersion .app_version);
console .log ( 'radio_version : ' + appVersion .radio_version);
console .log ( 'package_name : ' + appVersion .package_name);
console .log ( 'uuid : ' + appVersion .uuid);
});
// ios
swingWebViewPlugin . app . methods .getAppVersion ( function (value){
var appVersion = JSON .parse (value);
console .log ( 'model : ' + appVersion .model);
console .log ( 'name : ' + appVersion .name);
console .log ( 'systemVersion : ' + appVersion .systemVersion);
console .log ( 'appVersion : ' + appVersion .appVersion);
console .log ( 'bundleVersion : ' + appVersion .bundleVersion);
console .log ( 'bundleID : ' + appVersion .bundleID);
console .log ( 'uuid : ' + appVersion .uuid);
});
• 앱 종료 기능
실행중인 앱을 종료하는 명령어
Copy swingWebViewPlugin . app . methods .doExitApp ();
• 외부 브라우저로 URL 실행하기
크롬 또는 사파리등 앱의 기본 브라우저로 특정 페이지를 열고 싶을때 아래의 함수를 이용할 수 있다.
Copy swingWebViewPlugin . app . methods .doExternalOpen ( 'https://www.swing2app.com' );
• 내장 브라우저로 URL 실행하기
안드로이드와 iOS 자체적으로 제공하는 앱 내장 브라우저를 이용해서 실행
크롬과 사파리등을 반드시 이용해야 하는 경우 아래의 코드를 통해서 앱 내부에서 크롬과 사파리를 호출 할 수 있다.
Copy swingWebViewPlugin . app . methods .openBrowser ( 'https://www.swing2app.com' );
• 현재 페이지를 공유하기
현재 웹 페이지를 공유하는 기능을 위한 아래의 코드를 실행
Copy swingWebViewPlugin . app . methods .doShareCurrentPage ();
• 지정 URL 공유하기
지정한 URL을 공유하고자 할 경우 아래와 같이 코드를 실행
Copy swingWebViewPlugin . app . methods .doShareWithUrl ( 'https://www.swing2app.com' );
• 어플리케이션의 알림 설정 상태를 확인하기
어플리케이션에서 푸시 알람 설정에 대한 상태를 확인하는 기능
푸시가 비활성화 되었을 경우 OS 자체적으로 푸시가 Off 되었을 경우와
앱 자체적인 설정으로 Off 가 되었을경우를 확인할 수 있다.
Copy swingWebViewPlugin . app . methods .isNotificationEnabled ( function (result) {
if ( result == '1' ) // 푸시를 발송 할 수 있는 상태
{
console .log ( 'push active' );
}
else if ( result == 'off_on_permission' ) // android 13 이상에서 푸시 권한이 없을 경우
{
console .log ( 'push inactive' );
}
else if ( result == 'off_on_system' ) // 시스템 설정에 의한 앱 푸시 비활성화
{
console .log ( 'push inactive' );
}
else if ( result == 'off_on_app' ) // 앱 설정에 의한 앱 푸시 비활성화
{
console .log ( 'push inactive' );
}
});
Ex:) 푸시 설정에 따라 Off 설정일 경우 활성화 권장을 위한 코드예제
Copy swingWebViewPlugin . app . methods .isNotificationEnabled ( function (result) {
if ( result == '1' ) // 푸시를 발송 할 수 있는 상태
{
console .log ( 'push active' );
}
else if ( result == 'off_on_permission' ) // android 13 이상에서 푸시 권한이 없을 경우
{
console .log ( 'push inactive' );
swingWebViewPlugin . app . permission . android .requestPermission ( 'android.permission.POST_NOTIFICATIONS' , function (status) {
if (status == 'granted' ) {
console .log ( 'Push notification permission granted' );
} else {
console .log ( 'Push notification permission denied' );
}
});
}
else if ( result == 'off_on_system' ) // 시스템 설정에 의한 앱 푸시 비활성화
{
console .log ( 'push inactive' );
swingWebViewPlugin . app . methods .goToNotificationSetting ( "system" ); // 시스템 설정 Open
}
else if ( result == 'off_on_app' ) // 앱 설정에 의한 앱 푸시 비활성화
{
console .log ( 'push inactive' );
swingWebViewPlugin . app . screen . setting .show (); // 앱 설정 Open
}
});
• 알람 설정 이동하기
어플리케이션 또는 시스템의 알람설정을 이동할 수 있는 기능
(1) 어플리케이션 자체적인 알람 설정을 할 수 있는 화면으로 이동
Copy swingWebViewPlugin . app . screen . setting .show ();
(2) 시스템(안드로이드, iOS) 자체적인 알람 설정을 할 수 있는 화면으로 이동
Copy swingWebViewPlugin . app . methods .goToNotificationSetting ( 'system' );
• 클립보드에 텍스트 저장하기
클립보드에 텍스트를 저장할 수 있는 기능
웹뷰에서는 보안상의 이슈로 window.navigator.clipboard.writeText API 가 정상동작하지 않기 때문에
스윙투앱 웹뷰에서는 아래의 API 를 이용하여 clipboard 에 저장하면 됩니다.
Copy swingWebViewPlugin . app . methods .copyToClipboard ( "copyToClipboard 텍스트 테스트" );
• 푸시메시지 수신 활성화 하기
푸시메시지 수신설정을 활성화 하기 위한 API
Copy swingWebViewPlugin . app . methods .activePush ();
• 푸시메시지 수신 비활성화 하기
푸시메시지 수신설정을 비활성화 하기 위한 API
Copy swingWebViewPlugin . app . methods .inactivePush ();
• 디바이스에 변수 저장하기
앱내에 Storage 변수 저장하기
앱내의 Storage 저장하고 싶은 데이터가 있다면 아래의 함수를 이용해서 저장할 수 있습니다.
다음 기능을 활용해서 웹 사이트 자동 로그인을 쉽게 구현할 수 있습니다.
*js lib 2023_12_20_001 버전 부터 사용 가능
Copy swingWebViewPlugin . app . methods .setVariable ( 'id' , 'test' );
• 디바이스에 저장된 변수 불러오기
앱내에 Storage 저장된 변수값 가져오기
*js lib 2023_12_20_001 버전 부터 사용 가능
Copy swingWebViewPlugin . app . methods .getVariable ( 'id' , function (value) {
console .log ( JSON .parse (value).value);
// 출력예시 : test
});
• TTS 재생하기(프리미엄 기능) - 커스터마이징 필요
텍스트를 음성으로 출력하는 TTS 기능을 활성화하는 기능
*js lib 2023_12_20_001 버전 부터 사용 가능
Copy swingWebViewPlugin . app . methods .speakOutViaTTS ( '안녕하세요' );
• 앱 첫 실행 여부 확인하기
앱이 처음실행 했는지는 확인할 수 있는 API , 앱의 첫 실행여부를 판단하는 함수
*js lib 2024_02_28_001 버전 부터 사용 가능
Copy swingWebViewPlugin . app . methods .isFirstRun ( function (value) {
if ( JSON .parse (value).result) // 앱 첫실행 될 경우
{
console .log ( '앱 첫 실행' );
}
});
앱 UI 제어관련 Method
• iOS 배경색상 설정하기
iOS 의 디바이스 노치 및 홈바 UI 로 인해 설정된 SafeArea 영역 및 메인 색상을 설정하는 옵션입니다.
색상은 hex 값으로 #을 제외하고 입력해주시면 됩니다. 해당 설정은 iOS 에서만 동작합니다.
*js lib 2024_02_28_001 버전 부터 사용 가능
Copy swingWebViewPlugin . app . ui .setIosBackColor ( '00ff00' );
• 앱 화면모드 확인하기(다크모드,라이트모드)
시스템에서 설정한 화면 모드(라이트모드,다크모드)를 확인하는 코드 입니다.
이 코드를 활용해서 사용자의 폰에 설정된 화면모드에 따라 웹페이지 컨텐츠를 변경해보세요.
*js lib 2024_07_23_001 버전 부터 사용 가능(24년 7월30일 이후 제작된 버전부터 동작)
Copy swingWebViewPlugin . app . ui .getDeviceUiStyle ( function (mode) {
if ( mode == 'light' )
{
console .log ( 'light' );
}
else if ( mode == 'dark' )
{
console .log ( 'dark' );
}
});
앱 화면 제어관련 Method
• 설정화면으로 이동하기
설정화면으로 이동하는 API Command.
툴바 또는 메뉴바를 이용하지 않고 설정화면으로 이동할 수 있습니다.
*js lib 2024_02_28_002 버전 부터 사용 가능
Copy swingWebViewPlugin . app . screen . setting .show ();
• 알림목록화면으로 이동하기
알림목록화면으로 이동하는 API Command.
툴바 또는 메뉴바를 이용하지 않고 알림목록화면으로 이동할 수 있습니다.
*js lib 2024_02_28_002 버전 부터 사용 가능
Copy swingWebViewPlugin . app . screen . notificationList .show ();
메뉴화면으로 이동하는 API Command.
툴바를 이용하지 않고 메뉴화면으로 이동할 수 있습니다.
*js lib 2024_02_28_002 버전 부터 사용 가능
Copy swingWebViewPlugin . app . screen . menu .show ();
• 북마크목록화면으로 이동하기
북마크목록화면으로 이동하는 API Command.
메뉴 또는 툴바를 이용하지 않고 북마크목록화면으로 이동할 수 있습니다.
*js lib 2024_02_28_002 버전 부터 사용 가능
Copy swingWebViewPlugin . app . screen . bookmarkList .show ();
어플리케이션 Event
앱의 Native Event 를 관리할 수 있는 명령어 입니다.
• 안드로이드 앱 Back key 웹뷰 Navigation 이벤트 추가하기
앱의 Back 버튼의 종료 이벤트를 추가할 경우 Back버튼을 인한 뒤로가기 기능이 동작하지 않습니다.
따라서 backEvent 추가할 경우 Back key 로 인해 웹뷰 Navigation Back되는 상황에서 뒤로가기 기능이
동작하지 않고 직접 구현해주셔야 합니다.
Copy swingWebViewPlugin . event .addEvent ( 'backEvent' , function () {
// 안드로이드 back event
swingWebViewPlugin . app . webview .back (); // 웹뷰 뒤로가기 예시
})
• 안드로이드 앱 Back key로 인해 종료 이벤트 추가하기
앱의 back 버튼의 종료 이벤트를 추가할 경우 back버튼을 인한 앱에서는 종료 기능이 동작하지 않습니다.
따라서 backExitEvent 추가할 경우 종료에 대한 처리를 callback 함수내에서 직접 구현해야 합니다.
Copy swingWebViewPlugin . event .addEvent ( 'backExitEvent' , function () {
// 앱 종료 Logic 직접 구현
swingWebViewPlugin . app . methods .doExitApp (); // 앱 종료 Command 호출 예시
});
어플리케이션 권한제어 Method
Android 및 iOS 플랫폼에서 웹뷰를 사용하여 권한을 요청하고 확인하는 방법을 설명합니다.
아래의 예제 코드와 함께 권한을 요청하고 확인하는 방법을 안내합니다.
*js lib 2024_07_23_001 버전 부터 사용 가능
*앱은 2024년 7월 23일 제작된 버전 이후부터 사용가능
• 권한 요청 (Android)
각 권한별 파라미터 설명
카메라 : android.permission.CAMERA
위치 : android.permission.ACCESS_FINE_LOCATION
푸시 알림 : android.permission.POST_NOTIFICATIONS
(Andriod 13 이상에서 사용)
마이크 : android.permission.RECORD_AUDIO
각 권한별로 호출 예시(Ex:카메라 권한 요청)
Copy swingWebViewPlugin . app . permission . android .requestPermission ( 'android.permission.CAMERA' , function (status) {
if (status == 'granted' ) {
console .log ( 'Camera permission granted' );
} else {
console .log ( 'Camera permission denied' );
}
});
위치 권한 요청
Copy swingWebViewPlugin . app . permission . android .requestPermission ( 'android.permission.ACCESS_FINE_LOCATION' , function (status) {
if (status == 'granted' ) {
console .log ( 'Location permission granted' );
} else {
console .log ( 'Location permission denied' );
}
});
*사용자가 권한을 거부한 경우
사용자가 권한 요청을 거부한 경우, 이후 동일한 권한 요청 시 시스템에서 팝업을 표시하지 않습니다.
사용자는 시스템 설정에서 권한을 수동으로 허용해야 합니다.
• 권한 확인 (Android)
각 권한별 파라미터 설명
카메라 : android.permission.CAMERA
위치 : android.permission.ACCESS_FINE_LOCATION
푸시 알림 : android.permission.POST_NOTIFICATIONS
(Andriod 13 이상에서만 사용가능)
마이크 : android.permission.RECORD_AUDIO
권한 확인 후 권한이 없는 경우 요청하는 코드 예시
카메라 권한 확인 후 요청
Copy swingWebViewPlugin . app . permission . android .checkPermission ( 'android.permission.CAMERA' , function (status) {
if (status == 'granted' ) {
console .log ( 'Camera permission already granted' );
} else {
swingWebViewPlugin . app . permission . android .requestPermission ( 'android.permission.CAMERA' , function (status) {
if (status == 'granted' ) {
console .log ( 'Camera permission granted' );
} else {
console .log ( 'Camera permission denied' );
}
});
}
});
권한이 없을 경우 메시지 처리 예시
Copy swingWebViewPlugin . app . permission . android .checkPermission ( 'android.permission.CAMERA' , function (status) {
if (status == 'granted' ) {
console .log ( 'Camera permission already granted' );
} else {
alert ( 'Camera permission is required to use this feature.' );
swingWebViewPlugin . app . permission . android .requestPermission ( 'android.permission.CAMERA' , function (status) {
if (status == 'granted' ) {
console .log ( 'Camera permission granted' );
} else {
console .log ( 'Camera permission denied' );
}
});
}
});
모든 callback 의 결과는 granted 와 denied 로 return 값을 제공
• 권한 요청 (iOS)
각 권한별 파라미터 설명
각 권한별로 호출 예시(Ex:카메라 권한 요청)
Copy swingWebViewPlugin . app . permission . ios .requestPermission ( 'camera' , function (status) {
if (status == 'granted' ) {
console .log ( 'Camera permission granted' );
} else {
console .log ( 'Camera permission denied' );
}
});
위치 권한 요청
Copy swingWebViewPlugin . app . permission . ios .requestPermission ( 'location' , function (status) {
if (status == 'granted' ) {
console .log ( 'Location permission granted' );
} else {
console .log ( 'Location permission denied' );
}
});
*사용자가 권한을 거부한 경우
사용자가 권한 요청을 거부한 경우, 이후 동일한 권한 요청 시 시스템에서 팝업을 표시하지 않습니다.
사용자는 시스템 설정에서 권한을 수동으로 허용해야 합니다.
• 권한 확인 (iOS)
각 권한별 파라미터 설명
권한 확인 후 권한이 없는 경우 요청하는 코드 예시
카메라 권한 확인 후 요청
Copy swingWebViewPlugin . app . permission . ios .checkPermission ( 'camera' , function (status) {
if (status == 'granted' ) {
console .log ( 'Camera permission already granted' );
} else {
swingWebViewPlugin . app . permission . ios .requestPermission ( 'camera' , function (status) {
if (status == 'granted' ) {
console .log ( 'Camera permission granted' );
} else {
console .log ( 'Camera permission denied' );
}
});
}
});
권한이 없을 경우 메시지 처리 예시
Copy swingWebViewPlugin . app . permission . ios .checkPermission ( 'camera' , function (status) {
if (status == 'granted' ) {
console .log ( 'Camera permission already granted' );
} else {
alert ( 'Camera permission is required to use this feature.' );
swingWebViewPlugin . app . permission . ios .requestPermission ( 'camera' , function (status) {
if (status == 'granted' ) {
console .log ( 'Camera permission granted' );
} else {
console .log ( 'Camera permission denied' );
}
});
}
});
userTracking 제외하고는 모두 granted 와 denied 로 return 값을 제공
사용자 추적 권한 요청(userTracking)
userTracking 권한의 경우 좀 더 다양한 return 값을 제공한다.(requestPermission 도 동일)
Copy swingWebViewPlugin . app . permission . ios .checkPermission ( 'userTracking' , function (status) {
if (status == 'granted' ) {
console .log ( 'User tracking permission granted' );
} else if (status == 'denied' ) {
console .log ( 'User tracking permission denied' );
} else if (status == 'unset_desc' ) {
console .log ( 'User tracking usage description not set in Info.plist' );
} else if (status == 'unset_os' ) {
console .log ( 'User tracking not supported on this iOS version' );
}
});
이와 같이 권한 요청 및 확인 기능을 사용하여 웹뷰에서 Android 및 iOS 플랫폼의 다양한 권한을 관리할 수 있습니다.
필요에 따라 각 플랫폼에 맞는 권한을 요청하고 확인하여 사용자 경험을 향상시키세요.
애드몹 관련 Method
웹사이트에서 직접 앱내의 애드몹 광고를 관리할 수 있는 명령어 입니다.
아래의 내용을 참고하셔서 광고들을 활용해보세요.
반드시 애드몹이 활성된 앱의 경우만 동작하는 명령어 입니다.
• 배너광고 노출하기
어플리케이션내에 애드몹 배너 광고를 노출시키는 명령
ca-app-pub-3940256099942544/6300978111
Copy swingWebViewPlugin . app . admob .showBanner ( 'ca-app-pub-3940256099942544/6300978111' );
• 배너광고 종료하기
어플리케이션내에 애드몹 배너 광고를 종료시키는 명령
Copy swingWebViewPlugin . app . admob .closeBanner ();
• 전면광고 노출하기
어플리케이션내에 애드몹 전면 광고를 노출시키는 명령
ca-app-pub-3940256099942544/6300978111
Copy swingWebViewPlugin . app . admob .showInterstitialAd ( 'ca-app-pub-3940256099942544/6300978111' );