Skip to content

1.Redesign core bridge codes. #385

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

Open
wants to merge 45 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
01b5642
Delete UIWebView API that Apple have fidden to use.
Oct 4, 2019
7e1b997
1.Redesign core bridge codes.
Oct 4, 2019
1b0f6b3
2.Delete some files.
Oct 4, 2019
4980ea2
Merge pull request #1 from housenkui/v7.0
housenkui Oct 4, 2019
1b5fbc5
Update README.md
housenkui Oct 4, 2019
db65afe
Update README.md
housenkui Oct 4, 2019
5383737
Update README.md
housenkui Oct 4, 2019
188d6c5
Update README.md
housenkui Oct 4, 2019
74452ac
Update README.md
housenkui Oct 4, 2019
50594fb
Update README.md
housenkui Oct 4, 2019
38a1d63
Update README.md
housenkui Oct 4, 2019
ace5c91
Update README.md
housenkui Oct 4, 2019
9efe256
Update README.md
housenkui Oct 4, 2019
8670bfa
Update README.md
housenkui Oct 4, 2019
883f4c2
Update README.md
housenkui Oct 4, 2019
809cbb2
Update README.md
housenkui Oct 4, 2019
85192f7
Update README.md
housenkui Oct 5, 2019
1e70e2b
Update README.md
housenkui Oct 6, 2019
4fd55f7
Update README.md
housenkui Oct 6, 2019
04bcb03
Update README.md
housenkui Oct 8, 2019
4a9e94c
Update README.md
housenkui Oct 8, 2019
892c157
Update README.md
housenkui Oct 8, 2019
d1c6182
Update WKWebView+JavaScriptBridge.m
housenkui Oct 10, 2019
250657e
Update README.md
housenkui Oct 13, 2019
9e56e5d
Update README.md
housenkui Dec 26, 2019
27814d4
抽取非核心逻辑到不同的文件中
housenkui Mar 25, 2020
7f877db
添加对NaN、null、undefined、this的打印支持
housenkui Mar 26, 2020
ea9265e
升级版本库
housenkui Mar 27, 2020
dff60cc
add more information
housenkui Mar 27, 2020
4ec11ad
Update README.md
housenkui Mar 27, 2020
d532f6a
Update README.md
housenkui Mar 27, 2020
bcaad18
Update README.md
housenkui Mar 27, 2020
40a76cf
Update README.md
housenkui Mar 27, 2020
4cff34a
Update README.md
housenkui Mar 28, 2020
4d59d06
Update README.md
housenkui Mar 28, 2020
adf616d
Update README.md
housenkui Mar 28, 2020
2e426b3
Update README.md
housenkui Apr 29, 2020
29fcfae
Update README.md
housenkui Apr 29, 2020
5c03c91
Update README.md
housenkui Apr 29, 2020
ca0d0b3
Update README.md
housenkui Apr 29, 2020
7ef16af
更新文件
housenkui Apr 29, 2020
3c3fff9
Update README.md
housenkui May 9, 2020
cba724f
Update README.md
housenkui May 12, 2020
66d22a3
Update README.md
housenkui May 13, 2022
63ef089
Update README.md
housenkui May 18, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 7 additions & 24 deletions Example Apps/ExampleApp-OSX.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,18 @@
objects = {

/* Begin PBXBuildFile section */
0ECB01491A0EEB3A0037FF4E /* WebViewJavascriptBridgeBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ECB01461A0EEB3A0037FF4E /* WebViewJavascriptBridgeBase.m */; };
0ECB014A1A0EEB3A0037FF4E /* WKWebViewJavascriptBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ECB01481A0EEB3A0037FF4E /* WKWebViewJavascriptBridge.m */; };
2C136A2517641106004C7401 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2C136A2417641106004C7401 /* Cocoa.framework */; };
2C136A2F17641106004C7401 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2C136A2D17641106004C7401 /* InfoPlist.strings */; };
2C136A3117641106004C7401 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C136A3017641106004C7401 /* main.m */; };
2C136A3517641106004C7401 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 2C136A3317641106004C7401 /* Credits.rtf */; };
2C136A3817641106004C7401 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C136A3717641106004C7401 /* AppDelegate.m */; };
2C136A4217641236004C7401 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2C136A4117641236004C7401 /* WebKit.framework */; };
2C136A5A17642704004C7401 /* ExampleApp.html in Resources */ = {isa = PBXBuildFile; fileRef = 2C136A5917642704004C7401 /* ExampleApp.html */; };
2C1562C6176BA9FF00B4AE50 /* WebViewJavascriptBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C1562C4176BA9FF00B4AE50 /* WebViewJavascriptBridge.m */; };
2C3E7C491C5A8B8D00A1E322 /* WebViewJavascriptBridge_JS.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C3E7C481C5A8B8D00A1E322 /* WebViewJavascriptBridge_JS.m */; };
2CF17F5317D8AACF006E828B /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2CF17F5217D8AACF006E828B /* MainMenu.xib */; };
EF5DC17623474A0A00F81F96 /* WKWebView+JavaScriptBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = EF5DC17523474A0A00F81F96 /* WKWebView+JavaScriptBridge.m */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
0ECB01451A0EEB3A0037FF4E /* WebViewJavascriptBridgeBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridgeBase.h; sourceTree = "<group>"; };
0ECB01461A0EEB3A0037FF4E /* WebViewJavascriptBridgeBase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridgeBase.m; sourceTree = "<group>"; };
0ECB01471A0EEB3A0037FF4E /* WKWebViewJavascriptBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebViewJavascriptBridge.h; sourceTree = "<group>"; };
0ECB01481A0EEB3A0037FF4E /* WKWebViewJavascriptBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WKWebViewJavascriptBridge.m; sourceTree = "<group>"; };
2C136A2117641106004C7401 /* ExampleApp-OSX.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ExampleApp-OSX.app"; sourceTree = BUILT_PRODUCTS_DIR; };
2C136A2417641106004C7401 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
2C136A2717641106004C7401 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
Expand All @@ -40,11 +33,9 @@
2C136A3717641106004C7401 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
2C136A4117641236004C7401 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
2C136A5917642704004C7401 /* ExampleApp.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = ExampleApp.html; sourceTree = SOURCE_ROOT; };
2C1562C2176BA9FF00B4AE50 /* WebViewJavascriptBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridge.h; sourceTree = "<group>"; };
2C1562C4176BA9FF00B4AE50 /* WebViewJavascriptBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridge.m; sourceTree = "<group>"; };
2C3E7C471C5A8B8D00A1E322 /* WebViewJavascriptBridge_JS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridge_JS.h; sourceTree = "<group>"; };
2C3E7C481C5A8B8D00A1E322 /* WebViewJavascriptBridge_JS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridge_JS.m; sourceTree = "<group>"; };
2CF17F5217D8AACF006E828B /* MainMenu.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainMenu.xib; sourceTree = "<group>"; };
EF5DC17423474A0A00F81F96 /* WKWebView+JavaScriptBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "WKWebView+JavaScriptBridge.h"; sourceTree = "<group>"; };
EF5DC17523474A0A00F81F96 /* WKWebView+JavaScriptBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "WKWebView+JavaScriptBridge.m"; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand Down Expand Up @@ -125,14 +116,8 @@
2C1562C1176BA9FF00B4AE50 /* WebViewJavascriptBridge */ = {
isa = PBXGroup;
children = (
2C3E7C471C5A8B8D00A1E322 /* WebViewJavascriptBridge_JS.h */,
2C3E7C481C5A8B8D00A1E322 /* WebViewJavascriptBridge_JS.m */,
0ECB01451A0EEB3A0037FF4E /* WebViewJavascriptBridgeBase.h */,
0ECB01461A0EEB3A0037FF4E /* WebViewJavascriptBridgeBase.m */,
0ECB01471A0EEB3A0037FF4E /* WKWebViewJavascriptBridge.h */,
0ECB01481A0EEB3A0037FF4E /* WKWebViewJavascriptBridge.m */,
2C1562C2176BA9FF00B4AE50 /* WebViewJavascriptBridge.h */,
2C1562C4176BA9FF00B4AE50 /* WebViewJavascriptBridge.m */,
EF5DC17423474A0A00F81F96 /* WKWebView+JavaScriptBridge.h */,
EF5DC17523474A0A00F81F96 /* WKWebView+JavaScriptBridge.m */,
);
name = WebViewJavascriptBridge;
path = ../../WebViewJavascriptBridge;
Expand Down Expand Up @@ -172,6 +157,7 @@
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
English,
en,
);
mainGroup = 2C136A1817641106004C7401;
Expand Down Expand Up @@ -203,11 +189,8 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
0ECB01491A0EEB3A0037FF4E /* WebViewJavascriptBridgeBase.m in Sources */,
0ECB014A1A0EEB3A0037FF4E /* WKWebViewJavascriptBridge.m in Sources */,
2C3E7C491C5A8B8D00A1E322 /* WebViewJavascriptBridge_JS.m in Sources */,
EF5DC17623474A0A00F81F96 /* WKWebView+JavaScriptBridge.m in Sources */,
2C136A3117641106004C7401 /* main.m in Sources */,
2C1562C6176BA9FF00B4AE50 /* WebViewJavascriptBridge.m in Sources */,
2C136A3817641106004C7401 /* AppDelegate.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand Down
78 changes: 6 additions & 72 deletions Example Apps/ExampleApp-OSX/AppDelegate.m
Original file line number Diff line number Diff line change
Expand Up @@ -8,69 +8,27 @@

#import "AppDelegate.h"
#import <WebKit/WebKit.h>
#import "WebViewJavascriptBridge.h"
#import "WKWebView+JavaScriptBridge.h"

@implementation AppDelegate {
WebView* _webView;
WKWebView *_WKWebView;
WebViewJavascriptBridge* _bridge;
WebViewJavascriptBridge* _WKBridge;
NSView* _WKWebViewWrapper;
}

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[self _createViews];
[self _configureWebview];
[self _configureWKWebview];
}

- (void)_configureWebview {
// Create Bridge
_bridge = [WebViewJavascriptBridge bridgeForWebView:_webView];

[_bridge registerHandler:@"testObjcCallback" handler:^(id data, WVJBResponseCallback responseCallback) {
NSLog(@"testObjcCallback called: %@", data);
responseCallback(@"Response from testObjcCallback");
}];

[_bridge callHandler:@"testJavascriptHandler" data:@{ @"foo":@"before ready" }];

// Create Buttons
NSButton *callbackButton = [[NSButton alloc] initWithFrame:NSMakeRect(5, 0, 120, 40)];
[callbackButton setTitle:@"Call handler"];
[callbackButton setBezelStyle:NSRoundedBezelStyle];
[callbackButton setTarget:self];
[callbackButton setAction:@selector(_callHandler)];
[_webView addSubview:callbackButton];

NSButton *webViewToggleButton = [[NSButton alloc] initWithFrame:NSMakeRect(120, 0, 180, 40)];
[webViewToggleButton setTitle:@"Switch to WKWebView"];
[webViewToggleButton setBezelStyle:NSRoundedBezelStyle];
[webViewToggleButton setTarget:self];
[webViewToggleButton setAction:@selector(_toggleExample)];
[_webView addSubview:webViewToggleButton];


// Load Page
NSString* htmlPath = [[NSBundle mainBundle] pathForResource:@"ExampleApp" ofType:@"html"];
NSString* html = [NSString stringWithContentsOfFile:htmlPath encoding:NSUTF8StringEncoding error:nil];
NSURL *baseURL = [NSURL fileURLWithPath:htmlPath];
[[_webView mainFrame] loadHTMLString:html baseURL: baseURL];
}


- (void)_configureWKWebview {
// Create Bridge
_WKBridge = [WebViewJavascriptBridge bridgeForWebView:_WKWebView];

[_WKBridge registerHandler:@"testObjcCallback" handler:^(id data, WVJBResponseCallback responseCallback) {
[WKWebView enableLogging:LogginglevelAll];
[_WKWebView registerHandler:@"testObjcCallback" handler:^(id data, WVJBResponseCallback responseCallback) {
NSLog(@"testObjcCallback called: %@", data);
responseCallback(@"Response from testObjcCallback");
}];

[_WKBridge callHandler:@"testJavascriptHandler" data:@{ @"foo":@"before ready" }];

// Create Buttons
NSButton *callbackButton = [[NSButton alloc] initWithFrame:NSMakeRect(5, 0, 120, 40)];
[callbackButton setTitle:@"Call handler"];
Expand All @@ -79,52 +37,28 @@ - (void)_configureWKWebview {
[callbackButton setAction:@selector(_WKCallHandler)];
[_WKWebView addSubview:callbackButton];

NSButton *webViewToggleButton = [[NSButton alloc] initWithFrame:NSMakeRect(120, 0, 180, 40)];
[webViewToggleButton setTitle:@"Switch to WebView"];
[webViewToggleButton setBezelStyle:NSRoundedBezelStyle];
[webViewToggleButton setTarget:self];
[webViewToggleButton setAction:@selector(_toggleExample)];
[_WKWebView addSubview:webViewToggleButton];

// Load Page
NSString* htmlPath = [[NSBundle mainBundle] pathForResource:@"ExampleApp" ofType:@"html"];
NSString* html = [NSString stringWithContentsOfFile:htmlPath encoding:NSUTF8StringEncoding error:nil];
NSURL *baseURL = [NSURL fileURLWithPath:htmlPath];
[_WKWebView loadHTMLString:html baseURL:baseURL];
}

-(void)_toggleExample {
_WKWebView.hidden = !_WKWebView.isHidden;
_webView.hidden = !_webView.isHidden;
}

- (void)_callHandler {
id data = @{ @"greetingFromObjC": @"Hi there, JS!" };
[_bridge callHandler:@"testJavascriptHandler" data:data responseCallback:^(id response) {
NSLog(@"testJavascriptHandler responded: %@", response);
}];
}

- (void)_WKCallHandler {
id data = @{ @"greetingFromObjC": @"Hi there, JS!" };
[_WKBridge callHandler:@"testJavascriptHandler" data:data responseCallback:^(id response) {
[_WKWebView callHandler:@"testJavascriptHandler" data:data responseCallback:^(id response) {
NSLog(@"testJavascriptHandler responded: %@", response);
}];
}

- (void)_createViews {
NSView* contentView = _window.contentView;
// WebView
_webView = [[WebView alloc] initWithFrame:contentView.frame];
[_webView setAutoresizingMask:(NSViewHeightSizable | NSViewWidthSizable)];
_webView.hidden = YES;

// WKWebView
_WKWebView = [[WKWebView alloc] initWithFrame:contentView.frame];
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
_WKWebView = [[WKWebView alloc] initWithFrame:contentView.frame configuration:config];
[_WKWebView setAutoresizingMask:(NSViewHeightSizable | NSViewWidthSizable)];

[contentView addSubview:_WKWebView];
[contentView addSubview:_webView];
}


Expand Down
Loading