ios html5上架,iOS原生集成H5+详细流程

iOS原生集成H5+

集成方式

独立应用方式集成

Widget方式集成

WebView方式集成

可以打开官方链接: 选择 5+SDK -> 5+SDK集成 -> 平台 下查看集成方式

独立应用方式: 官方Demo中的实现, 独立的App, 感觉上和直接在HBuilder创建App相同, 可以方便证书导入这些步骤吧

Widget方式: 模块部分的扩展使用

WebView方式: 单独界面的扩展使用

白皮书原话: 在使用中,如果需要显示多个H5页面,建议使用Widget集成方式,如果只有一个H5页面,建议使用WebView集成方式

集成过程

导入SDK相关文件

8cf2139e561c

Snip20170507_10.png

8cf2139e561c

Snip20170507_6.png

导入Pandora相关文件

8cf2139e561c

Snip20170507_13.png

8cf2139e561c

Snip20170507_14.png

修改编译配置

配置Build Setting

搜索 Other Linker Flags , 配置下拉列表中添加-ObjC

搜索 Enable Bitcode, 配置为 NO

配置info.plist, target -> Info

添加NSAppTransportSecurity字段 -> NSAllowsArbitraryLoads为YES

URL Types -> + -> URL Schemes框配置为 * hbuilder*

写调用SDK代码编译, 报错按照错误提示导入库, 直到编译成功

/// AppDelegate

#import "PDRCore.h"

@implementation AppDelegate

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

/// 指定5+SDK的模式

return [PDRCore initEngineWihtOptions:launchOptions withRunMode:PDRCoreRunModeNormal];

}

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

[PDRCore destoryEngine];

}

@end

#import "PDRCore.h"

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

// 独立应用方式加载

// [self start5pAsNormal];

}

/// 满足一些条件调用

- (void)doSomething {

// Widget方式加载

// [self start5pAsWidget];

// WebView方式加载

// [self start5pAsWebView];

}

- (void)start5pAsNormal {

PDRCore *core = [PDRCore Instance];

if (!core) return;

[core setContainerView:self.view];

[core start];

}

- (void)start5pAsWidget {

PDRCore *core = [PDRCore Instance];

if (!core) return;

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

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

// 设置5+SDK运行的View

[core setContainerView:self.view];

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

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

// 启动该应用

_coreApp = [[core appManager] openAppAtLocation:pWWWPath withIndexPath:@"index.html" withArgs:pArgus withDelegate:nil];

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

// [[core appManager] restart:_coreApp];

}

- (void)start5pAsWebView {

PDRCore *core = [PDRCore Instance];

if (!core) return;

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

NSString* pFilePath = [NSString stringWithFormat:@"file://%@/%@", [NSBundle mainBundle].bundlePath, @"Pandora/apps/H5Dome/www/index.html"];

_appFrame = [[PDRCoreAppFrame alloc] initWithName:@"WebViewID1" loadURL:pFilePath frame:CGRectOffset(self.view.frame, 0, 20)];

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

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

[core.appManager.activeApp.appInfo setWwwPath:pStringDocumentpath];

[core.appManager.activeApp.appWindow registerFrame:_appFrame];

[self.view addSubview:_appFrame];

}

@end

匹配 模式(PDRCoreRunMode) 与 启动该模式(how start) 的代码, 否则很容易掉坑里

Demo中其他处理, AppDelegate / ViewController 都可以参照

解决Undefined symbols for architecture xxx: “xxx”, referenced from: 的错误提示

8cf2139e561c

屏幕快照 2017-05-06 23.14.25.png

首先使用官方文档

8cf2139e561c

屏幕快照 2017-05-06 23.14.57.png

导入对应库

8cf2139e561c

Snip20170506_1.png

还有无法匹配的错误, 自行google / baidu

实验结果总结

独立应用方式与Widget方式确实相似, 区别部分

/// AppDelegate中

/// 独立应用方式: 配置为 PDRCoreRunModeNormal

/// Widget方式: 配置为 PDRCoreRunModeAppClient

[PDRCore initEngineWihtOptions:launchOptions withRunMode:PDRCoreRunMode];

/// 配置并启动5+SDK环境

/// 独立应用方式: 直接在启动后的根控制器中设置即可

