开发环境:
XCode 4.6
Cordova 2.3.0
参考:Embedding Cordova WebView on iOS
准备工作
<1 新建config.xml文件
xml version="1.0" encoding="UTF-8"?> <cordova> <preference name="KeyboardDisplayRequiresUserAction" value="true" /> <preference name="SuppressesIncrementalRendering" value="false" /> <preference name="UIWebViewBounce" value="true" /> <preference name="TopActivityIndicator" value="gray" /> <preference name="EnableLocation" value="false" /> <preference name="EnableViewportScale" value="false" /> <preference name="AutoHideSplashScreen" value="true" /> <preference name="ShowSplashScreenSpinner" value="true" /> <preference name="MediaPlaybackRequiresUserAction" value="false" /> <preference name="AllowInlineMediaPlayback" value="false" /> <preference name="OpenAllWhitelistURLsInWebView" value="false" /> <preference name="BackupWebStorage" value="cloud" /> <plugins> <plugin name="LocalStorage" value="CDVLocalStorage" /> <plugin name="Device" value="CDVDevice" /> <plugin name="Logger" value="CDVLogger" /> <plugin name="Compass" value="CDVLocation" /> <plugin name="Accelerometer" value="CDVAccelerometer" /> <plugin name="Camera" value="CDVCamera" /> <plugin name="NetworkStatus" value="CDVConnection" /> <plugin name="Contacts" value="CDVContacts" /> <plugin name="Debug Console" value="CDVDebugConsole" /> <plugin name="File" value="CDVFile" /> <plugin name="FileTransfer" value="CDVFileTransfer" /> <plugin name="Geolocation" value="CDVLocation" /> <plugin name="Notification" value="CDVNotification" /> <plugin name="Media" value="CDVSound" /> <plugin name="Capture" value="CDVCapture" /> <plugin name="SplashScreen" value="CDVSplashScreen" /> <plugin name="Echo" value="CDVEcho" /> <plugin name="Battery" value="CDVBattery" /> <plugin name="Globalization" value="CDVGlobalization" /> <plugin name="InAppBrowser" value="CDVInAppBrowser" /> plugins> cordova>
新建config.xml文件,添加到项目中。
<2 创建www目录
在项目根目录下,创建文件夹www
在www文件夹下,新建文件index.html文件
范例:
name="viewport" content="width=640, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />
charset="utf-8">
onload="onBodyLoad()">
Hello World!
“Create folder references for any added folder”,添加到项目中
1、添加CordovaLib子项目
cordova-2.3.0/cordova-ios/CordovaLib下,将CordovaLib.xcodeproj拖拽到项目中
TARGET-> Build Settings -> Other Linker Flags,添加 -all_load
和 -Obj-C
TARGET -> Build Phases -> Link Binaries with Libraries,添加一下frameworks:
AddressBook.framework
AddressBookUI.framework
AudioToolbox.framework
AVFoundation.framework
CoreLocation.framework
MediaPlayer.framework
QuartzCore.framework
SystemConfiguration.framework
MobileCoreServices.framework
CoreMedia.framework
TARGET -> Build Phases -> Target Dependencies,添加CordovaLib
TARGET -> Build Phases -> Link Binaries with Libraries,添加CordovaLia.a
TARGET-> Build Settings -> Header Search Path,添加一下项:(注意:带引号) 注意勾选 recursive
"$(TARGET_BUILD_DIR)/usr/local/lib/include"
"$(OBJROOT)/UninstalledProducts/include"
"$(BUILT_PRODUCTS_DIR)"
2、使用
新建CDVViewController子类
示例:
#import#import @interface ViewController : CDVViewController @end
设置该对象的wwwFolderName属性,
startPage属性
示例:
#import "AppDelegate.h" #import "ViewController.h" @implementation AppDelegate - (void)dealloc { [_window release]; [_viewController release]; [super dealloc]; } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; self.viewController = [[ViewController new] autorelease]; self.viewController.wwwFolderName = @"www"; self.viewController.startPage = @"index.html"; self.viewController.useSplashScreen = YES; self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; return YES; } @end
最近做的项目需求 我们的客户端 通过phonegap 来加载其他部门 做的html5 本来 想想中应该不是很困难 但是 实际中却遇到了很多问题 花了差不多1天的时间在解决 所以把所遇到的问题记录下来
1.上面所讲的是集成问题 我用的是2.9最新的版本
2.CordovaLib.xcodeproj 在导入的时候 直接拖进来就好 不要从本地文件夹加载
3.name="viewport" content="width=640, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" /> 这里 是控制 phonegap 加载的HTML5页面的宽度 如果遇到显示的宽度 大于屏幕宽度的时候 就会出现滑动条 解决方法 是修改 config.xml 中 EnableViewportScale 的选项设置为 true
4.archive 打包问题 在打包的遇到 无法编译到 cordovalib.a文件 究其原因 还是路径出了问题 解决方法是 file - project settings 修改Derived date location 为 project-relative 这样 在编译cordovalib.xcodeproj 时候 .a的文件 就会保存到 本项目的DerivedData文件夹中 在Library Search Path 中添加这个路径 就可以正常打包了