ios混合开发_android ios混合开发 - CSDN
精华内容
参与话题
  • iOS混合开发调试秘籍

    千次阅读 2020-03-30 19:13:54
    在进行混合开发的时候(H5&&iOS),进行联合调试很是让我们开发者头疼,为了锁定问题所在,H5小伙伴没少打alert,我们这边也没少打log日志,很是麻烦,下面给大家说一下我的新发现。轻松解决混合开发中的调试问题。1...

      在进行混合开发的时候(H5&&iOS),进行联合调试很是让我们开发者头疼,为了锁定问题所在,H5小伙伴没少打alert,我们这边也没少打log日志,很是麻烦,下面给大家说一下我的新发现。轻松解决混合开发中的调试问题。

    1.不一样的safari

    作为iOS开发者,我想大家对safari都不陌生,但是通过了解发现真正使用过,safari开发者功能的是少之又少。下面先给大家简单说一下safari的开发者功能。步骤 ->打开safari浏览器 ->选中工具栏中的safari中的偏好设置,如下图:
    这里写图片描述
    然后如下图:这里写图片描述
    选中在菜单栏显示“开发”菜单

    2,进入调试模式

    一切准备就绪,先下载一个我两年前的一个混合开发的 小demo,带回就以这个demo来进行演示如何调试。demo 下载地址
    1,运行程序,将打印出的脚本沙盒路径,复制粘贴到safari浏览器打开[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b2uM3WJJ-1585566794719)(https://img-blog.csdn.net/20170302192714447?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFuaGFpbG9uZzE4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)]
    格式如下:

    file://复制的沙盒路径
    

    然后进入相关页面 选择在工具栏选择:开发->进入响应式设计模式->打开web检查器,然后按照下图的流程打断点就可以调试咯。

    这里写图片描述

    这里写图片描述

    根据上图,大家就可以轻松愉快的进行调试了,而且即使是发布在web站点的,也可以哦,是不是特别的便利哦。

    现在safari更加的强大,可以直接选择模拟器,然后就可以看到模拟器上的运行效果,可以调试js代码了。

    展开全文
  • iOS混合开发之一

    2017-12-06 14:28:01
    1,iOS 9以上的话很简单直接使用 NSURL *fileURL = [NSURL fileURLWithPath:path]; [myWebView loadFileURL:fileURL allowingReadAccessToURL:fileURL]; 2,iOS 8的话WKWebView直接加载的话是不行的,控制台会...

    WKWebView加载html文件

    1,iOS 9以上的话很简单直接使用

    NSURL *fileURL = [NSURLfileURLWithPath:path];

    [myWebViewloadFileURL:fileURLallowingReadAccessToURL:fileURL];

    2,iOS 8的话WKWebView直接加载的话是不行的,控制台会打印

    Could not create a sandbox extension for '/'

    需要把本地的文件拷贝到temp目录下面,然后再加载temp下面的目录

    下面方法是将本地文件拷贝到temp目录下面,filePath是文件的目录


    使用方法:


    在ios8系统上运行后可看到文件都加载出来了,看文件目录也拷贝进去了。


    最后说一句,文件包含了很多js、css文件,如果只是拷贝html,样式等都是没有用的,所以需要把整个文件拷贝到temp里面。




    展开全文
  • 作为一个iOS开发,项目已经写了一年,真尼玛感觉蛋疼,好无语有没有,好想吐槽项目经理,产品经理,高高在上的老总!想啥呢,都一年了,就算项目某些功能没定下来,咱们就不能拐个歪想别的吗? 这个项目我们iOS和...

    先容我用文字吐槽下我们哩得(Leader :领导)

    作为一个iOS开发,项目已经写了一年,真尼玛感觉蛋疼,好无语有没有,好想吐槽项目经理,产品经理,高高在上的老总!想啥呢,都一年了,就算项目某些功能没定下来,咱们就不能拐个歪想别的吗?

    这个项目我们iOS和Android只是简单的外壳,里面大部分功能是H5来写的,iOS和Android做了离线缓存、清除缓存、调用相机相册、联系人(系统都有我们写)、与h5的交互、分享、推送等,因为我们写的不多,基本都是在等前端那边。

    问:为什么你们写这么少,答:项目经理开会时明确表明,功能能由前端做就用前端! 我们自然很开心,但是进度真的很慢

    海燕呐,你就上点心吧!这都多久了,给大伙紧紧发条吧~~~这样项目做下来真的很累,心累啊!

    本人程序员,话也不多!接着记录下自己遇到的问题吧,虽不是什么大问题,好记性真不如烂笔头,况且我记性真不好!

    上面也说到了我大概都写了什么功能一个一个记录吧

    在做离线缓存的时候用的是NSURLProtocol,当时想着uiwebview加载的就是URL,应该不难吧,但是,我在这鼓弄了好几周!原因是H5这框架,在每个路由后面都加了版本号与时间戳,版本号应该是框架的版本号,但是你为什么加时间戳呢,我翻看了框架的代码,发现代码注释上的意思是框架带缓存,应该是只支持在线缓存,离线缓存没有。加时间戳可能是为了缓存吧,但是当时我做缓存的时候不知道,亲眼看着缓存文件都在,缓存也成功了,但是断网死活不出来,度娘快问烂了,别人的代码也看了很多遍,感觉就是没问题。最后问了技术总监,说你看看断网下拿缓存文件的路径对不对,也试了,没问题!,额~~基本想放弃了,但实在没招了,也不能不做缓存啊,开始看H5框架,发现了时间戳与版本号,试着把.CSS   .JS等后面的全部截掉,然后。。然后。。然后缓存界面出来了,我擦,当时把我激动的不要不要的!真的很激动。事后总结了下,是我意志不坚定,心不在焉,做事坚持不住!其实这个问题不是很难,重点是发现问题所在,当时要是多看几眼控制台打印的东西,就不用花费这么多时间了。但现在缓存还是有点问题,缓存就是把你浏览过的保存下来,但是我在断网前没做过某个操作,在断网的时候我要做这个操作就会行不通,测试提了这个问题,我还不确定怎么弄!

    清除缓存这个基本不用说了吧,就是把存缓存文件的文件夹清空就OK了,我缓存做的是缓存整个工程,没单单缓存图片或是别的!缓存文件过期时间,我是清除缓存的时候保存个时间,当时间>24小时就调用清除缓存。恩~~~ 大概就这样。这里记录下,H5开发的时候会用到本地存储一些东西,一些小数据!好像是用的storage,然后缓存的时候会把storage这个文件也保存到了caches文件夹里,记住,storage文件不能删除,反正我删除后发现,再次打开应用,引导页出来了,登录状态也改为了未登录!

    调系统的功能网上一大堆,这里无非就是用到了交互,给H5开个接口,他们调用就OK了,我在接口里面把要实现的东西写好。

    交互用的就是JavaScriptCore,添加系统库,实现JSExport协议的协议,然后写接口,你写好的接口名和H5写的接口名要丝毫不差,不然就调用失败,定对象,搭桥!我就不想多写了,网上写的比我详细多了,就算我写了也是吧 别人的搬过来的,毕竟口才不好,

    分享没什么好说的,有demo,集成跟着一步步走OK了,

    推送用的是极光,这里需要记录下,这是应用未打开的处理方法,创建个通知中心,在需要实现的controller接收这个通知,然后跳转到相应页面

    didFinishLaunchindidFinishLaunchingWithO

    if (launchOptions) {
            NSDictionary * remoteNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
            //这个判断是在程序没有运行的情况下收到通知,点击通知跳转页面
            if (remoteNotification) {
                NSLog(@"appdelegate未打开应用推送消息==== %@",remoteNotification);
                //创建一个消息对象
                NSNotification * notice = [NSNotification notificationWithName:@"RootViewController" object:nil userInfo:remoteNotification];
                //发送消息
                [[NSNotificationCenter defaultCenter]postNotification:notice];
                
            }
        }
    //添加当前类对象为一个观察者,接收应用未打开情况下收到的通知
        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(notice:)
                                                     name:@"RootViewController"
                                                   object:nil];
    -(void)notice:(NSNotification *)sender{
        
        NSLog(@"未打开应用收到的推送消息:%@",sender);
        NSString *urlSs = [sender.userInfo objectForKey:@"url"];
        
        ViewController *vi1 = [[ViewController alloc]init];
        vi1.urlString = urlSs;
        [self presentViewController:vi1 animated:YES completion:nil];
        
    }

    一种应用已经打开,但是在后台运行

    一种正在使用应用时收到推送消息,用提醒框来做的

    //极光消息接收方法
    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
        [JPUSHService handleRemoteNotification:userInfo];
        NSLog(@"收到通知:%@", [self logDic:userInfo]);
        
        [application setApplicationIconBadgeNumber:0];
        if (application.applicationState == UIApplicationStateActive) {
            NSString *alertStr = [userInfo objectForKey:@"url"];
            //APP正在运行时,推送过来消息的处理
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示"
                                                            message:alertStr
                                                           delegate:self
                                                  cancelButtonTitle:@"取消"
                                                  otherButtonTitles:@"查看消息",nil];
            [alert show];
            
        } else if (application.applicationState == UIApplicationStateInactive ) {
            
            //APP在后台运行,推送过来消息的处理
            [self goToMssageViewController:userInfo];
        }
        
    }

    - (void)goToMssageViewController:(NSDictionary *)dic{
        
        NSString *urlS = [dic objectForKey:@"url"];
        ViewController *vi = [[ViewController alloc]init];
        vi.urlString = urlS;
        [self.window.rootViewController presentViewController:vi animated:YES completion:nil];
    }

    极光推送基本就是这三种情况,我简单试了下,可行!


    还有些问题就是H5与我们配合写的了,像web页面,解决了键盘遮挡输入框问题,但是键盘弹出来,导航栏也跟着页面往上跑了,想要的效果就是键盘弹出来,导航栏不动,也要解决键盘遮挡输入框的问题,Android是解决了,但是iOS怎么滴都不行,H5的方法在iOS上不能用,目前还在解决中

    webview加载一个百度网址,在uiwebview上写一个按钮,按钮放在任意位置,按钮点击事件里面写上self.webview reload; 第一次加载时,断网加载,走错误代理方法,页面显示白屏和按钮,这时候吧网络打开,确定为有网状态,点击按钮,重新加载。。。。。。,webview会吧百度网址加载出来吗?答案是不会,webview不知道要load什么URL。这是问题就是你在断网情况下运行工程,然后重新加载webview失败的问题,不遇到这问题真的以为会重新加载成功

    本人也是正在学习阶段的iOS开发工程师,意在记录自己所遇到的问题,当然如果能帮助到大家我也非常高兴,文采有限。。。。不喜勿喷,谢谢!


    展开全文
  • iOS混合开发研究

    2019-05-09 18:06:58
    iOS-Hybrid写给移动开发者的 React Native 指南Cordova教程在已有 Xcode 项目中 加入Cordova框架
    展开全文
  • 在进行web与安卓,iOS混合开发时,由于业务需求,需要web与原生相互调用方法。 当安卓,IOS调用web方法时候,如果没有用Vue框架或者其他JS框架,那么web不需要额外操作,若是你使用了Vue框架,那么,你要在vue生命...
  • 混合 APP 开发(Hybrid App)

    千次阅读 2019-04-20 21:18:37
    混合 App Html5简介 UIWebView 和 WKWebView UIWebView 和 JS 交互 WKWebView 和 JS 交互 JS 调用 Native 相机 一. 混合 APP Hybrid Mobile App 可以理解为通过 Web 网络技术(如 HTML,CSS 和 JavaScript)...
  • Hybird APP (混合开发)简介

    万次阅读 2019-03-07 11:26:45
    写了几个 APP,最初是打算用纯 Native 的,可是我自身的 Android...还好有前辈指点了一下,可以采用 Hybrid APP(混合开发),一路磕磕绊绊的完成了项目。看了不少资料,从菜鸟的角度来总结下 Hybrid APP(混合开发)。
  • iOS原生与H5交互开发

    千次阅读 2017-04-20 10:56:49
    参考链接:iOS开发-基于原生JS与OC方法互相调用并传值(附HTML代码)iOS与HTML5交互方法总结浅谈UIWebView,HTML5与Native的混合开发iOS 开发之 原生+html5混合开发 [[ 方法互调 ]]iOS与HTML5交互方法总结基于HTML5...
  • 完全征服React Native

    万人学习 2018-10-22 21:38:05
    React Native是Facebook于2015年推出的跨平台开发工具,可用于开发Android和iOS App,并且同时具有混合开发的优点(热更新,跨平台)以及本地App的性能。 本课程采用新的ES6开发,主要内容包括ReactNative的基础知识...
  • 最近做 iOS H5 项目,需要针对 iOS 的 webView 做适配,发现几个非常恶心的 bug。 因为现在据统计 iOS7 的占比超过80%,所以适配主要针对 iOS7,但是 iOS7 不同版本缺有不同的 bug,真是让人蛋疼。 iOS 7.0 ...
  • App混合开发(英文名:Hybrid App),是指在开发一款App产品的时候为了提高效率、节省成本即利用了原生的开发技术还应用了HTML5开发技术,是原生和HTML5技术的混合应用。目前App的开发主要包含三种方式:原生开发、...
  • IOS,H5混合开发,setTimeout定时器失效

    千次阅读 2016-11-29 09:31:01
    项目中有需要定时请求服务器,来刷新用户新消息汇总的功能.没有使用第三方推送,暂时用app定时刷新来权宜实现. 安卓版本中使用的Hbuilder开发,使用是全部都是h5页面,不论当前是否是请求服务器的页面,...附带说明,IOS混合
  • android 和ios 混合开发环境安装

    千次阅读 2018-03-20 17:03:58
    1、安装nodejs 官网下载:https://nodejs.org/en/ 下载node-v8.10.0-x64.msi 安装2、安装ionic和cordova(1)、配置淘宝镜像(参考:https://segmentfault.com/a/1190000007448711)npm install -g cnpm -...
  • iOS React Native 混合开发集成React Native

    千次阅读 2017-08-17 09:33:35
     有时候我们并不是需要全部使用React Native,我们想和原生混合开发,那我们应该怎么办呢。 先看一下我集成完之后的项目目录: 首先安装React Native node组件  1、新建一个文件夹如目录中的RN,这个...
  • 转载自:...Flutter是Google用以帮助开发者在Ios和Android两个平台开发高质量原生应用的全新移动UI框架,点击查看Flutter介绍视频。其实我第一次听说Flutter是在收到谷歌开发者公...
  • vue与原生混合开发

    万次阅读 2018-07-06 10:09:08
    前段时间,做了一个混合开发的项目,主要是以vue框架开发h5页面,使用cordova作为中间沟通桥梁,实现了h5与安卓、iOS混合开发,由于从事iOS开发,h5也是刚接触不久,很多深入原理还不太清楚,只说下我们这个个项目...
  • IOS开发之DatePicker控件详解

    万次阅读 2013-09-25 12:45:55
    iOS上的选择时间日期的控件是这样的,左边是时间和日期混合,右边是单纯的日期模式。 ,  您可以选择自己需要的模式,Time, Date,Date and Time , Count Down Timer四种模式。 步骤:1.新建一个Singe View ...
  • 一、了解index.ios.js大家都清楚,React-Native就是在开发效率和用户体验间做的一种权衡。React-native是使用JS开发开发效率高、发布能力强,不仅拥有hybrid的开发效率,同时拥有native app相媲美的用户体验。目前...
  • iOS使用ionic实现混合开发

    千次阅读 2016-01-21 11:17:03
    Mac上使用轻量级的ionic进行混合开发iOS应用
  • 混合开发是js如何调用ios原生方法

    千次阅读 2018-10-02 01:03:57
    混合开发是js如何调用ios原生方法  app开发中,为了更好的功能体验和模块化,可扩展,经常需要在通过原生ios和原生安卓通过webView方式嵌入webapp,  webapp和原生会有通信,webapp调用原生通过js调用原生方法,...
1 2 3 4 5 ... 20
收藏数 25,355
精华内容 10,142
关键字:

ios混合开发