CTJSBridge 16

CTJSBridge 16

测试已测试
语言语言 Obj-CObjective C
许可证 未知
发布最新发布2018年9月

Casa Taloyum 维护。



 
依赖
CTMediator>= 0
PocketSocket>= 0
CTHandyCategories>= 0
 

  • 作者:
  • CasaTaloyum

CTJSBridge

WKWebView 中在 Obj-C 和 JavaScript 之间发送消息的 iOS 桥接器

特性

  • 远程调试
  • 从原生到 JS 发送/处理消息
  • 从 JS 到原生发送/处理消息

试用演示

  • 请确保你的 Mac 已安装了 golang

  • 进入 CTJSBridge/WebServer 目录并运行 make run

  • 如果你遇到错误 listen tcp :80: bind: address already in use make: *** [run] Error 1,请打开 CTJSBridge/WebServer/main.go 文件,将 80 修改为其他端口号。

  • 然后运行 pod update,并在模拟器上运行 CTJSBridge.xcworkspace 项目

  • 当它在运行时,你将看到网页,然后在屏幕上轻触五次,将显示连接信息,计数为 0。

  • 在 Safari 中打开,转到 https://,输入类似:192.168.1.100:58931 的连接信息以连接到模拟器

  • 在模拟器中关闭连接信息警报,再在屏幕上轻触五次以再次显示它,如果计数为 1,则表示 Safari 已连接到你的模拟器。

  • 开始玩耍!

  • 在真实设备上,按照相同的步骤进行,远程调试也可以在真实设备上工作。

用法

进行通话

见下面的JavaScript调用

      window.CTJSBridge.LoadMethod("Demo", "push", {"key":"value"}, {
        "success":function(result){
          document.getElementById('message').innerHTML = result;
        },
        "fail":function(result){
          document.getElementById('message').innerHTML = result;
        },
        "progress":function(result){
          document.getElementById('message').innerHTML = result;
        },
      });

CTJSBridge将为名为(Target_H5 + Demo)的对象分配资源,并调用带有参数Action_push:(Action_ + push) with params {“key”:“value”}。所以只需确保你有正确的对象和选择器,CTJSBridge会调用它!

参数始终应该是一个字典。

在发送到Action_push:的参数中,你会找到三个名为successfailprogress的块,它们都以Objective-C字典作为回调数据传递给JavaScript。


如果你正在使用CTNetworking在你应用程序中进行API调用,只需发送API管理器和API参数的名称,你就可以从JavaScript动态调用原生API!无需额外工作!

window.CTJSBridge.LoadAPI("CTMarvelCharactersAPIManager", {"orderBy":"modified"}, {
  "success":function(result){
    document.getElementById('message').innerHTML = result;
  },
  "fail":function(result){
    document.getElementById('message').innerHTML = result;
  },
  "progress":function(result){
    document.getElementById('message').innerHTML = result;
  },
});

创建WKWebview

使用分类方法创建WKWebview

#import <CTJSBridge/CTJSBridge.h>

- (WKWebView *)webview
{
    if (_webview == nil) {
        _webview = [WKWebView ct_WKWebViewWithConfiguration:nil prefixUserAgent:nil];
    }
    return _webview;
}

这就是了!

查看示例代码以获取更多详细信息

从JavaScript调用:https://github.com/casatwy/CTJSBridge/blob/master/WebServer/static/index.html

objective-c接收代码:https://github.com/casatwy/CTJSBridge/blob/master/CTJSBridge/Demo/Targets/Demo/Target_H5Demo.m

回调给JavaScript:https://github.com/casatwy/CTJSBridge/blob/master/CTJSBridge/Demo/DemoViewController.m#L47

Cocoapods

pod 'CTJSBridge'

要求

  • iOS 9或更高版本

作者

交流

  • 如果你发现了错误,请提交问题。
  • 如果您有功能请求,请提交一个问题。
  • 如果您想贡献力量,请提交 pull request。

许可协议

本项目采用 MIT 许可协议。