본문 바로가기
카테고리 없음

cordova native time

by pishio 2025. 2. 21.

Cordova Android 앱에서 네이티브 시간을 가져오는 함수를 작성하려면 Cordova 플러그인을 사용해야 합니다. 기본적으로 JavaScript의 Date.now()를 사용할 수도 있지만, 시스템 네이티브 시간을 직접 가져오려면 Cordova 플러그인을 만들어서 Java 코드에서 시간을 가져와야 합니다.

1. Cordova 플러그인 생성

Cordova 플러그인을 만들어서 네이티브(Android) 시간을 가져오는 방법을 설명하겠습니다.

1.1 플러그인 추가

Cordova에 Custom Plugin을 추가하려면 plugin.xml을 생성해야 합니다.
Cordova 프로젝트의 plugins 디렉터리에서 플러그인 폴더를 만들고 다음을 작성합니다.

plugin.xml

<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
    id="cordova-plugin-native-time"
    version="1.0.0">
    <name>NativeTime</name>
    <js-module src="www/NativeTime.js" name="NativeTime">
        <clobbers target="NativeTime" />
    </js-module>
    <platform name="android">
        <config-file target="res/xml/config.xml" parent="/*">
            <feature name="NativeTime">
                <param name="android-package" value="org.apache.cordova.nativetime.NativeTime" />
            </feature>
        </config-file>
        <source-file src="src/android/NativeTime.java" target-dir="src/org/apache/cordova/nativetime" />
    </platform>
</plugin>

1.2 Java 코드 작성 (NativeTime.java)

이제 src/android/NativeTime.java 파일을 생성하고, 네이티브 시간을 가져오는 코드를 작성합니다.

src/android/NativeTime.java

package org.apache.cordova.nativetime;

import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;
import org.json.JSONArray;
import org.json.JSONException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class NativeTime extends CordovaPlugin {

    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) {
        if (action.equals("getTime")) {
            this.getTime(callbackContext);
            return true;
        }
        return false;
    }

    private void getTime(CallbackContext callbackContext) {
        // 현재 시스템 시간 가져오기
        long currentTimeMillis = System.currentTimeMillis();
        Date date = new Date(currentTimeMillis);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
        String formattedTime = sdf.format(date);

        callbackContext.success(formattedTime);
    }
}

1.3 JavaScript 인터페이스 작성

Cordova 플러그인은 네이티브 코드를 JavaScript에서 호출할 수 있도록 인터페이스를 제공합니다.
아래와 같이 www/NativeTime.js 파일을 만들어 Cordova의 exec를 사용해 Java 코드를 실행합니다.

www/NativeTime.js

var exec = require('cordova/exec');

var NativeTime = {
    getTime: function (success, error) {
        exec(success, error, "NativeTime", "getTime", []);
    }
};

module.exports = NativeTime;

2. 플러그인 설치 및 사용

이제 Cordova 프로젝트에 플러그인을 추가하고, JavaScript에서 사용할 수 있습니다.

2.1 플러그인 설치

플러그인을 Cordova 프로젝트에 추가합니다.

cordova plugin add ./plugins/cordova-plugin-native-time

(또는 plugin.xml을 작성한 폴더의 경로를 지정)

2.2 JavaScript에서 사용하기

이제 Cordova 앱에서 NativeTime.getTime() 함수를 호출하면 Android 네이티브 시간을 가져올 수 있습니다.

document.addEventListener("deviceready", function () {
    NativeTime.getTime(
        function (time) {
            console.log("Native Time: " + time);
        },
        function (error) {
            console.error("Error: " + error);
        }
    );
});

3. 실행 결과

Android 기기에서 실행하면 콘솔에 현재 시스템 시간이 출력됩니다.

Native Time: 2025-02-21 15:30:45

이렇게 하면 Cordova 앱에서 Android 네이티브 시간을 가져올 수 있습니다.

댓글