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

StackOverflow https://stackoverflow.com/questions/64420

  •  09-06-2019
  •  | 
  •  

Pergunta

Não quero perder tempo aprendendo Obj-C.Passei mais de 7 anos programando aplicativos da web.Não deveria haver uma maneira de usar o WebView e apenas escrever todo o aplicativo em javascript, extraindo os arquivos diretamente dos recursos do projeto?

Foi útil?

Solução

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

  1. Crie um novo projeto no XCode.Acho que usei o aplicativo baseado em visualizaçã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 visualização), no método viewDidLoad:

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];  
    NSData *htmlData = [NSData dataWithContentsOfFile:filePath];  
    if (htmlData) {  
      NSBundle *bundle = [NSBundle mainBundle]; 
      NSString *path = [bundle bundlePath];
      NSString *fullPath = [NSBundle pathForResource:@"index" ofType:@"html" inDirectory:path];
      [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:fullPath]]];
    }
  4. Agora, todos os arquivos adicionados como recursos ao projeto estarão disponíveis para uso em seu aplicativo 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, então todos os arquivos ocupam a pasta de recursos.

  5. Truque:certifique-se de ter adicionado o arquivo como um recurso no XCode ou o arquivo não estará disponível.Estou adicionando um arquivo vazio no XCode e arrastando meu arquivo para cima no Finder.Isso tem funcionado para mim.

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

Alguns outros recursos que achei úteis:

Chamando Obj-C de javascript: chamando objetivo-c de javascript

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

Lendo arquivos do pacote de aplicativos: UIwebview

Outras dicas

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

Para quem faz isso no iPhone 2.1 (talvez 2.0), NÃO é necessário criar nenhum serviço especial para armazenamento local de dados.O MobileSafari parece oferecer suporte à API de banco de dados SQL HTML5/WHATWG.Esta é a mesma API suportada por versões recentes do Safari e Firefox para desktop.

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

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

Se você abrir essa página e procurar o sistema de arquivos de um iPhone desbloqueado, 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.

raiz# sqlite3 /private/var/mobile/library/webkit/databases/databases.db sqlite versão 3.5.9 enter ".help" para instruções

sqlite> .databases seq name arquivo


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

sqlite>.tabelas

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 * em Origens;

http_robertsanders.name_0|5242880

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

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

Eu me deparei com esse mesmo problema.Já tenho um jogo escrito inteiramente em Javascript.Eu adoraria fazer uma versão amigável para iPhone, mas Obj-C é um exagero.O que acabei fazendo foi usar o WebView para apontar para uma URL especial do aplicativo para iPhone.Depois de pensar sobre isso, suponho que poderia simplesmente mover esses arquivos para o diretório do aplicativo e executá-los localmente.

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

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

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

olha o novo livro de o'reilly sobre o assunto

Eu uso o phonegap há algum tempo e parece ter os melhores resultados para mim.Postarei minha experiência em mais ou menos uma semana com um link para meu aplicativo também.

Titânio Móvel também é uma opção - permite escrever JavaScript que é traduzido em Objective-C.

Pelo menos dois outros mencionaram o phonegap, mas pensei em postar isso também e mencionar que a Apple aprovou a estrutura do phonegap.Então, agora você não terá seu aplicativo rejeitado pela Apple só porque está usando o phonegap.

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

Lacuna no telefone Página inicial

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top