【问题标题】:Native iPhone app in HTML/Javascript?HTML/Javascript 中的原生 iPhone 应用程序?
【发布时间】:2011-01-04 11:45:06
【问题描述】:

我想构建一个严重依赖 Google 地图的应用。是否可以用 HTML/Javascript 编写本机 iPhone 应用程序?如果是这样,它可以从应用商店访问吗?否则,我怎么能在原生应用中包含 Google 地图?

【问题讨论】:

    标签: google-maps iphone


    【解决方案1】:

    还有Appcelerator Titanium,它看起来是一个使用网络技术开发iPhone 和Android 应用程序的好框架。他们在 C4 上对此做了一个有趣的演示。

    但是,尝试在移动设备上“编写一次,随处运行”会导致您创建的东西在所有平台上都不如原生应用程序,因为您需要针对它们之间的最小公分母进行设计。

    【讨论】:

      【解决方案2】:

      解决您问题的两个部分:

      可以写原生的吗 HTML/Javascript 中的 iPhone 应用程序 ?如果是这样,是否可以从 应用商店?

      有一个名为NimbleKit 的框架允许您使用 HTML/JavaScript 编写应用程序,然后为您将其转换为 Objective-C/Cocoa。不过 NimbleKit 有几个问题:

      • 售价 99 美元。
      • 它增加了一个间接级别,增加了出错的机会。
      • 因为您使用的不是“真实的东西”,所以您能做的事情受到了更多限制(即您只能使用他们提供给您的东西)。

      另一种解决方案是在原生 iPhone 应用程序中嵌入 UIWebView(您必须使用一些 Objective-C/Cocoa 来执行此操作),然后将应用程序的其余部分编写为 iPhone 网络应用程序被加载到UIWebView。但是,我强烈建议您不要编写 iPhone 网络应用程序,无论是独立的还是嵌入到本机应用程序中。在撰写本文时,iPhone 网络应用程序有许多缺点,包括:

      • 它们非常慢。
      • 它们的功能有限(例如,没有设备 API)。
      • 他们无法利用 Cocoa-Touch 框架(一个严重的缺点)。

      iPhone 网络应用程序在未来可能变得可行,但在这个时间点上,我会避开它们并使用原生技术(即 Objective-C/Cocoa)编写原生 iPhone 应用程序。

      否则,我怎么能包含 Google 原生应用中的地图?

      使用 Apple 的框架“MapKit”。有关如何使用 MapKit 的信息,请参阅 iPhone Application Programming Guidethis 教程和 this 教程中的 Displaying Maps and Annotations

      【讨论】:

        【解决方案3】:

        是的,可以这样做。有一个很棒的开源项目叫做 PhoneGap http://phonegap.com/,它可以让你做到这一点。不仅如此,还部署在其他移动操作系统上,如 Android、黑莓等。

        要进入应用商店,你需要注册成为苹果开发者,大约需要 100 美元。开发只能在mac上完成)Apple为您提供了许多软件工具,包括代码编辑器和iphone模拟器。

        【讨论】:

          【解决方案4】:

          您需要在 Objective-C 中构建一个包含 UIWebView 的框架应用程序。您可以使用 HTML/Javascript 填充 UIWebView

          在我看来,更好的选择是使用原生应用程序中的MapKit framework。 MapKit 让您可以使用完整的 Google Maps API 完成几乎所有可以做的事情,我认为原生应用在设备上的运行总是比 UIWebView 容器应用更好。

          我在一些my apps 中使用过 MapKit,发现它易于使用且性能良好。在链接的示例中,我在页面模式下将 MkMapView 嵌入到 UIScrollView 中。我怀疑您是否可以轻松地使用 UIWebView 来实现这一点,我相信它不会表现得那么好。

          【讨论】:

          • +1。我对 HTML/Javascript 的目标是“编写一次,到处运行”。但是,如果我的应用程序在 iPhone 上受到关注,我可能会研究 MapKit 来优化事情:) 顺便说一句,本机应用程序和 Javascript 之间是否可以通信?
          • 我想不到。您的 javascript 在 UIWebView 的隔离中运行。我从来没有尝试过,所以我可能会在这里遗漏一些东西。
          • Objective-C 和 JavaScript 之间可以通信。从 Objective-C 调用 JavaScript 函数很简单;从 JavaScript 调用 Objective-C 代码需要一种解决方法。请参阅codingventures.com/2008/12/using-uiwebview-to-render-svg-files 了解更多信息。
          • @steve-harrison 谢谢史蒂夫。我有兴趣看看它是如何工作的:)。
          【解决方案5】:

          在 iPhone OS 3.0 和更高版本中,Apple 创建了一个自定义 Cocoa Touch 控件,允许开发人员将 Google 地图嵌入到本机应用程序中。地图支持多点触控,您可以使用自定义视图对地图进行注释、查找用户的当前位置以及做其他很酷的事情。

          【讨论】:

            【解决方案6】:

            不可能用 HTML/JS 编写原生 iPhone 应用,http://code.google.com/p/iphone-google-maps-component/ 可能有一些用处,或者你可以使用:

            UIApplication *app = [UIApplication sharedApplication];
            [app openURL:[[NSURL alloc] initWithString: @"http://maps.google.com/maps?g=London"]];
            

            请参阅How can I launch the Google Maps iPhone application from within my own native application? 了解更多信息。

            【讨论】:

              【解决方案7】:

              执行此操作的方法是将您的应用程序构建为常规网络应用程序 (javascript/css/html)。将其嵌入到本机 WebView 中。 WebView 是 iphone 应用程序的容器,这些应用程序旨在成为 Web 应用程序。这些应用程序的销售方式与应用商店中的其他应用程序相同。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-08-14
                • 1970-01-01
                • 2011-04-24
                • 2014-09-19
                • 1970-01-01
                相关资源
                最近更新 更多