Files
zellyy-finance/src/utils/platform.ts
gpt-engineer-app[bot] 1ce73d9354 Implement BuildInfo plugin for iOS
This commit implements the BuildInfo Capacitor plugin for iOS to retrieve the app version and build number from Info.plist. This resolves an issue where the version information was not being updated on iOS devices due to the absence of a native plugin implementation.
2025-03-23 10:56:42 +00:00

111 lines
3.3 KiB
TypeScript

/**
* 플랫폼 관련 유틸리티 함수들
*/
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
};
}
};