阔别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. %02x和%2x区别

    %02x  (x代表以十六进制形式输出,02代表不足两位,前面补0输出,如果超过两位,则以实际输出) 例: #include <stdio.h> #include <stdint.h ...

  2. 李洪强iOS开发之FMDB线程安全的用法

    // //  ViewController.m //  04 - FMDB线程安全的用法 // //  Created by 李洪强 on 2017/6/6. //  Copyright © 2017 ...

  3. windows党码农在linux下你最需要的软件列表TOP10

    NO 10.QQ 神奇的TX,经常更新接口,使得linux社区的模仿软件总是跟不上步伐,一整就不能登陆使用.可是老大,您怎么自从2009-01-04发布了第一版QQ for Linux 1.0 Bet ...

  4. 20个angularjs开发工具

    AngularJS是那些渴望以动态方式来设计web app的web开发人员最偏爱的框架之一.如果你是一个希望启动AngularJS项目的开发人员,那么你可能需要帮助来挑选出趁手的工具…… 在Value ...

  5. 字符编码的故事:ASCII,GB2312,Unicode,UTF-8,UTF-16

    http://blog.csdn.net/longintchar/article/details/51079340 ****************************************** ...

  6. CSS里有哪些常见的块级元素和行内元素以及其区别?

    根据CSS规范的规定,每一个网页元素都有一个display属性,用于确定该元素的类型,每一个元素都有默认的display属性值,比如div元素,它的默认display属性值为“block”,成为“块级 ...

  7. JavaEE各种Javadoc的下载

    刚才突然发现,很多servlet的api都不熟悉,但是又没有给eclipse导入api,就google了一下 关键字,servlet api / doc 或者java ee api / doc 注意版 ...

  8. mysql 8小时问题

    假设你的数据库是mysql,如果数据源配置不当,将可能发生经典的"8小时问题".原因是mysql在默认情况下,如果发现一个连接的空闲时间超过8小时,将会在数据库端自动关闭这个连接. ...

  9. 使用 Elasticsearch 实现博客站内搜索

    Reference:  http://www.open-open.com/lib/view/open1452046497511.html 一直以来,为了优化本博客站内搜索效果和速度,我使用 bing ...

  10. 一款基于css3的简单的鼠标悬停按钮

    今天给大家分享一款基于css3的简单的鼠标悬停按钮.这款悬停按钮鼠标经过前边框是间断的.当鼠标经过的时候边框间隔消失.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div ...