IOS 集成 phonegap

开发环境:

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文件

范例:

按 Ctrl+C 复制代码

   

       

        

        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 中添加这个路径 就可以正常打包了


你可能感兴趣的:(IOS,iOS)