ios html5上架,iOS原生集成H5+详细流程
iOS原生集成H5+
集成方式
独立应用方式集成
Widget方式集成
WebView方式集成
可以打开官方链接: 选择 5+SDK -> 5+SDK集成 -> 平台 下查看集成方式
独立应用方式: 官方Demo中的实现, 独立的App, 感觉上和直接在HBuilder创建App相同, 可以方便证书导入这些步骤吧
Widget方式: 模块部分的扩展使用
WebView方式: 单独界面的扩展使用
白皮书原话: 在使用中,如果需要显示多个H5页面,建议使用Widget集成方式,如果只有一个H5页面,建议使用WebView集成方式
集成过程
导入SDK相关文件
Snip20170507_10.png
Snip20170507_6.png
导入Pandora相关文件
Snip20170507_13.png
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: 的错误提示
屏幕快照 2017-05-06 23.14.25.png
首先使用官方文档
屏幕快照 2017-05-06 23.14.57.png
导入对应库
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];
});
相关资源链接
ios html5上架,iOS原生集成H5+详细流程相关推荐
- ios html5上架,IOS免签封装,完美解决H5应用上架App Store受阻的尴尬
通过H5封装成IOS的应用在初期的确受到了广大开发者们的追捧,因为只需要有H5网站就可以通过WEBAPP框架在几分钟内生成一个IOS的APP应用,几乎不需要什么成本.而对于普通玩家来说,在一些专业IO ...
- cordova打包ios到上架AppStore全过程记录(无敌详细)
前言 上一篇已经讲了cordova打包android app的全过程,在这里关于打包ios的过程就尽量简单说一下了. ios重点就是配置开发者证书的一些东西稍微复杂一点,下面图文详细的一步步操作. i ...
- ios html5缩小,IOS H5页面图片点击捏合放大缩小
方式是以注入JS代码的方式,遍历所有的图片img标签,然后通过js获取到图片的url地址,然后自己再做点击弹出图片页面和添加捏合手势,代码如下(方法来自网络,从他人出学习来的,原文章地址找不到了... ...
- ios html5 exif,IOS中html5上传图片方向问题解决方法
// @param {string} img 图片的base64 // @param {int} dir exif获取的方向信息 // @param {function} next 回调方法,返回校正 ...
- ios html5 app上架,H5封装的IOS应用上架App Store被拒怎么办
原标题:H5封装的IOS应用上架App Store被拒怎么办 H5封装的IOS应用如果上要架到App Store几乎是无望,原因是苹果官方为了保证App Store应用商店上的APP优量和更好的体验, ...
- html5调用原生android,h5调用IOS/安卓原生方法,原生调h5方法
之前也总结过h5调用原生的方法,但是写的不全.像调完原生之后,原生往往会有返回值,或者根据返回值的不同回调h5的方法. 1.判断机型 getType() { var u = navigator.use ...
- 【H5+ Quick-cocos2dx整合】之iOS 二 集成H5+ SDK
下载SDK 下载HTML 5+ 离线打包SDK (http://ask.dcloud.net.cn/article/103)点击下载SDK 下载完成后打开可以看到SDK.demo.Feature-iO ...
- 【2014最新】iOS App 提交上架store 详细流程
[2014最新]iOS App 提交上架store 详细流程 一.证书的导出 1.1.前期工作 首先你需要有一个苹果的开发者帐号,一个Mac系统. 如果没有帐号可以在打开http://develope ...
- 2019年苹果iOS App上架详细图文教程
上架基本需求资料 1.苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2.开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa测试上架的完整流程,中途可能会遇到一些报错,一般 ...
最新文章
- Java项目:网上电子书城项目(java+SSM+JSP+maven+Mysql)
- 安全手册(初稿)[转]
- leetcode 483. 最小好进制
- BZOJ:4820: [Sdoi2017]硬币游戏BZOJ:1444: [Jsoi2009]有趣的游戏(高斯消元求概率)
- python定时任务_Python 定时任务最佳实践
- 你有过什么令你难忘的约会经历?
- linux内核调度,Linux内核的三种调度策略
- linux常见问题(lrzszvim乱码crontab用户授权chkconfig)
- 中小企业对Spring Cloud微服务架构实践经验总结的一些思考!
- 如何为开源项目做市场
- 《数据挖掘概念与技术》读书笔记(一)
- 更改Wamp下网站地址栏图标的显示
- 需要在计算机上安装msxml版本 6.0,win10安装不了office 2010提示“MSXML版本6.10.1129.0”怎么办...
- 用Word做一个漂亮的网页
- java socket连接池_Java - Socket连接池
- python两个下划线怎么打_Python中单下划线与双下划线用法总结
- 计算机控制 英文 论文,计算机论文英文翻译
- 典型的AEB误触发场景
- 高校计算机教师swto分析,信息技术课教师专业成长SWOT分析.doc
- 基于wxpy的微信防撤回
热门文章
- linux脚本ls输出到变量中,bash – 将命令输出的错误消息存储到shell变量中
- AM335X 分配大于4M的framebuffer
- C/C++程序员必读的十本书(上)
- debian 升级linux内核,Debian8升级内核到4.5
- mysql行级锁作用_Mysql事务及行级锁的理解
- 郑州升达经贸管理学院计算机专业学费,郑州升达经贸管理学院学费
- 怎么修改提交git是的用户名_Git 修改用户名以及提交邮箱
- python库快速安装_python的pip快速安装代码
- reentrantlock非公平锁不会随机挂起线程?_程序员必须要知道的ReentrantLock 及 AQS 实现原理...
- 【转】一键将Web应用发布到云-Azure Web App!