DCloud_App_Array
DCloud_App_Array
  • 发布:2014-10-29 15:54
  • 更新:2022-07-23 10:56
  • 阅读:34773

IOS平台以Widget方式集成HTML5+SDK方法

分类:5+ SDK
SDK

5+ SDKWidget方式集成WebView方式集成 将不再继续维护支持,相关功能已迁移到uni小程序 SDK,因此建议开发者尽快将应用升级到uni-app项目。

开发者可参考SDK中示例 “HBuilder-Integrate”
最新SDK下载地址

1 概述

HTML5+ SDK 可以按照“独立应用”、“Widget”和“WebView”三种方式进行集成,三种集成方式各有优点。
独立应用集成方式:使用独立应用方式,开发者需要将HTML5+SDK生成的首页面设置为当前View的subView。HTML5+ SDK将对应用进行管理。
Widget集成方式:运行方式和独立运行方式类似,开发者在集成时可在需要的位置启动HTML5+ SDK,显示指定的HTML5+应用。原生App中集成uni-app也需使用本集成方式。
Webview集成方式:用户可在任何页面将HTML5+ SDK的页面以Webview的形式独立显示,显示的Webview页面。

2 导入SDK Lib文件和头文件

在工程中引入HTML5+ SDK扩展功能的.a文件,开发者可以根据需求添加不同的扩展插件。必须要引入的是liblibPDRCore.a,liblibUI.a,liblibNativeUI.a,liblibNavigator.a,libcoreSupport.a,这几个库是HTML5+SDK运行的基础库文件。
注意: 开发者在使用示例工程时建议不要把工程从SDK目录里挪出来,如果要移动工程可以通过修改library search path ,framework search path 和head search path来解决报错。


工程中引入HTML5+ SDK 中提供的头文件。

3 添加代码编译测试

  1. 开发者初始化PDRCore句柄。
  2. 设置指定的View为HTML5+ SDK的父View,用于显示HTML5+ SDK的页面
  3. 调用PDRCore接口设置要启动应用的APPID
  4. 调用PDRCore句柄的start接口启动应用,HTML5+ Runtime将会根据用户 指定APPID启动指定的应用
- (void)viewDidLoad  
{  
[super viewDidLoad];  
PDRCore* pCoreHandle = [PDRCore Instance];  
[pCoreHandle setContainerView:self.view];  
[pCoreHandle setAutoStartAppid:@"HelloH5"];  
[pCoreHandle start];          
}

4 导入应用并配置

4.1 添加应用

在离线打包之前,用户需要将已经开发完成的HTML5+ 应用导入到Xcode工程中。

4.1.1 应用导入

需要将开发完成的HTML5+ 应用拷贝到Pandora/apps/[appid]/www目录下。

4.1.2 manifes.json文件编写

请参考manifest.json 文件配置指导手册

4.2 配置应用的插件功能

开发者需要将html5+ SDK里的PandoraAPI.bundle引入到开发中的工程中。开发者如开发了HTML5+扩展插件,需要修改PandoraAPI.bundle下的feature.plist文件,在文件中添加扩展插件JS类名和原生类名的对应关系。

6 常用类说明

PDRCore

常用接口说明:

+ (PDRCore*)Instance;

获取Core单例对象
返回值:
PDRCore 单例的PDRCore对象

- (int)setAppsRunPath:(NSString*)workPath;

设置应用运行时目录,应用运行时产生的文件在该目录下生成,当应用 runmode为liberate时将把资源拷贝到该目录
参数说明:
workPath 应用运行时目录
返回值:
int 0 成功

- (int)setAppsInstallPath:(NSString*)installPath;

设置runtime应用的安装目录,该地址为安装包中携带的应用资源位置
参数说明:
installPath 应用的安装目录
返回值:
int 0 成功

- (void)setInnerVersion:(NSString*)innerVersion;

设置HTML5+ SDK运行版本
参数说明:
HTML5+ SDK运行版本号

- (int)setDocumethPath:(NSString*)documentPath;

