【问题标题】:iPhone: Native App with Locally Stored Webapp?iPhone:具有本地存储 Web 应用程序的本机应用程序?
【发布时间】:2009-12-18 05:30:17
【问题描述】:

是否可以编写一个 web 应用程序,然后将其嵌入到本机应用程序中,这样它就可以在没有数据的情况下启动并通过应用程序商店出售?

Pre 使引用本地文件结构中的文件变得容易,因此构建 web 应用程序(HTML、CSS 和 Javascript)并将其嵌入到本机应用程序中非常容易。

是否可以采用相同的纯 HTML、CSS 和 Javascript(没有特定于 Mojo/Webos 的代码)并将其以相同的方式嵌入到原生 iPhone 应用程序中?这会让用户觉得好像主菜单中的图标启动了一个 web 应用程序,但该应用程序无需任何数据即可访问,并且可以通过应用程序商店出售。

谢谢, ~J

【问题讨论】:

    标签: iphone web-applications


    【解决方案1】:

    在我的应用程序中,我有一个完整的基于 HTML 的手册,我使用 UIWebView 来显示它。 HTML、CSS 和图像都本地存储在我的应用程序包中的 Help 目录中。我只是使用如下代码加载第一页:

    NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Help"];                   
    NSURL *helpURL = [NSURL fileURLWithPath:[path stringByAppendingPathComponent:@"helpintroduction.html"]];
    
    NSURLRequest *URLReq = [NSURLRequest requestWithURL:helpURL];
    [webHelpView loadRequest:URLReq];
    

    所有内容都会像在远程服务器上一样加载和显示。

    要保留您的 HTML 等文件的完整目录结构,只需将这些文件添加到您的 Xcode 项目中,在可以的地方拖入目录,然后添加一个新的 Copy Files 构建阶段。将目标 Resources 和路径设置为您想要用作 Web 文件基础的任何路径(Help 在上面的示例中)。最后,将您添加到项目中的所有 HTML 等资源拖入此Copy Files 构建阶段,以便它们最终与您的应用程序捆绑在一起。

    我认为这没有理由不适用于更复杂的 Web 应用程序,而且我没有看到 Apple 对人们在自己的应用程序中执行此操作采取任何行动。

    【讨论】:

    • 所以这可以扩展使用的方法:bit.ly/4YYzW 这样我就可以在我的 web 应用程序的目录结构中引用图像和脚本? - 顺便说一句,感谢这个很棒的答案。我只是 iphoning 的新手,并试图确保我从正确的角度来解决这个问题。 ~J
    • 是的,应该。他们断言你不能有子目录是错误的。在我上面给出的示例中,Help 目录中有许多子目录,并且所有内容都正确加载。我以前从未使用过 PhoneGap,但如果它产生的所有内容都可以从 Web 服务器读取,那么没有理由不能从应用程序的资源中本地加载它。
    【解决方案2】:

    我不明白为什么不,只需给 UIWebView 一个本地存储包的 baseUrl。

    【讨论】:

      【解决方案3】:

      看看PhoneGap (http://phonegap.com/)

      我没有使用它,但它可能是您尝试做的一个很好的解决方案。

      【讨论】:

        【解决方案4】:

        是的,这是完全可行的。您只需要在应用程序包中构建 HTML 文件的绝对路径,使用“file:///”作为协议,并将 UIWebView 的 URL 指向它。您可以使用 iPhone OS 模拟器进行快速而肮脏的测试,并在 Safari.app 上编写类似“file:///foo/bar.html”的内容,只要 HTML 存在,它就会正常加载。

        【讨论】:

          【解决方案5】:

          问题在于包装它。据我所知(我很可能完全错了),Apple 只是将您的所有文件转储到一个资源文件夹中,而不管您项目中的目录结构如何。因此,如果您创建一个引用 images/logo.png 和 javascript/script.js 的网页,这些文件突然将位于 / 而不是它们各自的文件夹中。鉴于此,从一开始就创建一个具有完全扁平结构的 Web 应用程序可能是可行的。

          【讨论】:

          • 这是不正确的。您可以通过将目录本身作为资源包含在 Xcode 中来维护完整的目录结构。我这样做是为了提供基于 HTML 的应用程序内帮助,其中包含用于章节的子目录和用于图像的子目录。
          【解决方案6】:

          我不知道这应该是什么问题的技术原因。

          但是,Apple 总是有可能会因为应用程序做这样的事情而拒绝应用程序——他们当然不会因为以前不“行为正确”而拒绝应用程序,而且网络应用程序有一些特定的特性,使它们不能感觉像原生应用。

          这种拒绝可能可以通过重新提交来解决,因为这种事情肯定没有标准,但肯定需要注意。

          【讨论】:

          • 没错,有很多应用程序使用嵌入式 WebView。但是,不知道有任何由 WebView 组成。至少,这些应用程序中的大多数将使用原生控件作为顶部栏或其他东西,并使用大量 WebView 来呈现内容。但就像我说的,它不太可能被拒绝,但并非不可能。
          【解决方案7】:

          如果您不是程序员,并且只对 iOS 感兴趣,可以按照以下步骤操作:

          • 下载xCode
          • https://github.com/nomtek/iOSWebViewApp下载简单的网络视图应用程序
          • 在 xCode 中打开简单的 Web 视图应用
          • 将您的 HTML 添加到项目文件结构中
          • 运行您的应用,瞧 :)

          如果您不需要访问任何电话特定的功能,只需一个标准的 Web 视图,这种方法就很好。加载时间会很短,因为这种方法不会加载任何额外的库。

          【讨论】:

            猜你喜欢
            • 2011-10-07
            • 2011-02-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多