iOS集成H5+SDK (MUI)框架

1. 下载HTML 5+SDK。

2. SDK目录说明

HBuilder-Hello:离线打包演示应用

HBuilder-Integrate:插件开发和5+SDK集成示例应用

Feature-iOS.xls:iOS平台各扩展Feature API对应的库文件列表;

打开Xcode,创建新工程,选择“Single View Application”


创建工程-01

添加创建工程的名称(注意:最好不要填中文或特殊字符)


创建工程-02

复制HBuilder-Integrate工程的AppDelegate和ViewController文件覆盖新创建工程的相应文件。

复制HBuilder-Integrate工程的PluginTest、WebAppController、WebViewController文件拖到新创建工程里面。


3. 工程添加5+SDK必须的配置

    3.1 引入5+SDK静态库

        (1)首先在工程的Build Setting -> Linking -> Other Linker Flags 双击该项在打开的下拉列表中添加“-ObjC”。

3-1-01

    (2)  拷贝以下文件到新创建工程目录下

    iOS-SDK/SDK/Bundles/PandoraApi.bundle

    iOS-SDK/SDK/control.xml

    iOS-SDK/SDK/Libs/libcoreSupport.a

    iOS-SDK/SDK/Libs/liblibPDRCore.a

    iOS-SDK/SDK/Libs/liblibUI.a

    然后将以上的文件拖动到Xcode工程内。(本案例没有添加control.xml,因为没有采用离线打包集成方式)

(3)设置静态库搜索路径,在工程的target->Build

Settings->Library Search Paths,双击打开下拉列表,鼠标左键按住静态库所在目录,拖到下拉列表内即可


3-3-01

        (4)设置Enable BitCode 在工程里target->Build Settings- 搜索框中输入 Bitcode 将Enable Bitcode 设置为NO


3-4-01

    2、  引入5+SDK头文件

       拷贝IOS-SDK/SDK/inc目录到新创建工程目录下,并添加到工程内。

        文件夹类型选择“Create Groups”。


3-2-01

修改头文件搜索路径

点击Project->TARGETS->Build Settings搜索"Header Search Paths",

双击搜索到的"Header Search Paths"项,将工程目录下的inc目录拖到打开的下拉框


3、 引入5+SDK资源文件

PandoraApi.bundle文件:5+SDK所需要的资源,此文件必须添加否则5+SDK将无法正常运行。

3-3-01

control.xml文件:文件中配置了默认启动应用的APPID,如使用离线打包方式则需要添加此文件,如使用Widget或者Webview方式集成则不需要添加此文件。(备注: 本人工程暂时没有添加这项,因为我主要以Widget方式集成)

 添加5+ WebApp

(1)拷贝应用资源到Xcode工程

离线打包需要将应用资源拷贝到Xcode工程内,

注意:Pandora目录为folder references引入方式,修改后不会自动更新,需要在模拟器或设备删除应用后再重新运行 注意:拷贝到Pandora目录的www目录中manifest.json需要删除注释

在工程目录下创建“Pandora/apps/[appid]/www”目录,并将所有应用资源拷贝到其下的www目录中。

拖动“Pandora”目录到Xcode工程内,并选择“Create folder referneces”

添加后工程内的Pandora目录为蓝色


4、  info.plist文件配置

在Info.plist中添加App Transport Security Settings类型Dictionary。

在App Transport Security Settings下添加Allow Arbitrary Loads类型Boolean,值设为YES


4-1-01

5、  添加系统库

在target->Build Phases->Link Binary With Libraries 添加依赖库

5-1-01 

系统库

CoreText.framework     ImageIO.framework    JavaScriptCore.framework    WebKit.framework     CoreTelephony.framework

MobileCoreServices.framework    SystemConfiguration.framework     MediaPlayer.framework      AudioToolbox.framework

Security.framework    QuartzCore.framework    CFNetwork.framework     Foundation.framework      CoreFoundation.framework

CoreGraphics.framework     UIKit.framework     libstdc++.6.dylib     libxml2.dylib        libz.dylib       libsqlite3.0.tbd

    (2)修改control.xml文件

        如是离线打包工程则需要将应用资源拷贝到Xcode工程内,并需要同时修改control.xml文件

        打开工程目录下的control.xml文件,修改appid值。

        修改control.xml文件的appid节点值为mainfest.json文件的id节点下内容,appver节点内容修改为manifest.json文件的version-      >name节点下内容。

6-2-01  


6-2-02


    6-2-03

如以上三图红圈标记位置都要一致

