Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Objective-C 与 JavaScript 之间的交互 #64

Open
ShannonChenCHN opened this issue Jul 3, 2017 · 2 comments
Open

Objective-C 与 JavaScript 之间的交互 #64

ShannonChenCHN opened this issue Jul 3, 2017 · 2 comments

Comments

@ShannonChenCHN
Copy link
Owner

ShannonChenCHN commented Jul 3, 2017

作者:陈祥龙
日期:2017.07.03

@ShannonChenCHN
Copy link
Owner Author

ShannonChenCHN commented Jul 3, 2017

示例代码 1

示例代码 2(关于 WKWebView 中 MessageHandler 使用的代码)

1. Objective-C 中调用 JavaScript

  • UIWebView
  • WKWebView
  • JavaScriptCore

2. JavaScript 中调用 Objective-C

  • UIWebView

  • WKWebView

  • 在 h5 中进行 URL 跳转,然后通过原生拦截 webView 代理,根据 Custom URL Scheme 做处理

    • scheme
    • 参数
      • 普通参数:将参数以 JSON 的形式传递,但是因为要附加在 url 之后,所以我们将 JSON 进行了 Base64 编码,以保证 url 中不会出现一些非法的字符
      • JSON 格式
      • 参数中带有 URL
  • WebViewJavascriptBridge

  • JavaScriptCore

  • WKWebView 的 MessageHandler

3. 几个不同 Objective-C <-> JavaScript 桥接框架的实现

4. 几个问题

  • 使用拦截 Custom URL Scheme 的方式时,推荐自定义一个 loadURL 方法,最好不要直接使用 window.location.href
  • 豆瓣的 rexxar 为什么不使用 JSBridge 的方式?

5.小结

  • 各方式优缺点
  • 应用场景
  • 我的选择
    • 为什么不选用 JavaScriptCore?
    • 为什么选择 Bridge 的方式
    • 为什么选择 WebViewJavaScriptBridge,而不是其他的 bridge,或者自己造一套?

6.实践

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant