diff --git a/android/app/src/main/java/com/lovable/zellyfinance/BuildInfoPlugin.java b/android/app/src/main/java/com/lovable/zellyfinance/BuildInfoPlugin.java index 3520f5d..939d2c4 100644 --- a/android/app/src/main/java/com/lovable/zellyfinance/BuildInfoPlugin.java +++ b/android/app/src/main/java/com/lovable/zellyfinance/BuildInfoPlugin.java @@ -33,11 +33,11 @@ public class BuildInfoPlugin extends Plugin { int buildNumber = BuildConfig.BUILD_NUMBER; String packageName = getContext().getPackageName(); - // 디버깅을 위한 로그 출력 - Log.d(TAG, "버전명: " + versionName); - Log.d(TAG, "버전 코드: " + versionCode); - Log.d(TAG, "빌드 번호: " + buildNumber); - Log.d(TAG, "패키지명: " + packageName); + // 디버깅을 위한 로그 출력 개선 + Log.d(TAG, "앱 버전 정보 준비 - 버전명: " + versionName); + Log.d(TAG, "앱 버전 정보 준비 - 버전 코드: " + versionCode); + Log.d(TAG, "앱 버전 정보 준비 - 빌드 번호: " + buildNumber); + Log.d(TAG, "앱 버전 정보 준비 - 패키지명: " + packageName); // 결과 객체에 값 설정 ret.put("versionName", versionName); @@ -50,18 +50,24 @@ public class BuildInfoPlugin extends Plugin { // 현재 날짜를 디버깅 정보로 추가 ret.put("buildDate", new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new java.util.Date())); + ret.put("timestamp", System.currentTimeMillis()); - Log.d(TAG, "빌드 정보 요청 성공 처리: " + ret.toString()); + Log.d(TAG, "빌드 정보 응답 성공: " + ret.toString()); call.resolve(ret); } catch (Exception e) { Log.e(TAG, "빌드 정보 가져오기 실패", e); + + // 오류 발생 시에도 기본 정보 반환하여 앱 중단 방지 JSObject errorResult = new JSObject(); - errorResult.put("versionName", "1.0.0"); - errorResult.put("versionCode", 1); - errorResult.put("buildNumber", 1); + errorResult.put("versionName", "1.1.1.2"); // 최신 버전으로 업데이트 + errorResult.put("versionCode", 6); // 최신 버전 코드로 업데이트 + errorResult.put("buildNumber", 6); // 최신 빌드 번호로 업데이트 errorResult.put("error", e.getMessage()); + errorResult.put("errorType", e.getClass().getName()); errorResult.put("platform", "android-error"); - call.resolve(errorResult); // 에러가 발생해도 앱이 중단되지 않도록 resolve 호출 + + Log.d(TAG, "오류 발생으로 기본값 반환: " + errorResult.toString()); + call.resolve(errorResult); } } } diff --git a/android/app/version.properties b/android/app/version.properties index 1072dca..93803af 100644 --- a/android/app/version.properties +++ b/android/app/version.properties @@ -1,3 +1,4 @@ + buildNumber=6 versionCode=6 versionName=1.1.1.2 diff --git a/android/app_version.json b/android/app_version.json index 66d0d53..191ee60 100644 --- a/android/app_version.json +++ b/android/app_version.json @@ -1,3 +1,4 @@ + { "versionCode": 6, "versionName": "1.1.1.2", diff --git a/android/version.properties b/android/version.properties index 1072dca..93803af 100644 --- a/android/version.properties +++ b/android/version.properties @@ -1,3 +1,4 @@ + buildNumber=6 versionCode=6 versionName=1.1.1.2 diff --git a/src/plugins/build-info.ts b/src/plugins/build-info.ts index 4a8931f..696ec3f 100644 --- a/src/plugins/build-info.ts +++ b/src/plugins/build-info.ts @@ -28,22 +28,24 @@ const BuildInfo: BuildInfoPlugin = { // android/version.properties 또는 ios의 Info.plist에서 // 설정된 값을 반환하는 네이티브 구현이 런타임에 이 함수를 대체함 - // 네이티브 구현이 없을 경우를 위한 기본값 + // 네이티브 구현이 없을 경우를 위한 기본값 (최신 버전) return { - versionName: '1.0.1', - versionCode: 1, - buildNumber: 3, + versionName: '1.1.1.2', + versionCode: 6, + buildNumber: 6, platform: 'native', - isDefault: true + isDefault: true, + timestamp: new Date().toISOString() }; } catch (error) { console.error('BuildInfo.getBuildInfo() 오류:', error); // 오류 발생 시에도 앱 실행은 계속되도록 기본값 반환 return { - versionName: '1.0.0', - versionCode: 1, - buildNumber: 1, - error: true + versionName: '1.1.1.2', + versionCode: 6, + buildNumber: 6, + error: true, + errorMessage: error instanceof Error ? error.message : String(error) }; } } diff --git a/src/utils/platform.ts b/src/utils/platform.ts index c9a89de..eae23a8 100644 --- a/src/utils/platform.ts +++ b/src/utils/platform.ts @@ -31,12 +31,16 @@ export const isNativePlatform = (): boolean => { */ export const getAppVersionInfo = async () => { try { - // 디버깅을 위한 플랫폼 체크 로그 - console.log('현재 플랫폼:', Capacitor.getPlatform()); - console.log('플러그인 가용성 확인:', Capacitor.isPluginAvailable('BuildInfo')); + // 플랫폼 정보를 먼저 로깅 + const currentPlatform = Capacitor.getPlatform(); + console.log('현재 플랫폼:', currentPlatform); + + // 플러그인 가용성을 확인하고 로깅 + const isPluginAvailable = Capacitor.isPluginAvailable('BuildInfo'); + console.log('플러그인 가용성 확인:', isPluginAvailable); // BuildInfoPlugin이 설치되어 있다면 사용 - if (Capacitor.isPluginAvailable('BuildInfo')) { + if (isPluginAvailable) { try { // 플러그인 호출 시도 // @ts-ignore - 플러그인이 런타임에 등록되므로 타입 체크를 무시 @@ -46,58 +50,84 @@ export const getAppVersionInfo = async () => { // 받은 정보가 유효한지 확인 if (buildInfo && typeof buildInfo === 'object') { + // 값 존재 여부 확인 및 기본값 설정 + const versionName = buildInfo.versionName || '1.1.1.2'; + // iOS에서는 buildNumber가 문자열로 올 수 있으므로 숫자로 변환 let buildNumberValue = buildInfo.buildNumber; if (typeof buildNumberValue === 'string') { buildNumberValue = parseInt(buildNumberValue, 10); } + // 빌드 번호가 NaN이거나 undefined인 경우 기본값 사용 + const finalBuildNumber = !isNaN(buildNumberValue) && buildNumberValue !== undefined + ? buildNumberValue + : 6; // 업데이트된 기본값 + + // 버전 코드도 동일하게 처리 + let versionCodeValue = buildInfo.versionCode; + if (typeof versionCodeValue === 'string') { + versionCodeValue = parseInt(versionCodeValue, 10); + } + + const finalVersionCode = !isNaN(versionCodeValue) && versionCodeValue !== undefined + ? versionCodeValue + : 6; // 업데이트된 기본값 + return { - versionName: buildInfo.versionName || '1.0.1', - buildNumber: !isNaN(buildNumberValue) ? buildNumberValue : 2, - versionCode: buildInfo.versionCode, - platform: Capacitor.getPlatform(), - pluginResponse: JSON.stringify(buildInfo) + versionName: versionName, + buildNumber: finalBuildNumber, + versionCode: finalVersionCode, + platform: currentPlatform, + pluginResponse: JSON.stringify(buildInfo), + timestamp: new Date().toISOString() }; + } else { + console.warn('빌드 정보가 유효한 객체가 아닙니다:', buildInfo); } } catch (pluginError) { console.error('BuildInfo 플러그인 호출 오류:', pluginError); } } - // 안드로이드인 경우 기본값을 하드코딩된 값으로 설정 + // 안드로이드인 경우 기본값을 최신 버전 값으로 설정 if (isAndroidPlatform()) { - // 안드로이드 앱 빌드 정보를 하드코딩된 값으로 제공 - // 실제 앱에서는 빌드 과정에서 이 값들이 업데이트되어야 함 + console.log('안드로이드 기본 빌드 정보 반환'); return { - versionName: '1.0.1', - buildNumber: 3, // 업데이트된 빌드 번호 - versionCode: 1, - platform: 'android' + versionName: '1.1.1.2', // 업데이트된 버전명 + buildNumber: 6, // 업데이트된 빌드 번호 + versionCode: 6, // 업데이트된 버전 코드 + platform: 'android', + isDefault: true }; } // iOS인 경우 기본값 if (isIOSPlatform()) { + console.log('iOS 기본 빌드 정보 반환'); return { - versionName: '1.0.1', - buildNumber: 3, // 업데이트된 빌드 번호 - platform: 'ios' + versionName: '1.1.1.2', // 업데이트된 버전명 + buildNumber: 6, // 업데이트된 빌드 번호 + platform: 'ios', + isDefault: true }; } // 플러그인이 없는 경우 기본값 반환 + console.log('웹 기본 빌드 정보 반환'); return { - versionName: '1.0.1', - buildNumber: 3, // 업데이트된 빌드 번호 - platform: Capacitor.getPlatform() + versionName: '1.1.1.2', // 업데이트된 버전명 + buildNumber: 6, // 업데이트된 빌드 번호 + platform: currentPlatform, + isDefault: true }; } catch (error) { console.error('앱 버전 정보를 가져오는 중 오류 발생:', error); return { - versionName: '1.0.1', - buildNumber: 3, // 업데이트된 빌드 번호 - error: true + versionName: '1.1.1.2', // 업데이트된 버전명 + buildNumber: 6, // 업데이트된 빌드 번호 + error: true, + errorMessage: error instanceof Error ? error.message : String(error) }; } };