运行时如果提示“打包时未添加XXX模块”,请参考SDK/Feature-ios.xls文件,查找对应插件名需要引入的5+库文件和系统库文件,添加到工程即可

二集成

如果需要在Xcode工程内引入5+SDK,可以使用Widget集成方式或者使用Webview集成方式,Widget集成方式支持所有的H5+扩展功能,WebView集成功能支持除plus.webview API外所有的扩展功能。在使用中,如果需要显示多个H5页面,建议使用Widget集成方式,如果只有一个H5页面,建议使用WebView集成方式

集成5+SDK必须要引入的库文件和资源文件

2

注意:如使用离线打包还需要引入control.xml文件并配置默认启动的APPID

5+静态库文件


3

  WebApp集成方式

1 设置5+SDK运行模式

在工程的AppDelegate类的添加代码,当应用启动时设置5+SDK的运行模式

-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

    //设置当前SDK运行模式

  return [PDRCore initEngineWihtOptions:launchOptionswithRunMode:PDRCoreRunModeAppClient];

}

在应用退出时添加销毁5+SDK运行环境

- (void)applicationWillTerminate:(UIApplication *)application{

[PDRCore destoryEngine];

}

启动5+运行环境

-(void)Start5pEngineAsWidget

{

    //设置WebApp所在的目录,该目录下必须有mainfest.json

    NSString* pWWWPath =[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"Pandora/apps/HelloH5/www"];

    //如果路径中包含中文,或Xcode工程的targets名为中文则需要对路径进行编码

    //NSString* pWWWPath2=  (NSString*)CFURLCreateStringByAddingPercentEscapes( kCFAllocatorDefault,(CFStringRef)pTempString, NULL, NULL, kCFStringEncodingUTF8 );

    //设置5+SDK运行的View

    [[PDRCore Instance]setContainerView:_containerView];

    //传入参数可以在页面中通过plus.runtime.arguments参数获取

    NSString* pArgus =@"id=plus.runtime.arguments";

    //启动该应用

    pAppHandle = [[[PDRCoreInstance] appManager] openAppAtLocation:pWWWPathwithIndexPath:@"index.html" withArgs:pArgus withDelegate:nil];

    //如果应用可能会重复打开的话建议使用restart方法

//[[[PDRCore Instance] appManager]restart:pAppHandle];

}

3  WebView集成方式

       1设置5+SDK运行模式

在工程的AppDelegate类的添加代码,当应用启动时设置5+SDK的运行模式

-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

    //设置当前SDK运行模式

  return [PDRCore initEngineWihtOptions:launchOptions withRunMode: PDRCoreRunModeWebviewClient];

}

在应用退出时添加销毁5+SDK运行环境

- (void)applicationWillTerminate:(UIApplication *)application{

[PDRCore destoryEngine];

}

启动5+运行环境

-(void)Start5pEngineAsWebView{

    PDRCore*  pCoreHandle = [PDRCoreInstance];

    if(pCoreHandle !=nil){

        // 单页面集成时可以设置打开的页面是本地文件或者是网络路径

        NSString*pFilePath = [NSStringstringWithFormat:@"file://%@/%@",[NSBundlemainBundle].bundlePath,@"Pandora/apps/HelloH5/www/plugin.html"];

        // 如果路径中包含中文,或Xcode工程的targets名为中文则需要对路径进行编码

        //NSString*pFilePath =  (NSString*)CFURLCreateStringByAddingPercentEscapes( kCFAllocatorDefault,(CFStringRef)pTempString, NULL, NULL, kCFStringEncodingUTF8 );

        CGRectStRect =CGRectMake(0,20,self.view.frame.size.width,self.view.frame.size.height-20);

        appFrame= [[PDRCoreAppFramealloc]initWithName:@"WebViewID1"loadURL:pFilePathframe:StRect];

        // 单页面运行时设置Document目录

        NSString*pStringDocumentpath = [NSStringstringWithFormat:@"%@/Pandora/apps/HelloH5/www/",[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES)objectAtIndex:0]];

        [pCoreHandle.appManager.activeApp.appInfosetWwwPath:pStringDocumentpath];

        [pCoreHandle.appManager.activeApp.appWindowregisterFrame:appFrame];

        [_containerViewaddSubview:appFrame];

    }

}


运行时如果提示“打包时未添加XXX模块”,请参考SDK/Feature-ios.xls文件,查找对应插件名需要引入的5+库文件和系统库文件,添加到工程即可

你可能感兴趣的:(iOS集成H5+SDK (MUI)框架)