iOS 上的 PhoneGap 是不是经过硬编码以加载 www/index.html?

Posted

技术标签:

【中文标题】iOS 上的 PhoneGap 是不是经过硬编码以加载 www/index.html?【英文标题】:Is PhoneGap on iOS hard coded to load www/index.html?iOS 上的 PhoneGap 是否经过硬编码以加载 www/index.html? 【发布时间】:2011-11-09 10:42:46 【问题描述】:

android 上的 PhoneGap 上,您可以修改 App.java 类以加载任何 url。我找不到任何地方可以更改 ios 版本的入口点。

在测试时,我更喜欢使用一些具有不同设置的“www”目录。目前我需要重命名目录,这有点麻烦。

【问题讨论】:

【参考方案1】:

从 PhoneGap 2.2 开始,您现在可以覆盖 config.xml 中的 <content> 标签:

<content src="http://www.example.com" />

【讨论】:

难道我们不能在默认的 www/config.xml 文件中设置它吗?更改不会延续到每个平台的 config.xml 文件。【参考方案2】:

PhoneGapDelegate.h 定义了一个类方法 startPage,您可以在 iOS 应用的 AppDelegate.m 文件中重载/重新定义该方法。

+ (NSString*) startPage;

例如:

+ (NSString*) startPage 
    return @"http://m.google.com";

将重新定义 PhoneGap 中的起始页。您必须将 google.com 添加到 PhoneGap.plist 中的 ExternalHosts。从 PhoneGap 1.2 开始,如果您这样做并在您的本机应用程序中包含插件,远程托管 PhoneGap 应用程序及其相关的 *.js 将能够执行插件操作。我已经用 BarcodeScanner、ChildBrowser 和 ApplicationPreferences 对此进行了测试。

更新

从 1.4.0 和 1.4.0 开始,startPage 和 wwwFolderName 是属性而不是方法。它们仍然是可重新定义的,但是您不能再让 startPage 指向远程(非本地)phonegap 安装,就像我上面的示例一样。 (这有点无赖)

【讨论】:

是的,真可惜,我还读到如果代码是远程托管的,苹果会拒绝您的应用程序,对吗?除了让远程工作而苹果不拒绝之外,还有其他选择吗? 据我了解,情况已不再如此,他们提到的代码是本机代码,而不是在 UIWebView 中运行的 javascript 代码。有很多例子可以做到这一点。【参考方案3】:

你可以这样做:

创建默认的 index.html 并将其包装并加载您自己的 html 根文件,这样您就可以保留自己的目录结构而无需在此处进行任何修改。

当然,phonegap 是开源的,所以你也可以提交对 phonegap 的更改,以更改类似于 Android API 的 iOS api。目前似乎根 html 文件路径是在类 PhoneGapDelegate.m 中确定的

【讨论】:

啊.. 我现在在 PhoneGapDelegate.m 中看到了。好的,这回答了我的问题。这也是一个很好的解决方法。最高分。谢谢汉内斯。 对于其他人.. 该文件的链接是here 那个链接现在是here【参考方案4】:

你可以的

class/AppDelegate.m

在 AppDelegate.m 中将 self.viewController.startPage 更改为你的起始页

【讨论】:

以上是关于iOS 上的 PhoneGap 是不是经过硬编码以加载 www/index.html?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Phonegap 应用程序设置图标以显示在 Spotlight 上?

Phonegap + jQueryMobile + iOS 上的 PushNotifications

使用 PhoneGap 将音频录制到 iOS 上的文档文件夹

使用Phonegap的IOS上的Jquery ajax请求-Ajax不起作用

以编程方式从文件夹中导入 Vue 组件,而不是硬编码(我实际上使用的是 Nuxt,但我将其称为 Vue)

如何在 iOS 中使用 Phonegap 配置键盘?