阔别1年半之久,一个JavaScript和ios通讯的想法终于被实现了(我不知道别人有没有早就实现过~)。

  记得早期ios内嵌html做通讯时,貌似做好的办法只能是 ios通过url来截取页面发送消息,但是这样一来如果页面框架对url的依赖比较高那么就会出问题,并且频繁改url,ios可能并不能拦截到每次的url。

  一个老外写了一套利用该方法实现的js与ios通讯的库,原理基本还是如此。不过貌似做了优化,url的变换不在webview里,而是再后端跑了一个webview专门处理url的变化,我没有深入研究。这样虽然解决了一部分问题,但是对于我来说听上去就不怎么舒服。

  后来在于ios的合作中听说,javascript发起的alert方法,ios可以重写。当时就一个机灵,那干嘛不把alert重写成能接受消息的入口呢?这样一来只要商定好消息模式(比如alert一个参数代表普通alert,多个代表消息),这样一来,js不就能直接和ios通讯了吗?ios端只要注册多中方法来处理通讯消息就可以了。

  由于我基本没有涉猎ios,所以当时找人印证,不过有的说不能实现,有的说有问题,有的也说可以实现但是最终也没给我实现。。。。 再后来ios7出来后,听说原来的alertview方法变了,当时就觉得快放弃了。

  事情搁置到今天,终于我们ios部门一个经理听了我的想法,非常认同的觉得可以一试。我说了ios7的顾虑,他说只是换了个方法而已。没多久,我前后等了1年半的通讯协议终于实现了!而且验证可以,优缺点我就不说了,大家一想便知!特记录下来纪念!

  无比的后悔当初没研究下ios。

javascript与 ios通讯解决办法的更多相关文章

  1. eclipse编辑jsp文件和javascript代码很卡解决办法

    1.Window -> Preference -> General -> Editors -> Text Editors -> HyperLinking -> 在用 ...

  2. 【javascript】iOS Safari 中点击事件失效的解决办法

    问题描述 当使用委托给一个元素添加click事件时,如果事件是委托到 document 或 body 上,并且委托的元素是默认不可点击的(如 div, span 等),此时 click 事件会失效. ...

  3. iOS Safari 中点击事件失效的解决办法

    问题描述 当使用委托给一个元素添加click事件时,如果事件是委托到 document 或 body 上,并且委托的元素是默认不可点击的(如 div, span 等),此时 click 事件会失效. ...

  4. ios端position为fixed失效的解决办法

    关键代码 document.getElementById("searchInputbox").addEventListener('touchmove', handler, {pas ...

  5. react中IOS手机里面两个input同时存在时,聚焦focus失效解决办法

    最近在做webapp搜索功能时,用到两个input同时存在时,轻点input聚焦时,ios手机软键盘弹起又失效,一直在寻找合理的解决办法,现在最简单的总结回顾: <一>bug显示 < ...

  6. iOS - UITableView中Cell重用机制导致Cell内容出错的解决办法

    "UITableView" iOS开发中重量级的控件之一;在日常开发中我们大多数会选择自定Cell来满足自己开发中的需求, 但是有些时候Cell也是可以不自定义的(比如某一个简单的 ...

  7. [转]iOS Safari 中click点击事件失效的解决办法

    iOS Safari 中click点击事件失效的解决办法 问题起因: 在微信公众号开发(微站)过程中用jquery的live方法绑定的click事件点击无效(不能执行) 问题描述 当使用委托给一个元素 ...

  8. IOS 开发中 Whose view is not in the window hierarchy 错误的解决办法

    在 IOS 开发当中经常碰到 whose view is not in the window hierarchy 的错误,该错误简单的说,是由于 "ViewController" ...

  9. ios 静态库冲突的解决办法

    最近在做一个 iOS 的 cocos2d-x 项目接入新浪微博 SDK 的时候被“坑”了,最后终于顺利的解决了.发现网上也有不少人遇到一样的问题,但是能找到的数量有限的解决办法写得都不详细,很难让人理 ...

随机推荐

  1. IOS7的蛋疼各种收集

    ------------------ ios7基于viewController隐藏状态条:通过ViewController重载方法返回枚举值的方法来控制状态栏的隐藏和样式.首先,需要在Info.pli ...

  2. [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP图

    关于如何移植SDL2.0到安卓上面来参考我的上一篇文章:[原]零基础学习SDL开发之移植SDL2.0到Android 在一篇文章我们主要使用SDL2.0来加载一张BMP图来渲染显示. 博主的开发环境: ...

  3. PeekMessage、GetMessage的区别

    在Windows编程中经常使用这两个函数来处理消息,它们之间的区别就是GetMessage是阻塞的,PeekMessage是非阻塞的. GetMessage原型如下:BOOL GetMessage(L ...

  4. 又谈C++指针(1)

    写在前面的话:虽然这段代码中对于指针的使用是不正确的,但是我却在这个不正确的代码中发现了另一个错误,而且深感迷惑,所以打算将此博文推到首页,请各位帮忙回答个问题. 在项目中用到了以下一段代码,执行结果 ...

  5. shell学习笔记之条件(二)

    test或者[ #检查文件是否存在 if test -f read.c then ... fi if [ -f read.c ] then ... fi #如果then和if在同一行上,就应该用;把i ...

  6. struts2文件下载的编写步骤(文件导出)和输入流转换的方法

    strut2文件下载三部曲:一个流.两个头信息 说明: ①一个流,在Action中需要一个getInputStream()的方法来获取下载的内容,其中inputStream是默认的,他会指示Strea ...

  7. RTX——第7章 任务管理

    以下内容转载自安富莱电子: http://forum.armfly.com/forum.php 单任务系统学习多任务系统之前,我们先来回顾下单任务系统的编程框架,即裸机时的编程框架. 裸机编程主要是采 ...

  8. POj 1753--Flip Game(位运算+BFS)

    Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 30669   Accepted: 13345 Descr ...

  9. am335x SGX 移植

    第一步,先安装对应的 PDK 包,并编译出相对应的kernel module. 我是在 PDK 3.0 上面进行开发的,所以要先把相对应的 PDK包. 下载地址: http://software-dl ...

  10. Oracle数据误删除的恢复操作

    flashbackup 闪回操作: 1. 打开表的闪回功能: alter table dw_stg.fm_user_play_d enable row movement; 2. 查询要闪回的表的记录信 ...