Release: ver.1.8.0 (2025-10-29)

🔔 배포 일자: 2025-10-29
이번 업데이트 v1.8.0에서는 네비게이션 제어 기능, 로딩 인디케이터 제어, 안전 영역 (Safe Area) 조회, 내부 브라우저 설정 등 다양한 신규 기능이 추가되었습니다.
또한 AppsFlyer 메서드 네이밍 개선과 앱 종료 기능 추가를 통해 더욱 향상된 개발 경험을 제공합니다.
주요 변경 사항 (ver.1.8.0)
새로운 기능
- 
app네임스페이스: 앱 종료 기능 추가- 앱을 프로그래밍 방식으로 종료할 수 있는 기능이 추가되었습니다.
- ➡️ app네임스페이스 문서 바로가기
 
- 
browser네임스페이스: 내부 브라우저 옵션 설정 기능 추가- 내부 브라우저에서 URL 바 표시 여부를 제어할 수 있습니다.
- 사용자 경험에 맞게 브라우저 UI를 커스터마이징할 수 있습니다.
- ➡️ browser네임스페이스 문서 바로가기
 
- 
device네임스페이스: 안전 영역(Safe Area) 조회 기능 추가- iOS 기기의 Safe Area Insets 정보를 조회할 수 있습니다.
- 노치가 있는 기기에서 화면 레이아웃을 정확히 구성할 수 있습니다.
- 하단 홈 인디케이터 영역을 확인하여 웹에서 구현된 탭바에 정확한 padding을 부여할 수 있습니다.
- ➡️ device네임스페이스 문서 바로가기
 
- 
loading네임스페이스: 로딩 인디케이터 제어 기능 추가- 네이티브 로딩 인디케이터를 숨기는 기능을 제공합니다.
- 앱 시작 시 표시되는 로딩 화면을 JavaScript에서 직접 제어할 수 있습니다.
- ➡️ loading네임스페이스 문서 바로가기
 
- 
navigation네임스페이스: 네비게이션 제어 기능 추가- 앱의 네비게이션 스택 제어, 스와이프 제스처 설정, 루트로 리셋 등의 기능을 제공합니다.
- 플랫폼별 특화 기능을 지원하여 더욱 세밀한 제어가 가능합니 다.
- ➡️ navigation네임스페이스 문서 바로가기
 
- 
vibration네임스페이스: 플랫폼별 햅틱 피드백 기능 추가- iOS 전용 햅틱 피드백: Impact, Notification, Selection 피드백을 제공합니다.
- Android 전용 햅틱 효과: 시스템 정의 VibrationEffect를 사용할 수 있습니다.
- 기존 HAPTICS_TYPES가LIGHT,MEDIUM,HEAVY로 개선되었습니다.
- ➡️ vibration네임스페이스 문서 바로가기
 
앱 종료 기능 (app 네임스페이스)
앱을 프로그래밍 방식으로 종료할 수 있는 기능이 추가되었습니다.
추가된 메서드 (app)
| 메서드 | 설명 | 지원 플랫폼 | 
|---|---|---|
| exitApp() | 앱을 종료 | Android, iOS | 
사용 예제 (exitApp)
// 사용자가 로그아웃 후 앱 종료
function logout() {
  // 로그아웃 로직 수행
  clearUserData();
  // 앱 종료
  Nachocode.app.exitApp();
}
내부 브라우저 옵션 설정 (browser 네임스페이스)
내부 브라우저의 UI 옵션을 설정할 수 있는 기능이 추가되었습니다.
추가된 메서드 (browser)
| 메서드 | 설명 | 지원 플랫폼 | 
|---|---|---|
| setInternalBrowser(option) | 내부 브라우저 옵션 설정 | Android, iOS | 
사용 예제 (setInternalBrowser)
// URL 바를 표시하지 않는 내부 브라우저 설정
Nachocode.browser.setInternalBrowser({
  usingUrl: false,
});
// URL 바를 표시하는 내부 브라우저 설정
Nachocode.browser.setInternalBrowser({
  usingUrl: true,
});
안전 영역 (Safe Area) 조회 기능 (device 네임스페이스)
iOS 기기의 Safe Area Insets 정보를 조회하여 노치나 Dynamic Island가 있는 기기에서 정확한 레이아웃을 구성할 수 있습니다.
추가된 메서드 (device)
| 메서드 | 설명 | 지원 플랫폼 | 
|---|---|---|
| getSafeAreaInsets() | 기기의 Safe Area Insets 정보를 비동기로 조회 | iOS (iPhone X 이상) | 
사용 예제 (getSafeAreaInsets)
// Safe Area Insets 조회
const safeArea = await Nachocode.device.getSafeAreaInsets();
if (!safeArea.isError) {
  console.log(`Top: ${safeArea.top}pt`);
  console.log(`Bottom: ${safeArea.bottom}pt`);
  console.log(`Left: ${safeArea.left}pt`);
  console.log(`Right: ${safeArea.right}pt`);
  // CSS 변수로 설정하여 레이아웃에 활용
  document.documentElement.style.setProperty(
    '--safe-area-top',
    `${safeArea.top}pt`
  );
  document.documentElement.style.setProperty(
    '--safe-area-bottom',
    `${safeArea.bottom}pt`
  );
} else {
  console.error(`Error retrieving safe area: ${safeArea.errorMessage}`);
}
반환 타입 (getSafeAreaInsets)
성공 시 (GetSafeAreaInsetsSuccessResult)
{
  isError: false;
  top: number; // 상단 여백 (pt)
  bottom: number; // 하단 여백 (pt)
  left: number; // 좌측 여백 (pt)
  right: number; // 우측 여백 (pt)
}
실패 시 (GetSafeAreaInsetsErrorResult)
{
  isError: true;
  errorMessage: string;
}