ti-enxame.com

Como posso escrever um aplicativo para iPhone inteiramente em JavaScript sem torná-lo apenas um aplicativo da web?

Eu não quero ter tempo para aprender Obj-C. Passei mais de 7 anos fazendo programação de aplicativos da web. Não deveria haver uma maneira de usar o WebView e apenas escrever o aplicativo inteiro em javascript, puxando os arquivos diretamente dos recursos do projeto?

84
Jeff

Encontrei a resposta depois de pesquisar. Aqui está o que eu fiz:

  1. Crie um novo projeto no XCode. Eu acho que usei o aplicativo baseado em exibição.

  2. Arraste um objeto WebView para sua interface e redimensione.

  3. Dentro do seu WebViewController.m (ou arquivo com nome semelhante, dependendo do nome da sua exibição), no método viewDidLoad:

    NSString * filePath = [[NSBundle mainBundle] pathForResource: @ "index" doTipo: @ "html"]; 
     NSData * htmlData = [NSData dataWithContentsOfFile: filePath]; 
     if (htmlData) {
     NSBundle * bundle = [NSBundle mainBundle]; 
     NSString * path = [bundlePath bundle]; 
     NSString * fullPath = [NSBundle pathForResource: @ "index" ofType: @ "html" inDirectory: path]; 
     [WebView loadRequest : [NSURLRequest requestWithURL: [NSURL fileURLWithPath: fullPath]]]; 
    }
  4. Agora, todos os arquivos que você adicionou como recursos ao projeto estão disponíveis para uso em seu aplicativo da web. Eu tenho um arquivo index.html incluindo javascript e css e arquivos de imagem sem problemas. A única limitação que encontrei até agora é que não consigo criar novas pastas, de modo que todos os arquivos desorganizam a pasta de recursos.

  5. Truque: verifique se você adicionou o arquivo como um recurso no XCode ou se o arquivo não estará disponível. Venho adicionando um arquivo vazio no XCode e depois arrastando meu arquivo por cima no Finder. Isso tem funcionado para mim.

Nota: Eu sei que o Obj-C não deve ser tão difícil de aprender. Mas como eu já tenho esse aplicativo existente em JS e sei que funciona no Safari, esse é um ciclo de desenvolvimento muito mais rápido para mim. Algum dia eu tenho certeza que terei que quebrar e aprender Obj-C.

Alguns outros recursos que achei úteis:

Chamando Obj-C do javascript: chamando o objetivo-c do javascript

Chamando javascript do Obj-C: desenvolvimento de aplicativos para iphone para hackers

Lendo arquivos do pacote de aplicativos: iwebview

71
Jeff

Confira o PhoneGap em http://www.phonegap.com eles afirmam que permite incorporar JavaScript, HTML e CSS em um aplicativo nativo do iPhone.

22
Chris Samuels

Para quem faz isso no iPhone 2.1 (talvez 2.0), você NÃO precisa criar serviços especiais para armazenamento de dados local. O MobileSafari parece oferecer suporte à API do banco de dados SQL HTML5/WHATWG. Essa é a mesma API suportada pelas versões recentes do Safari e Firefox para desktop.

Se você estiver usando um kit de ferramentas como o Dojo ou ExtJS que ofereça uma abstração de armazenamento, seu código funcionará em praticamente qualquer navegador moderno, incluindo o MobileSafari.

Para testar, abra http://robertsanders.name/dev/stackoverflow/html5.html no seu iPhone.

Se você abrir essa página e procurar no sistema de arquivos de um iPhone Jailbroken, deverá ver um banco de dados em algum lugar em/private/var/mobile/Library/WebKit/Databases /. Existe até um diretório de bancos de dados abertos na Web lá.

root # sqlite3 /private/var/mobile/Library/WebKit/Databases/Databases.db SQLite versão 3.5.9 Digite ".help" para obter instruções

sqlite> .databases arquivo de nome seq


0 main /private/var/mobile/Library/WebKit/Databases/Databases.db

sqlite> .tables

Origens dos bancos de dados

sqlite> selecione * em Bancos de dados;

1 | http_robertsanders.name_0 | NoteTest | Banco de Dados | Exemplo de API | 20000 | 0000000000000001.db

sqlite> selecione * de Origins;

http_robertsanders.name_0 | 5242880

7
Robert Sanders

Você pode criar um aplicativo sem conhecer nenhum obj-C. A estrutura do QuickConnectiPhone permite fazer isso. Confira http://tetontech.wordpress.com para saber como usá-lo, bem como outras maneiras de fazer o que você pediu.

4
Lee

olhe para o novo o'reilly book sobre o assunto

2
cris

Você deve ter o wrapper nativo escrito no Objetivo C. Esse wrapper pode conter realmente poucas linhas de código (como 10) necessárias para criar um WebView e navegá-lo até o endereço fornecido na Internet (onde reside seu aplicativo). Mas, nesse caso, seu aplicativo deve ser um aplicativo da Web completo (quero dizer, use não apenas o JavaScript, mas também algum HTML para marcação).

2
Sergey Mikhanov

Eu encontrei esse mesmo problema. Eu já tenho um jogo escrito inteiramente em Javascript. Eu adoraria criar uma versão para iPhone, mas o Obj-C é um exagero. O que acabei fazendo foi usar o WebView para apontar para um URL especial do aplicativo para iPhone. Depois de pensar nisso, suponho que eu poderia simplesmente mover esses arquivos para o diretório do aplicativo e executá-los localmente.

2
dawnerd

Não há como fazer isso com as APIs atuais Apple. Sua aposta mais próxima é escrever um aplicativo nativo simples para iPhone que incorpore o navegador de kit da Web. Isso permitirá que você navegue no aplicativo xhtml/js localmente.

Se você deseja armazenar dados, precisará dar um passo adiante e incluir um servidor http leve que hospeda seu aplicativo e fornece chamadas para armazenar e recuperar dados. Provavelmente não é uma solução ideal para você, mas possivelmente menos trabalho que um aplicativo Obj-C completo.

Como uma observação lateral, o Obj-C é bastante fácil de aprender. Existem vários exemplos no SDK. A comunidade é forte e responderá bem a perguntas sem hesitar.

2
jsapara

Uso o phonegap há um tempo e parece ter os melhores resultados para mim. Também postarei minha experiência em uma semana, com um link para meu aplicativo.

1
shawn

Titanium Mobile também é uma opção - permite que você escreva JavaScript traduzido para o Objective-C.

1
Josh Brown

Pelo menos dois outros mencionaram o phonegap, mas eu pensei em publicar isso também e mencionar que Apple aprovou a estrutura do phonegap. Portanto, agora você não receberá seu aplicativo rejeitado por Apple apenas porque você está usando o phonegap.

Postagem em blog sobre phonegap e Apple - http://blogs.nitobi.com/jesse/2009/11/20/phonegapp-store-approval/ )

Página inicial do telefone

0
Neo42