有直接把HTML5网页封装成IOS应用的工具吗

有直接把HTML5网页封装成IOS应用的工具吗,第1张

两种方法,一种是“普通封装+企业签名”,一种是“免签封装”

封装就是将HTML5网页封装成一个APP,安卓封装APP可以直接安装,但是ios系统对应用的安装是有限制的,非App Store下载的应用必须要做苹果签名才能成功安装,所以封装iOS应用后,还需要做一个签名。

另一种是免签封装,这个就比较方便了,这个是专门针对ios系统的,快速封装iOS应用且不需要签名。借助开发者服务平台 *** 作很简单。

免签封装步骤:

百度搜索亥著,只需要提供应用名称、网页网址、应用logo,就可以快速封装成一个ios应用了。

本地文件用:webView.loadUrl("file:///android_asset/XX.html")本地文件存放在:assets 文件中

3.调用Activity的setContentView( )方法来显示网页视图

4.用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面

5.需要在AndroidManifest.xml文件中添加权限,否则会出现Web page not available错误。

<uses-permission android:name="android.permission.INTERNET" />

缺点:如果是载入的是普通网页,没有什么问题,但如果是html5,封装后,在android2.3以上才能正常访问,android2.2及以下,SDK中的WebView还没完全支持HTML5

一、原生框架<JavaScriptCore/JavaScriptCore>

(1)JavaScriptCore: 是一种JavaScript引擎,主要为webKit提供脚本处理能力,可以JS调用OC,也可以OC调用JS

(2) JSContext: 代表了JS的执行环境,通过-evalueScript: 方法就可以执行-- JS代码;

(3) JSValue: 他封装了JS与OC中对应的类型,以及调用JS的API等;

(4) JSExport: 是一个协议,遵守此协议,就可以定义我们自己的协议,在协议中声明的API都会在JS中暴露出来,才能调用

二、交互方法

1.第一种:直接拦截H5页面中点击事件的URL,可以截取这个URL中的参数,进行拼接,然后跳转到自己指定的界面;

#pragma mark ------------ 交互  

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType  

{  

//     直接 截取后面的id  

    NSString *str = request.URL.resourceSpecifier  

    NSLog(@"request.URL.resourceSpecifier = %@",request.URL.resourceSpecifier)  

    NSString *strTwo = [NSString stringWithFormat:@"http:%@",str]  

    NSRange range = [strTwo rangeOfString:@"newbieImg/"]  

    if (range.location != NSNotFound) {  

        NSArray *array = [strTwo componentsSeparatedByString:@"newbieImg/"]  

        NSString *strId = array[1]  

        NSLog(@"strId = %@", strId)  

        CCCCCViewController *courseVC = [[CCCCCViewController alloc] init]  

        courseVC.urlId = strTwo  

        [self.navigationController pushViewController:courseVC animated:YES]  

        return NO  

    }  

    return YES  

}

2.需要与后台也就是写H5的人约定方法。但这里有两种方法,一种是JS调用OC, 一种是OC调用JS

(1)JS调用OC,并且传递参数

//第一步 添加框架,引入头文件  

#import <JavaScriptCore/JavaScriptCore.h>  

  

@interface WebCenterViewController ()<UIWebViewDelegate>  

@property(nonatomic,strong) UIWebView *webView  

//第二步 声明属性  

@property (nonatomic, strong) JSContext *context  

  

@end

第三步,就需要知道后台指定的方法是什么了,比如

test1是一个无参数的方法,test2是一个有参数的方法,这时我们就可以在webView网页加载完毕的那个方法中写到:

#pragma mark ------------ webView加载完毕  

-(void)webViewDidFinishLoad:(UIWebView *)webView  

{    NSLog(@"网页加载完毕")  

    //在网页加载完成后,获取每个参数  

    //获取JS的运行环境  

    _context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]  

    //JS调用无参数OC  

    __weak WebCenterViewController *weakSelf = self  

    _context[@"test1"] = ^() {  

        [weakSelf methond]  

    }  

      

    //JS调用有参数的OC  

    _context[@"test2"] = ^() {  

    //用数组接收传过来的多个参数  

        NSArray *paramArray = [JSContext currentArguments]  

        //然后取出相对应的值  

        NSString *str1 = paramArray[0]  

        NSString *str2 = paramArray[1]  

        [weakSelf methondParam:str1 withStr:str2]  

    }  

      

  

}  

  

//无参数的方法  

- (void)methond {  

    NSLog(@"调用无参数的方法")  

  

}  

  

//有参数的方法  

- (void)methondParam:(NSString *)str1 withStr:(NSString *)str2 {  

    NSLog(@"str1 = %@, str2 = %@", str1, str2)  

}

注意::::调用的方法名test1,test2,一定要和html中的保持一致!!!!!!

(2)OC调用JS  , OC 向 JS 传递参数

只需要在点击方法中,初始化所要传递的对象,然后,利用stringByEvaluatingJavaScriptFromString此方法进行传参数:

#pragma mark ------------ OC 调用 JS  

/* 

 1. OC 调用 JS  只需在所需要传值的地方获取到JS中的点击方法即可 

 例如: 点击方法是下面的这个 functionAction 

 */  

  

- (void)functionAction {  

    //如果需要传递参数 给 JS,则初始化参数  

    NSString *str2 = @"1234mkfg"  

    NSString *str3 = @"kdsfj"  

    //传参数  

    [_webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"func('%@', '%@')", str2, str3]]  

}</span>  

</span>


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/7050576.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-01
下一篇2023-04-01

发表评论

登录后才能评论

评论列表(0条)

    保存