目錄
回复内容:
首頁 web前端 H5教程 微信如何实现向浏览器注入JS API,并且调用方式就像浏览器原生API一样?

微信如何实现向浏览器注入JS API,并且调用方式就像浏览器原生API一样?

Jun 07, 2016 am 08:44 AM
api google ios

首先,我是一名前端。最近公司在试验iOS与H5混合开发,那么肯定少不了js与OC的通信。之前了解到微信浏览器内置了大量JS API来调用原生功能,我猜测应该是通过OC注入的。并且这些API是可以执行js回调的,灵活度很高,不过接口好像都是异步的。最近我在google如何实现,发现以前是有一种OC通过拦截页面请求的方式,让js调用OC接口,但似乎有很多局限性。请问有更好的解决办法吗?iOS7 开放的JavascriptCore框架,可以在此应用吗?

回复内容:

泻药

请阅读资料:
JavaScriptCore

当然可以在这里用。应该说JavaScriptCore就是用在这里的。
当然,你也可以看看ReactNative是怎么把Objective-C和JavaScript联合起来的。 泻药

偶没整过微信和端开发
估摸着是这样的
你姑且看看好了

在高局限性的ios上
肯定是通过OC通过拦截页面请求的方式,让js调用OC接口来实现的

只不过 jsb (jsBridge)是在页面插入个 iframe
然后根据传入的 action 字符串名字构建出特殊的 scheme 给 iframe
然后 OC 监听这个 frame 的 url change 事件来截获 scheme
并分析其字符串
调用指定 OC 方法

由于监听事件后才能继续处理
所以jsb 相关 api 设计都是异步的。

方法运行完成后
根据全局内注册的hash(用来与回调对应)来找出该执行哪个回调
用webview api 内具有 execute script 功能的 api 拼接出js代码字符串来执行,
比如 :
webview.frame.get(0).execscript("window.jsb.getCallback('" + actionname +', '" + param+ "' )")
当然偶写的不是OC语法的玩意
凑合看看吧。

反正偶觉得在功能提供有限的移动端webview上也就这样了,没更好的方法。


(要是 PC 端的QT之类,才不用这么麻烦呢,只要是C++静态函数(方法)
直接就能挂在webvie内指定的js对象(包括全局对象)上
然后js就能直接调用了,还是同步的) oc有个 webview.stringByEvaluatingJavaScriptFromString 来通过字符串执行js,注入js就是执行代码,比如接口声明,windows.wxBridge=function 之类的就行了

真正通信是莫大的答案里,拦截网络通信方式 js bridge 可以去唐巧的博客上逛逛,主要看js和oc的通信
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Google Pixel 9 Pro XL 接受桌面模式測試 Google Pixel 9 Pro XL 接受桌面模式測試 Aug 29, 2024 pm 01:09 PM

Google在 Pixel 8 系列中引入了 DisplayPort 替代模式,並且在新推出的 Pixel 9 系列中也採用了該模式。雖然它主要是為了讓您透過連接的螢幕鏡像智慧型手機顯示,但您也可以將其用於桌面

Pixel 9 Pro XL 的 Google Tensor G4 在 原神 方面落後於 Tensor G2 Pixel 9 Pro XL 的 Google Tensor G4 在 原神 方面落後於 Tensor G2 Aug 24, 2024 am 06:43 AM

谷歌最近回應了有關 Pixel 9 系列 Tensor G4 性能的擔憂。該公司表示,該 SoC 的設計初衷並不是為了超越基準。相反,該團隊專注於使其在 Google 想要的領域中表現良好。

更新 |駭客解釋如何在歐盟以外的 iPad 上安裝 Epic Games Store 和 Fortnite 更新 |駭客解釋如何在歐盟以外的 iPad 上安裝 Epic Games Store 和 Fortnite Aug 18, 2024 am 06:34 AM

更新:Saunders Tech 已將教學上傳到他的 YouTube 頻道(下面嵌入影片),解釋如何在歐盟境外的 iPad 上安裝 Fortnite 和 Epic Games Store。然而,該過程不僅需要特定的 iO 測試版

新的 Google Pixel 桌面模式在新鮮影片中展示,可能是 Motorola Ready For 和 Samsung DeX 的替代方案 新的 Google Pixel 桌面模式在新鮮影片中展示,可能是 Motorola Ready For 和 Samsung DeX 的替代方案 Aug 08, 2024 pm 03:05 PM

自從 Android Authority 展示Google隱藏在 Android 14 QPR3 Beta 2.1 中的新 Android 桌面模式以來,已經過了幾個月。緊接著 Google 為 Pixel 8 和 Pixel 8 新增 DisplayPort Alt 模式支援之後

谷歌向大多數用戶開放 AI Test Kitchen & Imagen 3 谷歌向大多數用戶開放 AI Test Kitchen & Imagen 3 Sep 12, 2024 pm 12:17 PM

谷歌的 AI Test Kitchen 包括一套供用戶使用的 AI 設計工具,現已向全球 100 多個國家的用戶開放。此舉標誌著世界各地的許多人第一次能夠使用 Imagen 3、Googl

Pixel 9 Pro XL 與 iPhone 15 Pro Max 相機比較顯示谷歌在視頻和變焦性能方面取得了令人驚訝的勝利 Pixel 9 Pro XL 與 iPhone 15 Pro Max 相機比較顯示谷歌在視頻和變焦性能方面取得了令人驚訝的勝利 Aug 24, 2024 pm 12:32 PM

Google Pixel 9 Pro 和 Pro XL 是Google對三星 Galaxy S24 Ultra 和蘋果 iPhone 15 Pro 和 Pro Max 等產品的回應。 YouTube 上的 Daniel Sin(請觀看下文)將 Google Pixel 9 Pro XL 與 iPhone 15 Pro Max 進行了一些比較

蘋果 iOS / iPadOS 18 開發者預覽版 Beta 7 發布 蘋果 iOS / iPadOS 18 開發者預覽版 Beta 7 發布 Aug 21, 2024 am 07:41 AM

感谢网友瑶池青莲、DREAMM_、寂某人e的线索投递!【点此直达升级教程】8月21日消息,苹果今日向iPhone和iPad用户推送了iOS/iPadOS18开发者预览版Beta7更新(内部版本号:22A5346a),本次更新距离上次发布Beta/RC间隔8天。苹果公司的Beta5、Beta6更新趋于稳定,未引入显著新功能(主要调整控制中心细节),苹果专注于修复BUG和改善体验,为9月正式发布做准备。因此,苹果今天发布的Beta7更新理论上应是iOS/iPadOS18的最后一个Beta版本更新,后

Google確認 Pixel 9 Pro Fold 因設計奇特而與官方無線充電配件不相容 Google確認 Pixel 9 Pro Fold 因設計奇特而與官方無線充電配件不相容 Sep 01, 2024 am 06:31 AM

Pixel 9 Pro Fold 類似於谷歌新生的可折疊部門的大轉變。事實上,Pixel 9 Pro Fold 和 Pixel Fold 之間的差異如此之大,以至於前者更多地與 OnePlus Open 進行比較(A 上的價格為 1,399.99 美元)

See all articles