在前一篇文章中我介绍了如何通过 js 与原生代码进行交互(Cordova - 与iOS原生代码交互1(通过JS调用Swift方法)),当时是直接对Cordova生成的iOS工程项目进行编辑操作的(添加Swift类和相关配置等). 原来我也说过,使用 Cordova 进行跨平台应用开发时,不建议直接对生成的各个平台项目进行编辑(除非目前只要开发单一平台版本).比如:html页面应该是编辑Cordova工程根目录下的 www 文件夹内容,再一次编译发布成多个平台项目. 同样的,如果需要实现与系统原生…
在前面的文章中介绍的了如何使用Cordova进行跨平台应用的开发,使用Cordova的话基本上就不需要在写系统原生代码了,只要通过编写html页面和js方法即可. 但在有些特殊情况下,还是是需要html页面能和系统原生代码(ios native code)进行交互.下面介绍如何实现 JS 与 Swift 代码间的相互通信. 假设我们已经建立了一个名叫 HelloWorld 的Cordova工程项目(不太清楚如何使用Cordova的可以参考我前面写的几篇文章:使用Cordova开发iOS应用实战1…
非常早曾经写了一篇博客,总结cordova插件怎么调用到原生代码:cordova调用过程,只是写得太水.基本没有提到原理.近期加深了一点理解,又一次补充说明一下 js调用native 以下是我们产品中的代码片段: datePicker.show(options, function (date) { var month = date.getMonth() + 1; callback(null, date.getFullYear() + "-" + month + "-"…
从c#到objective-c学习 https://www.runoob.com/w3cnote/objective-c-tutorial.html https://www.jianshu.com/p/6328c55ac4b2 http://www.cnblogs.com/wuhuacong/p/3589699.html 进阶 https://www.xuanyusong.com/archives/category/ios/objective-c 网上说的教程太复杂,这里我给个最简单版本的 但是…
1.Unity调用iOS: 1.1.在Unity C#中: [ DllImport( "__Internal" )] private static extern int _showSelectTitleDialog ( string title, string msg); 1.2.在Xcode Objective-C中: extern "C" { int _showSelectTitleDialog(const char *title, const char *ms…
1.RCTBridgeModule #import <Foundation/Foundation.h> #import "RCTBridgeModule.h" #import <React/RCTBridgeModule.h> @interface IOSHandler : NSObject <RCTBridgeModule> @end //~~~~~~~~~~~~~~~~~~~~~~~~~ #import "IOSHandler.h&qu…
function Events() { // 放置所有添加的 监听事件 this._events = {} } Events.prototype = { on: function (name, fn, ...argOrg) { // 必传参数验证 if (!name || !fn) { arguments required`) return } // 阻止重复添加相同的监听 let fns = this._events[name] || [] if(fns.find(item=> item.fn…
原生代码中直接加载页面 1.    具体案例 加载本地/网络HTML5作为功能介绍页 2.    代码示例 //本地 -(void)loadLocalPage:(UIWebView*)webView { NSString* htmlPath = [[NSBundle mainBundle]pathForResource:@"demo" ofType:@"html"]; NSString* appHtml =[NSString stringWithContentsOf…
PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码 看看新闻网>看引擎>开源产品 0人收藏此文章, 发表于8小时前(2013-09-06 00:39) , 已有13次阅读 ,共0个评论 依照我一惯得套路,我会先说一点废话. PhoneGap和Cordova什么关系?为什么有的地方叫Cordova而有的地方叫PhoneGap ?PhoneGap是一款HTML5平台.通过它,开发商能够使用HTML.CSS及JavaScript来开发本地移动应用程序.因此,眼下开…
今天,记录一下iOS原生和React-Native之间的交互.如果第一次接触最好先移步至 http://www.cnblogs.com/shaoting/p/6388502.html 先看一下怎么在iOS原生中集成react-native模块. iOS原生和React-Native之间的交互主要通过NativeModules实现. 先看RN->iOS原生 开发环境版本: 准备: 终端新建一个react-native项目或者使用上一篇文章建立的demo. a.先使用Xcode打开,新建一个Cale…
实际场景 场景:现在有一个H5活动页面,上面有一个登陆按钮,要求点击登陆按钮以后,唤出App内部的登录界面,当登录成功以后将用户的手机号返回给H5页面,显示出来.这个场景应该算是比较完整的一次H5中的JavaScript与App原生代码进行交互了,这个过程,我们制定的方案满足以下几点: 满足基本的交互流程的功能 Android与iOS都能适用 H5的前端开发者,在书写JavaScript的业务代码的时候不需要为了迁就移动端语言的特性而写特殊的磨合代码 方便调试 交互流程 当H5页面上的JavaS…
一.原生代码中直接加载页面(拦截) 1.    具体案例 加载本地/网络HTML5作为功能介绍页 2.    代码示例 //本地 -(void)loadLocalPage:(UIWebView*)webView { NSString* htmlPath = [[NSBundle mainBundle]pathForResource:@"demo" ofType:@"html"]; NSString* appHtml =[NSString stringWithCont…
今天看下iOS原生->RN: 这里有个问题: * 我这里只能通过rn->ios->rn来是实现* 如果想直接ios-rn 那个iOS中的CalendarManager的self.bridge是nil,只有先通过rn-ios之后该值才有值.* 这里没搞明白 如果你研究通了,希望留言告诉我 直接撸代码: RN: /** * Sample React Native App * https://github.com/facebook/react-native * @flow * iOS调用RN:…
本篇主要讲的是UIWebView和JS的交互,在下一节会有wkWebView和JS交互的详解https://www.cnblogs.com/llhlj/p/9144110.html JS调用原生OC 方式一:url拦截,这里略过 注意:在iOS中拦截到的url scheme将全部转化为小写: html中需要设置编码,否则中文参数可能会出现编码问题: JS用打开一个iFrame的方式替代直接用document.location的方式,document.location 有一个很严重的问题,就是如果…
1.添加约束的规则 在创建约束之后,需要将其添加到作用的view上 在添加时要注意目标view需要遵循以下规则: 1)对于 两个同层级view之间 的约束关系,添加到它们的父view上 2)对于 两个不同层级view之间 的约束关系,添加到他们最近的共同父view上 3)对于 有层次关系的两个view之间 的约束关系,添加到层次较高的父view上   2.苹果原生代码实现Autolayout 步骤 1)利用NSLayoutConstraint类创建具体的约束对象 1> 一个NSLayoutCon…
今天小编在找技术文章的时候,发现这样一个标题:iOS与HTML5交互方法总结,怎么看着这么熟悉呢?   还以为是刚哥用了别的文章,点进去一看,原来是刚哥自己写的文章,他们转载的,而且还上了Dev Store首页. 那我们一起来看看这篇文章到底讲了什么内容? 摘要 看了不少别人写的博客或者论坛,关于iOS与HTML5交互方法大概主要有5种方式: 1. 利用WKWebView进行交互(系统API) 2. 利用UIWebView进行交互(系统API) 3. 苹果的javascriptcore.fram…
摘要 看了不少别人写的博客或者论坛,关于iOS与HTML5交互方法大概主要有5种方式: 1. 利用WKWebView进行交互(系统API) 2. 利用UIWebView进行交互(系统API) 3. 苹果的javascriptcore.framework框架;  4. 跨平台cordova框架; 5. oc第三方WebViewJavascriptBridge 关于WKWebView的介绍在前篇文章已经有了比较详细的介绍了. 前篇文章地址:http://blog.csdn.net/baihuaxiu…
Cordova - 使用Cordova开发iOS应用实战1(配置.开发第一个应用) 现在比较流行使用 html5 开发移动应用,毕竟只要写一套html页面就可以适配各种移动设备,大大节省了跨平台应用的开发时间.而不像以前一样 Android 要写一套程序,iOS 要写一套,甚至 Windows Phone 还要再写一套程序. 虽然使用H5开发的界面很容易适配各种手机设备,但由于系统的差异,如果要访问原生的设备功能(如摄像头.麦克风等)还是有些不便,或者说不是那么统一.这时我们可以借助 Cordo…
转自@夏小BO的技术博客: Cordova,对这个名字大家可能比较陌生,大家肯定听过 PhoneGap 这个名字,Cordova 就是 PhoneGap 被 Adobe 收购后所改的名字.(Cordova网址以及框架下载地址:http://cordova.apache.org/) Cordova 是一个可以让 JS 与原生代码(包括 Android 的 java,iOS 的 Objective-C 等)互相通信的一个库,并且提供了一系列的插件类,比如 JS 直接操作本地数据库的插件类. 这些插件…
相信很多朋友在使用cocos2d-x+lua开发游戏时都遇到过接入iOS原生SDK的问题,比如常见的接应用内支付SDK,广告SDK或是一些社交平台SDK等等,我也没少接过这类SDK.这篇文章主要是对我做过项目中接入iOS原生SDK实现方案的一个总结,在这里分享给大家,希望对自己和大家的开发工作都有帮助. 在展开正文之前,先做几点说明: 1.我这里说的iOS原生SDK是指那些完全用Objective-C语言开发,为原生iOS程序设计的SDK.swift很好很强大,不过我还没用过,惭愧,不过语言终归…
相信很多朋友在使用cocos2d-x+lua开发游戏时都遇到过接入iOS原生SDK的问题,比如常见的接应用内支付SDK,广告SDK或是一些社交平台SDK等等,我也没少接过这类SDK.这篇文章主要是对我做过项目中接入iOS原生SDK实现方案的一个总结,在这里分享给大家,希望对自己和大家的开发工作都有帮助. 在展开正文之前,先做几点说明: 1.我这里说的iOS原生SDK是指那些完全用Objective-C语言开发,为原生iOS程序设计的SDK.swift很好很强大,不过我还没用过,惭愧,不过语言终归…
在开发React Native的App的时候,你会遇到很多情况是原生的视图组件已经开发好了的.有的是系统的SDK提供的,有的是第三方试图组件,总之你的APP可以直接使用的原生视图是很多的.React Native提供了一套完善的机制,你可以非常简单的用来包装已有的原生视图. 代码地址:https://github.com/future-challenger/react-native-gaode-map 下面就用高德地图作为例子讲解如何包装原生视图.高德地图本身不仅有视图需要展示,还有一些和Rea…
前言: 在iOS开发中,或多或少的会嵌入一些H5页面,有时候需要原生代码和H5页面进行交互.iOS8开始苹果推出性能更强大的WKWebView,所以一下方法是关于WKWebView与JS的交互. 创建WKWebView: 遵守协议 <WKNavigationDelegate, WKUIDelegate, WKScriptMessageHandler> -(WKWebView *)wkwebview { if (!_wkwebview) { _wkwebview = [[WKWebView al…
在iOS原生功能中加入RN,请看之前 写的 RN与iOS交互系列文章.本篇只讲下视图混编. 关键点只有二: 1.通过 RCTRootView 加载RN视图. 2.RN中,只需要AppRegistry.registerComponent()导出即可. 关键代码: OC里面: // // RootViewController.m // iOSRN // // Created by Shaoting Zhou on 2017/12/8. // Copyright © 2017年 Shaoting Zh…
混合APP开发中,前端开发H5页面,不免会把兼容性拉进来,在做页面的兼容性同事,会与原生app产生一些数据交互: 混合APP开发,安卓的兼容性倒是好说,安卓使用是chrome浏览器核心,已经很好兼容H5页面,而且运行机制也是能够同步运行:但ios上就没那么容易了:. 在此我就不说兼容安卓的问题,只把ios问题说说: 问题1:H5调用ios接口,ios需要初始化,js代码在ISO上只运行一次 解决: 本人使用是angular框架搭建的H5页面 var ua = navigator.userAgen…
H5与App原生交互,一般会是前端页面中的JavaScript与App使用的原生开发语言的交互.技术方案应能达到以下要求: 在js与原生进行交互的时候能保证正常的正向调用逻辑返回,反向可以处理异步回调,因为对js来说,大部分逻辑都是回调与监听. 要保证H5与Native App通讯效率高.安全性强,能有效防止通过H5页面进行App注入.中间人攻击或者钓鱼. 方便测试阶段,H5嵌入到App当中,开发人员方便调试与Debug. 在iOS控制器中加载UIWebView,设置代理,遵守UIWebView…
本文转载至 http://ju.outofmemory.cn/entry/18807 有时候我们在内嵌的webview中希望点击一个链接之后,触发iOS原生事件,而不是webview内页面跳转(因为webview的跳转很生硬,而ajax+js模拟则不如原生segue平滑). 有时候我们希望在页面内consloe.log('log something')的时候在控制台里看到输出,但手机里没有控制台,所以我们希望可以利用xcode的控制台输出信息. 因为iOS没有提供API让我们直接用html或者j…
Cordova,对这个名字大家可能比较陌生,大家肯定听过 PhoneGap 这个名字,Cordova 就是 PhoneGap 被 Adobe 收购后所改的名字. Cordova 是一个可以让 JS 与原生代码(包括 Android 的 java,iOS 的 Objective-C 等)互相通信的一个库,并且提供了一系列的插件类,比如 JS 直接操作本地数据库的插件类. 这些插件类都是基于 JS 与 Objective-C 可以互相通信的基础的,这篇文章说说 Cordova 是如何做到 JS 与…
我之前写过三篇Cordova相关的技术文章.当我们使用Cordova将自己开发的前端应用打包安装到手机上后,可能会遇到需要调试Cordova应用的时候. 本文就介绍Cordova应用的调试步骤. 如果大家读过之前我写的文章,就知道Cordova应用在移动平台上运行时,实际上Cordova包内的前端应用的HTML/JavaScript代码仍然运行在一个嵌入的Webview里.同时Cordova也允许开发人员开发一些插件,这些插件能调用基于特定移动平台的原生API,通过Cordova框架直接暴露给前…
转载自:swift cafe 使用 NSURLSession NSURLSession 是 iOS 原生提供的网络处理库.它提供了丰富的接口以及配置选项,满足我们平时网络处理的大部分需求,同时它也支持 https.关于 NSURLSession 的基本内容,可以参看之前的这篇文章: NSURLSession 网络库 这次我们主要介绍使用 NSURLSession 对 https 的处理,关于 https 的基本原理,大家可以参看这里: Https 与 iOS 信息安全 好了,准备知识都了解了之后…