/// Widget方式: 在需要用启动的位置设置即可

PDRCore *core = [PDRCore Instance];

if (!core) return;

[core setContainerView:self.view];

[core showLoadingPage]; // 展示启动页(读取页)

dispatch_async(dispatch_get_main_queue(), ^(void) {

/// 独立应用方式: 下面俩种都可以开启

/// Widget方式: 必须使用第二种开启

[core start];

// [[core appManager] openAppAtLocation:[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"Pandora/apps/HelloH5/www"] withIndexPath:@"index.html" withArgs:@"id=plus.runtime.arguments" withDelegate:nil];

});

相关资源链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/443145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微型计算机中celeron,微型计算机中常提及的Pentium或Celeron是指其_______

摘要:旋律的起伏,微型心灵感受体和密节奏用机的疏,心两训练入手同时从身方面。细分还可统模、常提讨模式启发为传论模式、式,学生智力模式教学要目一种为主的的发展是以。微型重要组成教育部分)的实习是(。...旋律的起伏&#xff…

计算机选购知识点,笔记本选购知识点,找准自己的需求才是王道

笔记本选购知识点,找准自己的需求才是王道2019-11-07 10:23:030点赞0收藏0评论笔记本电脑是选择应用比较广的电脑类型,不管是什么人群都能够使用它,它可以学习、办公,还可以娱乐,外形小巧易携带,比台式机的…

更改计算机硬盘名字,如何修改盘符 – 磁盘及光驱名称错乱,教你怎么更改回来...

一般情况下,打开“我的电脑”后,我们会看到排在前面是硬盘,紧接着的是光驱,然后是插上去的可移动磁盘或U盘。但有时我们可能会神奇地发现硬盘盘符及光盘驱动器名称及排列错乱了。比如正常情况下C,D,E&#…

计算机用于数据管理经历了,管理系统中计算机应用--期中测验答案

管理系统中计算机应用--期中测验答案 (3页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!17.90 积分期中测验答案期中测验答案 一、一、单项选择单项选择:: 1-5 ACDCC 6-10 CA…

戴尔服务器显示e1810,戴尔服务器提示: PowerEdge2950 E1810 HDD 1 Fault该如何解决?求帮助!!!...

满意答案zxb65000212013.06.16采纳率:41% 等级:12已帮助:6550人如果具有非 RAID SAS 控制器,请卸下硬盘驱动器,然后将另一个可正常工作的硬盘驱动器更换至驱动器托架的位置。 如果问题得以解决,请将硬盘…

小米手机显示流量数据连接到服务器,小米手机流量总不稳定,这三项设置可能你会用到...

原标题:小米手机流量总不稳定,这三项设置可能你会用到小米流量优化三板斧无限君:当我们用数据流量上网的时候,难免会碰到网速慢或不能上网的时候,有时候明明手机正常连接网络也无法访问,如果恰好和朋友开黑…

怎么用dos系统进入服务器,怎么进入dos_如何进入dos的方法(图文介绍)

怎么进入dos_如何进入dos的方法(图文介绍)发布时间:2017-04-10 10:54来源:互联网当前栏目:电脑基础知识怎么进入dosDOS是英文Disk Operating System的缩写,意思是“磁盘操作系统”。它是个人计算机上的一类操作系统。从1981年直到…

wps如何自己制作流程图_WPS小技巧——如何制作炫酷的个性电子简历

大家好,上期内容我们介绍了一个在Word文档中,快速改变顺序排列的小技巧,那今天,再来给大家分享一个利用Excel快速制作电子简历的实用方法吧~首先,选中部分空白单元格,然后给它添加一个外边框来粗化一个制作…

ca开头的车是什么牌子_微电调研 | 把高速车摘了牌子当低速车卖还很普遍

编者:即将出台国家标准和一系列规范政策的低速电动车,再次成为舆论焦点。在争论与博弈中,与低速电动车息息相关的人们——消费者、经销商、社区人民等少有发言机会。他们为什么选择低速电动车?当地的交通生态是怎样的?…

解锁三星bl锁有几种方法_解锁陶瓷砂磨机常见的几种机械密封损坏原因及处理方法发表...

解锁陶瓷砂磨机常见的几种机械密封损坏原因及处理方法相信很多使用过陶瓷砂磨机的客户朋友们都或多或少的遇到过机器在使用过程中出现机械密封损坏的状况,机械密封损坏其实是由多种不同的原因造成的,下面由小编为您解锁几种日常使用中易造成机械密封损坏…

rust 案例_RUST-X气相防锈产品落户中国,助力中国高端制造出口海外

2017年10月25日中圳德兴(北京)防锈材料有限公司成为美国RUST-X中国总经销商。RUST-X采用先进的VCI气相防锈技术自主研发一系列VCI气相防锈产品,产品主要特点是:具有接触防锈和不接触防锈双重保护屏障,所有产品均无毒、环保、可生物降解。RUST-X拥有500多…

eeprom 数据偶尔变成ff_7年前去搞数据科学、放弃天文学,现在我后悔了

萧箫 发自 凹非寺量子位 报道 | 公众号 QbitAI“事情已过去7年,是时候承认了:我对离开学术界感到深深的遗憾。”“这只是我自己的观点,毕竟许多人庆幸离开学术界……”这是一名曾经的天体物理学博士Marcel Haas,在从事了7年数据科…

32位mips运算器logisim_大神教你制作一个简单的16位CPU

如何制作一个简单的16位CPU,首先我们要明确CPU是做什么的,想必各位都比我清楚,百度的资料也很全。。。。。如果想要制作一个CPU,首先得明白下计算机的组成结构(或者计算机的替代品,因为并不是只有计算机有CPU&#xff…

ad20中怎么多选操作改层_在操作系统中CPU是怎么调度的

对于单处理器系统,每次只允许一个进程运行,任何其他进程必须等待,直到CPU空闲能被调度为止,多道程序的目的是在任何时候都有某些进程在运行,以使CPU使用率最大化。CPU-I/O区间周期CPU的成功调度依赖于进程的如下属性&a…

edtext 从右边开始输入 安卓_转换iOS和安卓的视频至任何格式

有时候我们有一些视频在我们的iOS和安卓设备里,不过我们想在更大的荧幕上观看如电脑或电视机,或者要编辑这些视频,怎么办?别担心,万兴优转可以轻松转换您设备里的视频到任意格式。我们支持所有iOS和安卓设备&#xff0…

ansys变形太夸张_航母上的一颗铆钉能换一辆奥迪?太奢侈了

局座张召忠曾在某军事节目中说:“航母上的每一个铆钉,能换一辆奥迪”,此话一出,立马引起了网友们的激烈讨论。要知道一辆奥迪汽车,怎么也要20万元起步,航母上一颗小小的铆钉竟然这么值钱?作为“…

c#url拼接方法名_C# 从1到Core委托与事件

委托与事件在C#1.0的时候就有了,随着C#版本的不断更新,有些写法和功能也在不断改变。本文温故一下这些改变,以及在NET Core中关于事件的一点改变。一、C#1.0 从委托开始1. 基本方式什么是委托,就不说概念了,用例子说话…

linux禁止客户端上传文件_Linux下Shell脚本实现FTP自动上传和下载文件

概述之前测试写的一个脚本,主要是为了实现FTP自动上传和下载文件。大家可以参考下:基础环境配置[rootpxzxdm01 ~]# useradd -d /home/ftp1 ftp1 [rootpxzxdm01 ~]# passwd ftp1 (密码123456)[rootpxzxdm01 ~]# usermod -s /sbin/nologin ftp1 (限定用户f…

python安装requests模块失败_No module named quot;Cryptoquot;,如何安装Python三方模块Crypto...

前两天公司公司老总让我研究怎么用企业微信第三方应用进行官网对接,完成URL回调验证问题。具体如何进行Python 的Django网站与企业微信第三方应用进行回调验证的博客地址为:https://www.cnblogs.com/ws17345067708/p/10522472.html这里讲讲,如…

怎样测量地图上曲线的长度_测量长度的特殊方法

小可爱们,大家好啊~在这里先做个自我介绍吧!我是五色鸟的物理讲师,欣欣老师~以后的每周物理,就由我来为大家分享啦~~快,呱唧呱唧!!今天我们来一起学习一些特殊的测量方法!&#xff0…