1. 下载HTML 5+SDK。
2. SDK目录说明
HBuilder-Hello:离线打包演示应用
HBuilder-Integrate:插件开发和5+SDK集成示例应用
Feature-iOS.xls:iOS平台各扩展Feature API对应的库文件列表;
打开Xcode,创建新工程,选择“Single View Application”
添加创建工程的名称(注意:最好不要填中文或特殊字符)
复制HBuilder-Integrate工程的AppDelegate和ViewController文件覆盖新创建工程的相应文件。
复制HBuilder-Integrate工程的PluginTest、WebAppController、WebViewController文件拖到新创建工程里面。
3. 工程添加5+SDK必须的配置
3.1 引入5+SDK静态库
(1)首先在工程的Build Setting -> Linking -> Other Linker Flags 双击该项在打开的下拉列表中添加“-ObjC”。
(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,双击打开下拉列表,鼠标左键按住静态库所在目录,拖到下拉列表内即可
(4)设置Enable BitCode 在工程里target->Build Settings- 搜索框中输入 Bitcode 将Enable Bitcode 设置为NO
2、 引入5+SDK头文件
拷贝IOS-SDK/SDK/inc目录到新创建工程目录下,并添加到工程内。
文件夹类型选择“Create Groups”。
修改头文件搜索路径
点击Project->TARGETS->Build Settings搜索"Header Search Paths",
双击搜索到的"Header Search Paths"项,将工程目录下的inc目录拖到打开的下拉框
3、 引入5+SDK资源文件
PandoraApi.bundle文件:5+SDK所需要的资源,此文件必须添加否则5+SDK将无法正常运行。
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
5、 添加系统库
在target->Build Phases->Link Binary With Libraries 添加依赖库
系统库
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节点下内容。
如以上三图红圈标记位置都要一致
运行时如果提示“打包时未添加XXX模块”,请参考SDK/Feature-ios.xls文件,查找对应插件名需要引入的5+库文件和系统库文件,添加到工程即可
二集成
如果需要在Xcode工程内引入5+SDK,可以使用Widget集成方式或者使用Webview集成方式,Widget集成方式支持所有的H5+扩展功能,WebView集成功能支持除plus.webview API外所有的扩展功能。在使用中,如果需要显示多个H5页面,建议使用Widget集成方式,如果只有一个H5页面,建议使用WebView集成方式
集成5+SDK必须要引入的库文件和资源文件
注意:如使用离线打包还需要引入control.xml文件并配置默认启动的APPID
5+静态库文件
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+库文件和系统库文件,添加到工程即可