在 PhoneGap Build 中为 iOS 7 启用 cookie

Posted

技术标签:

【中文标题】在 PhoneGap Build 中为 iOS 7 启用 cookie【英文标题】:Enable cookies for iOS 7 in PhoneGap Build 【发布时间】:2013-11-23 09:01:29 【问题描述】:

我正在尝试让我的WebApp 在我的 iPad (ios 7) 上工作。根据我所做的所有研究,您似乎需要专门启用 cookie(天知道为什么!)

我在 SO 上找到了这篇文章:

How to enable cookies for android phonegap 1.8.0 app?

这一切都很好,除了我使用PhoneGap Build 来创建我的应用程序(因此无权访问这些文件进行编辑)

谁能建议我能做什么?如果不做这个黑客,我就不能在我的 iOS 应用程序上使用localStorage(或 cookie),这似乎很疯狂! (我的应用程序在没有这个问题的 Android 上完美运行)。

我已经研究过安装 XCode 并手动编码/编译应用程序,但这仅适用于 Mac(我没有)

更新:环顾四周,似乎唯一的解决方案(我能找到)是编写一个插件来启用 cookie。这一切都很好 - 但是:

我没有 Mac 来写它 我可以编写很多语言,但 Java 不是其中之一 我什至如何将它添加到他们的构建列表中,以便我可以包含它!

有人有兴趣为我编写插件吗?据我所知,它只需要调用:

CookieSyncManager.createInstance(this);
CookieSyncManager.getInstance().startSync();
webView = (WebView) findViewById(R.id.webview);
webview.getSettings().setjavascriptEnabled(true);

这把我逼疯了!

【问题讨论】:

也许这个插件对你有用? github.com/bez4pieci/Phonegap-Cookies-Plugin 谢谢 - 虽然不确定这是否能满足我的需要 :) 我找到了一种让它工作的方法,方法是在初始脚本加载时设置一个 1.5 秒的计时器,这似乎让 iOS 有时间启动在事情的饼干方面。疯了,我知道……但它有效! 我误解了你的问题。实际上,我在 PhoneGap 应用程序中经常使用 cookie,我没有遇到任何问题。奇怪... 是的 - 奇怪的是它适用于 Android,但不适用于 iOS。它给出了"document.localStorage is not defined"之类的错误 【参考方案1】:

刚刚复习一下我的问题,并想我会回答这个问题 - 似乎出于某种原因,iOS 不喜欢在准备好的页面上加载 localStorage()。为了解决这个问题,您还必须设置一个 1.5 秒的计时器 - 这样它就不会在 iOS 加载 localStorage() 之前运行。即:

setTimeout(function()  doInit()  , 1500);

这并不理想 - 如果有一种方法可以在 PhoneGap Build 中为 iOS 启用 cookie,而无需编写插件来执行此操作(我没有技能;))

【讨论】:

你好像有安卓代码。我不知道在 phonegap 源代码中的何处进行编辑,尽管在早期版本的 phonegap 中这更容易。尝试在 phonegap 应用程序中提供的设备就绪回调中包含您的 localStorage 函数。【参考方案2】:

如果您指的是document.localStorage(如上所述),那将是问题所在,因为localStoragewindow 的属性,而不是document 的属性。

【讨论】:

对不起,我的意思是 window.localStorage :)

以上是关于在 PhoneGap Build 中为 iOS 7 启用 cookie的主要内容,如果未能解决你的问题,请参考以下文章

如何在phonegap中为ios添加插件?

iOS - 应用程序图标支持带有不同支持iOS版本的Phonegap Build Project的错误

在phonegap中为ios压缩图像插件

我无法使用 CDVPlugin 从 phonegap 2.7.0 中的 javascript 访问本机 iOS?

在 Windows 中为 PhoneGap 构建 iOS 签名密钥

使用 PhoneGap Build 为 iOS 构建现有的 PhoneGap 项目