设置HTML5+ SDK文档目录
参数说明:
documentPath 应用的文档目录
返回值:
int 0 成功

- (int)setDownloadPath:(NSString*)downlaodPath;

设置runtime下载目录
参数说明:
downloadPath 应用下载文件的路径
返回值:
int 0 成功

- (int)setAutoStartAppid:(NSString*)appid;

设置runtiem启动时自动运行的APP
参数说明:
appid 默认启动应用的APPID
返回值:
int 0 成功

- (int)setContainerView:(UIView*)containerView;

设置runtime根视图的父亲View
参数说明:
containerView 要显示HTML5+SDK的父View
返回值:
int 0 成功

- (PDRCoreApp*)openAppWithAppid:(NSString*)appId  
                       withArgs:(NSString*__nullable)args  
                   withDelegate:(id<PDRCoreAppWindowDelegate>__nullable)delegate;

@param appId appId
@param args 传入启动参数,可以在页面中通过 plus.runtime.arguments 参数获取
@param delegate 代理
@return PDRCoreApp实例对象

- (int)regPluginWithName:(NSString*)pluginName  
             impClassName:(NSString*)impClassName  
                    type:(PDRExendPluginType)pluginType  
               javaScript:(NSString*)javaScript;

注册第三方扩展的HTML5+插件
参数说明:
pluginName 插件名称JS文件中定义的名字
impClassName 插件对应的实现类名
pluginType 插件类型 详情: PDRExendPluginType
javaScript js实现 为javascript文本
返回值:
int 0 成功

- (int)start;

正常启动runtime,使用改方法启动runtime具有全部功能,包括具有应用管理、窗口管理、插件管理、权限管理、资源管理等功能

- (int)startAsWebClient;

启动runtime,使用该方法启动的runtime不具有应用管理窗口管理功能,当需要显示页面时,需要自己创建PDRCoreAppFrame

PDRCoreAppFrame

常用接口说明

- (PDRCoreAppFrame*)initWithId:(NSString*)frameID loadURL:(NSString*)pagePath  frame:(CGRect)frame;

创建runtime页面
参数说明:
frameID 页面标示
pagePath 页面地址 支持http:// file:// 本地地址
frame 页面位置

@property(nonatomic, readonly)UIWebView *webView;

应用页面的WebView对象

1 关注 分享
Trust

要回复文章请先登录注册

5***@qq.com

5***@qq.com

ios 集成过程中遇到很多坑,可分享 QQ523398569
2018-01-24 16:15
1***@qq.com

1***@qq.com

为什么我按照iOS平台5+SDK技术白皮书上面和开发文档一步一步集成 最后报静态库错误,怎么解决?
2017-09-07 17:43
骁骑

骁骑

回复 1***@qq.com :
是不是更新SDK的时候只替换了部分静态库文件? 更新的时候需要用同一个版本的库文件,并且要更新pandoraApi.budnle文件
2017-08-16 16:39
1***@qq.com

1***@qq.com

报错:[__NSCFString JSONValue]: unrecognized selector sent to instance 0x600000032140',是不是少了哪个库了
2017-08-12 22:44
limo

limo

iOS 这块 都没人用这个了吗
2016-12-05 18:13
熊猫123

熊猫123

回复 追沐 :
我也出现这个问题,请问你是怎么解决的
2016-07-06 15:59
指尖星光

指尖星光

回复 骁骑 :
谢了啊
2016-06-16 16:07
骁骑

骁骑

回复 指尖星光 :
检查一下几个地方
1 工程target是否是中文的,如果是中文的需要对地址进行编码
2 引入资源文件的时候需要选择Create Folder references,资源加入到工程后目录会变成淡蓝色的
2016-06-16 11:52
指尖星光

指尖星光

集成完之后,我跳网页 怎么出现了一个哭脸的图片,下面是We‘re sorry ...,这个下面是三个按钮 Back、Close、Restart。有谁遇到过这种情况吗?求解。。。谢谢
2016-06-14 14:38
指尖星光

指尖星光

回复 骁骑 :
这个也设置完了
2016-06-07 09:28