PhoneGap/Cordova + iOS7 + XCode 5

Posted

技术标签:

【中文标题】PhoneGap/Cordova + iOS7 + XCode 5【英文标题】: 【发布时间】:2013-09-19 20:00:05 【问题描述】:

我只是在完成一个应用程序的过程中,然后发布了 ios7。 我正在使用 Cordova 3.0。

在我更新到 XCode 5 之前,为 iOS7 编译并且没有任何工作... 我想知道它们是否可以很好地协同工作?

Cordova 插件(连接、闪屏、通知、存储)是否仍在工作,还是我们必须等待 Cordova Apache Software Foundation 推出新版本?

非常感谢。

【问题讨论】:

【参考方案1】:

如果您在升级到 iOS 7 和 XCode 5 后遇到编译错误,那么在这种情况下,您需要在 Build Settings 下更改您的 Valid Architecture 值。

仅将您的 Architectures 值更改为“armv7”,并在构建后删除其他项目,所有编译错误都将解决。

此修复仅适用于 Cordova 应用程序

【讨论】:

这解决了我在两个不同的应用程序 Cordova 2.7 和 Cordova 2.2 中的问题。两者现在都在 iOS7 上运行。【参考方案2】:

我自己也想知道这个,所以我备份了 xcode4(将它从 Applications 文件夹复制到备份文件夹),然后今天更新到 xcode5。 (这可能会有所帮助:Can you install the Xcode 5 Developer Preview in parallel with Xcode 4.6.2?)

我的Phonegap 应用程序编译成功并在iOS7 模拟器上运行。所以据我所见,Phonegap 3.0.0 和 xcode5 可以很好地协同工作。

除此之外,我认为还有一些 iOS7 特定的配置需要我进行调整,例如:

iOS7 中视网膜显示的不同图标大小 为聚光灯和设置添加图标

【讨论】:

【参考方案3】:

我也在使用 cordova 3.0 和 xcode 5。 似乎没有任何编译错误,可以成功运行。 问题是iOS7的屏幕长度。 可以使用以下方法解决屏幕长度问题。 (这也被称为状态栏隐藏主 ui 问题)

0,不确定margin-top=20px的方案是否好用,因为在我的环境下,我也是用jquery mobile,所以简单的设置margin-top是没有效果的。

我的解决办法是:

1、在info.plist文件中设置基于View控制器的状态栏外观为NO。

2,将此代码用于 iOS 7

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) 
    [application setStatusBarStyle:UIStatusBarStyleLightContent];
    self.window.clipsToBounds =YES;
    self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);

到目前为止,状态栏显示回像 iOS 6 或更早版本。但是您会发现底部有点隐藏在设备屏幕下方。 为了解决这个问题,

3、设置所有jquery mobile和iscrollview页脚元素padding-bottom=20px。

onDeviceReady: function() 
    console.log("onDeviceReady");
    if( parseInt(device.version) >= 7)
        $("footer").css("padding-bottom","20px");
    
    app.receivedEvent('deviceready');

,

这就是我将 Cordova 3.0 + jQuery Mobile + iscrollview 应用程序移植到 Xcode 5 + iOS7 的全部内容。 希望对你有帮助。

【讨论】:

@soloman ..第 2 步 self.window.frame = CGRectMake(0,20,self ... 工作得很好,谢谢,但第 3 步没有效果,它进入如果条件确定,但页脚仍然隐藏,有什么想法吗?我正在使用cordova 2.7 @Bonnie Hi Bonnie,这可能与 1)jqm 版本有关,它为页脚提供基本样式,2)您是否使用可能影响页脚定位行为的 iscrollview,3)css"padding-底部”应用得当。我想你可以尝试应用 $("footer").css("padding-bottom","20px") 一些更多的地方而不是只在 onDeviceReady 中,如果可以有任何效果,那么可以确认没有正确应用的问题,然后可以有一个更清晰的愿景进行调试。【参考方案4】:

我正在使用 Cordova 2.9 和 XCode 5,并且工作“几乎”完美,代码可以编译,甚至可以部署到手机上。

我发现的唯一问题是状态栏现在显示在应用程序上方,因为新的全屏模式。

更多信息您可以查看PhoneGap and Cordova with iOS 7

【讨论】:

以上是关于PhoneGap/Cordova + iOS7 + XCode 5的主要内容,如果未能解决你的问题,请参考以下文章

iOS7 的错误显示带有 phonegap 和 Intel App Framework 的软键盘

iOS 7 状态栏重叠 UI - Cordova 3.0 需要解决方案

使用 phonegap / cordova 更改设备配置文件

Phonegap / Cordova 改变个别声音的音量?

Phonegap/Cordova 中的本地通知

基于 Swift 项目的 PhoneGap/Cordova App