/** * 플랫폼 관련 유틸리티 함수들 */ import { Capacitor } from '@capacitor/core'; /** * 안드로이드 플랫폼인지 확인 */ export const isAndroidPlatform = (): boolean => { return Capacitor.getPlatform() === 'android'; }; /** * iOS 플랫폼인지 확인 */ export const isIOSPlatform = (): boolean => { return Capacitor.getPlatform() === 'ios'; }; /** * 웹 플랫폼인지 확인 */ export const isWebPlatform = (): boolean => { return Capacitor.getPlatform() === 'web'; }; /** * 네이티브 플랫폼(Android 또는 iOS)인지 확인 */ export const isNativePlatform = (): boolean => { return isAndroidPlatform() || isIOSPlatform(); }; /** * 앱 버전 정보 가져오기 */ export const getAppVersionInfo = async () => { try { // 디버깅을 위한 플랫폼 체크 로그 console.log('현재 플랫폼:', Capacitor.getPlatform()); console.log('플러그인 가용성 확인:', Capacitor.isPluginAvailable('BuildInfo')); // BuildInfoPlugin이 설치되어 있다면 사용 if (Capacitor.isPluginAvailable('BuildInfo')) { try { // 플러그인 호출 시도 // @ts-ignore - 플러그인이 런타임에 등록되므로 타입 체크를 무시 const buildInfo = await Capacitor.Plugins.BuildInfo.getBuildInfo(); console.log('네이티브에서 받은 빌드 정보:', buildInfo); // 받은 정보가 유효한지 확인 if (buildInfo && typeof buildInfo === 'object') { // iOS에서는 buildNumber가 문자열로 올 수 있으므로 숫자로 변환 let buildNumberValue = buildInfo.buildNumber; if (typeof buildNumberValue === 'string') { buildNumberValue = parseInt(buildNumberValue, 10); } return { versionName: buildInfo.versionName || '1.0.1', buildNumber: !isNaN(buildNumberValue) ? buildNumberValue : 2, versionCode: buildInfo.versionCode, platform: Capacitor.getPlatform(), pluginResponse: JSON.stringify(buildInfo) }; } } catch (pluginError) { console.error('BuildInfo 플러그인 호출 오류:', pluginError); } } // 안드로이드인 경우 기본값을 하드코딩된 값으로 설정 if (isAndroidPlatform()) { // 안드로이드 앱 빌드 정보를 하드코딩된 값으로 제공 // 실제 앱에서는 빌드 과정에서 이 값들이 업데이트되어야 함 return { versionName: '1.0.1', buildNumber: 3, // 업데이트된 빌드 번호 versionCode: 1, platform: 'android' }; } // iOS인 경우 기본값 if (isIOSPlatform()) { return { versionName: '1.0.1', buildNumber: 3, // 업데이트된 빌드 번호 platform: 'ios' }; } // 플러그인이 없거나 웹 환경이면 기본값 반환 return { versionName: '1.0.1', buildNumber: 3, // 업데이트된 빌드 번호 platform: Capacitor.getPlatform() }; } catch (error) { console.error('앱 버전 정보를 가져오는 중 오류 발생:', error); return { versionName: '1.0.1', buildNumber: 3, // 업데이트된 빌드 번호 error: true }; } };