Hotwire Native의 핵심인 BridgeComponent는 JavaScript를 통해 네이티브 앱과 데이터를 주고받으며, Stimulus와 유사한 API로 개발 편의성을 제공합니다. 본 글에서는 웹 애플리케이션의 ‘즐겨찾기(하트)’ 버튼을 모바일 내비게이션 바의 네이티브 버튼으로 전환하는 과정을 상세히 다룹니다.
1. 웹 애플리케이션 설정
hotwire-native-bridge
패키지를 추가하고app/javascript/bridge/heart_controller.js
에서BridgeComponent
를 정의합니다.- 이 JavaScript 컴포넌트는 HTML
data-bridge-checked
속성에서 상태를 읽어 네이티브 앱에 메시지를 전송하고, 네이티브 응답 시 웹 버튼의 클릭 이벤트를 트리거합니다. - Rails 뷰에서는
data-controller="bridge--heart"
를 조건부로 적용하여 BridgeComponent를 활성화합니다.
2. Android Bridge 구현
- Android Studio에서
HeartComponent.kt
를 생성하고BridgeComponent
를 상속받습니다. - 수신된 메시지를 기반으로 툴바에 네이티브
MaterialButton
을 추가하며, 클릭 시replyTo("connect")
로 웹뷰에 응답합니다. SpotrApp
클래스에서Hotwire.registerBridgeComponents
를 통해HeartComponent
를 등록하고, CSS로 웹 기반의 중복 버튼을 숨깁니다.
3. iOS Bridge 구현
- iOS 앱에서는
HeartComponent.swift
를 생성하고BridgeComponent
를 상속받습니다. - 수신된 메시지를 바탕으로 SF Symbols를 사용한
UIBarButtonItem
을 내비게이션 바 우측에 추가하며, 클릭 시reply(to: "connect")
로 웹뷰에 응답합니다. AppDelegate
파일에서HotwireNative.registerBridgeComponents
를 통해HeartComponent
를 등록하고 앱 설정을 구성합니다.
이러한 통합 과정을 통해 웹 기능을 모바일 앱에서 네이티브 컴포넌트처럼 구현하여 사용자 경험을 효과적으로 향상시킬 수 있습니다.