[javascript] iPhone 앱을 웹 앱으로 만들지 않고 JavaScript로 완전히 작성할 수있는 방법은 무엇입니까?

Obj-C를 배우는 데 시간이 걸리고 싶지 않습니다. 저는 웹 애플리케이션 프로그래밍에 7 년 이상을 보냈습니다. WebView를 사용하고 전체 앱을 자바 스크립트로 작성하여 프로젝트 리소스에서 바로 파일을 가져 오는 방법이 있어야하지 않나요?



답변

주변을 검색 한 후 답을 찾았습니다. 내가 한 일은 다음과 같습니다.

  1. XCode에서 새 프로젝트를 만듭니다. 보기 기반 앱을 사용한 것 같습니다.

  2. WebView 개체를 인터페이스로 드래그하고 크기를 조정합니다.

  3. WebViewController.m 내부 (또는 뷰 이름에 따라 비슷한 이름의 파일), viewDidLoad 메서드에서 :

    NSString * filePath = [[NSBundle mainBundle] pathForResource : @ "index"ofType : @ "html"];
    NSData * htmlData = [NSData dataWithContentsOfFile : filePath];
    if (htmlData) {
      NSBundle * bundle = [NSBundle mainBundle];
      NSString * path = [번들 번들 경로];
      NSString * fullPath = [NSBundle pathForResource : @ "index"ofType : @ "html"inDirectory : path];
      [webView loadRequest : [NSURLRequest requestWithURL : [NSURL fileURLWithPath : fullPath]]];
    }
  4. 이제 프로젝트에 리소스로 추가 한 모든 파일을 웹 앱에서 사용할 수 있습니다. 문제가없는 javascript 및 css 및 이미지 파일이 포함 된 index.html 파일이 있습니다. 지금까지 찾은 유일한 제한은 새 폴더를 만들 수 없어 모든 파일이 리소스 폴더를 복잡하게 만든다는 것입니다.

  5. 트릭 : 파일을 XCode에서 리소스로 추가했는지 확인하십시오. 그렇지 않으면 파일을 사용할 수 없습니다. XCode에 빈 파일을 추가 한 다음 파인더에서 내 파일을 맨 위로 드래그했습니다. 그것은 나를 위해 일하고 있습니다.

참고 : Obj-C는 배우기가 그렇게 어렵지 않아야한다는 것을 알고 있습니다. 하지만 이미이 앱이 JS에 있고 Safari에서 작동한다는 것을 알고 있기 때문에 이것은 저에게 훨씬 더 빠른 개발주기입니다. 언젠가 나는 무너지고 Obj-C를 배워야 할 것이라고 확신합니다.

도움이되는 몇 가지 다른 리소스 :

JavaScript에서 Obj-C 호출 : JavaScript에서 Objective-C 호출

Obj-C에서 자바 스크립트 호출 : 웹 해커를위한 아이폰 앱 개발

애플리케이션 번들에서 파일 읽기 : uiwebview


답변

http://www.phonegap.com 에서 PhoneGap을 확인하십시오 . 그들은 JavaScript, HTML 및 CSS를 기본 iPhone 앱에 포함 할 수 있다고 주장합니다.


답변

iPhone 2.1 (아마도 2.0)에서이 작업을 수행하는 경우 로컬 데이터 저장을위한 특별한 서비스를 만들 필요가 없습니다. MobileSafari는 HTML5 / WHATWG SQL 데이터베이스 API를 지원하는 것으로 보입니다. 최신 버전의 데스크톱 Safari 및 Firefox에서 지원하는 것과 동일한 API입니다.

저장소 추상화를 제공하는 Dojo 또는 ExtJS와 같은 툴킷을 사용하는 경우 코드는 MobileSafari를 포함한 거의 모든 최신 브라우저에서 작동해야합니다.

테스트하려면 iPhone에서 http://robertsanders.name/dev/stackoverflow/html5.html 을 엽니 다 .

해당 페이지를 열고 탈옥 한 iPhone의 파일 시스템을 보면 / private / var / mobile / Library / WebKit / Databases / 어딘가에 데이터베이스가 있어야합니다. 거기에는 웹에서 열린 DB의 디렉토리도 있습니다.

root # sqlite3 /private/var/mobile/Library/WebKit/Databases/Databases.db SQLite 버전 3.5.9 지침을 보려면 “.help”를 입력하십시오.

sqlite> .databases seq 이름 파일


0 메인 /private/var/mobile/Library/WebKit/Databases/Databases.db

sqlite> .tables

데이터베이스 출처

sqlite> 데이터베이스에서 *를 선택하십시오.

1 | http_robertsanders.name_0 | NoteTest | Database | API 예 | 20000 | 0000000000000001.db

sqlite> Origins에서 * 선택;

http_robertsanders.name_0 | 5242880


답변

obj-C를 몰라도 응용 프로그램을 만들 수 있습니다. QuickConnectiPhone 프레임 워크를 사용하면이 작업을 수행 할 수 있습니다. http://tetontech.wordpress.com 에서 사용 방법과 요청한 작업을 수행하는 다른 방법을 확인하십시오 .


답변

Objective C로 작성된 네이티브 래퍼가 있어야합니다.이 래퍼에는 WebView를 만들고 인터넷에서 지정된 주소 (응용 프로그램이있는 위치)로 이동하는 데 필요한 코드 (예 : 10)가 포함되어있을 수 있습니다. 그러나이 경우 애플리케이션은 완전한 기능을 갖춘 웹 애플리케이션이어야합니다 (즉, JavaScript뿐만 아니라 마크 업에 HTML도 사용).


답변

나는이 같은 문제에 부딪쳤다. 나는 이미 완전히 자바 스크립트로 작성된 게임을 가지고 있습니다. iPhone 친화적 버전을 만들고 싶지만 Obj-C는 과잉입니다. 내가 한 일은 WebView를 사용하여 iphone 앱의 특수 URL을 가리키는 것입니다. 그것에 대해 생각한 후 해당 파일을 앱 디렉토리로 이동하고 로컬에서 실행할 수 있다고 가정합니다.


답변

현재 애플 API로는이 작업을 수행 할 수 없습니다. 가장 가까운 방법은 웹킷 브라우저를 포함하는 간단한 기본 iPhone 앱을 작성하는 것입니다. 그러면 xhtml / js 애플리케이션을 로컬에서 탐색 할 수 있습니다.

데이터를 저장하려면 한 단계 더 나아가 앱을 서버에 올리고 데이터 저장 및 검색 호출을 제공하는 경량 http 서버를 포함해야합니다. 아마도 이상적인 솔루션은 아니지만 전체 Obj-C 앱보다 작업량이 적을 수 있습니다.

참고로 Obj-C는 배우기가 상당히 쉽습니다. SDK에는 수많은 예제가 있습니다. 커뮤니티는 강력하며 주저없이 잘 작성된 질문에 답할 것입니다.