Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 3943943

Browse files
committed
Rework design so that we can provide an OSX version
1 parent a22f5e1 commit 3943943

8 files changed

Lines changed: 325 additions & 274 deletions

File tree

ExampleApp-iOS.xcodeproj/project.pbxproj

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88

99
/* Begin PBXBuildFile section */
1010
2CA045BF17117439006DEE8B /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2CA045B717117439006DEE8B /* InfoPlist.strings */; };
11-
2CA045C017117439006DEE8B /* ExampleApp-iOS-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 2CA045B917117439006DEE8B /* ExampleApp-iOS-Info.plist */; };
1211
2CA045C117117439006DEE8B /* ExampleApp.html in Resources */ = {isa = PBXBuildFile; fileRef = 2CA045BB17117439006DEE8B /* ExampleApp.html */; };
1312
2CA045C217117439006DEE8B /* ExampleAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CA045BD17117439006DEE8B /* ExampleAppDelegate.m */; };
1413
2CA045C317117439006DEE8B /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CA045BE17117439006DEE8B /* main.m */; };
1514
2CA045C81711745D006DEE8B /* WebViewJavascriptBridge.js.txt in Resources */ = {isa = PBXBuildFile; fileRef = 2CA045C61711745D006DEE8B /* WebViewJavascriptBridge.js.txt */; };
16-
2CA045C91711745D006DEE8B /* WebViewJavascriptBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CA045C71711745D006DEE8B /* WebViewJavascriptBridge.m */; };
15+
2CA045C91711745D006DEE8B /* WebViewJavascriptBridgeAbstract.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CA045C71711745D006DEE8B /* WebViewJavascriptBridgeAbstract.m */; };
16+
2CA0460817117BF9006DEE8B /* WebViewJavascriptBridge_iOS.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CA0460717117BF9006DEE8B /* WebViewJavascriptBridge_iOS.m */; };
1717
2CEB3EC01602563600548120 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CEB3EBF1602563600548120 /* UIKit.framework */; };
1818
2CEB3EC21602563600548120 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CEB3EC11602563600548120 /* Foundation.framework */; };
1919
2CEB3EC41602563600548120 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2CEB3EC31602563600548120 /* CoreGraphics.framework */; };
@@ -28,9 +28,11 @@
2828
2CA045BC17117439006DEE8B /* ExampleAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExampleAppDelegate.h; sourceTree = "<group>"; };
2929
2CA045BD17117439006DEE8B /* ExampleAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ExampleAppDelegate.m; sourceTree = "<group>"; };
3030
2CA045BE17117439006DEE8B /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
31-
2CA045C51711745D006DEE8B /* WebViewJavascriptBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridge.h; sourceTree = "<group>"; };
31+
2CA045C51711745D006DEE8B /* WebViewJavascriptBridgeAbstract.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridgeAbstract.h; sourceTree = "<group>"; };
3232
2CA045C61711745D006DEE8B /* WebViewJavascriptBridge.js.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebViewJavascriptBridge.js.txt; sourceTree = "<group>"; };
33-
2CA045C71711745D006DEE8B /* WebViewJavascriptBridge.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridge.m; sourceTree = "<group>"; };
33+
2CA045C71711745D006DEE8B /* WebViewJavascriptBridgeAbstract.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridgeAbstract.m; sourceTree = "<group>"; };
34+
2CA0460617117BF9006DEE8B /* WebViewJavascriptBridge_iOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebViewJavascriptBridge_iOS.h; sourceTree = "<group>"; };
35+
2CA0460717117BF9006DEE8B /* WebViewJavascriptBridge_iOS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebViewJavascriptBridge_iOS.m; sourceTree = "<group>"; };
3436
2CEB3EBB1602563600548120 /* ExampleApp-iOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ExampleApp-iOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
3537
2CEB3EBF1602563600548120 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
3638
2CEB3EC11602563600548120 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
@@ -70,9 +72,11 @@
7072
2CA045C41711745D006DEE8B /* WebViewJavascriptBridge */ = {
7173
isa = PBXGroup;
7274
children = (
73-
2CA045C51711745D006DEE8B /* WebViewJavascriptBridge.h */,
75+
2CA045C51711745D006DEE8B /* WebViewJavascriptBridgeAbstract.h */,
7476
2CA045C61711745D006DEE8B /* WebViewJavascriptBridge.js.txt */,
75-
2CA045C71711745D006DEE8B /* WebViewJavascriptBridge.m */,
77+
2CA045C71711745D006DEE8B /* WebViewJavascriptBridgeAbstract.m */,
78+
2CA0460617117BF9006DEE8B /* WebViewJavascriptBridge_iOS.h */,
79+
2CA0460717117BF9006DEE8B /* WebViewJavascriptBridge_iOS.m */,
7680
);
7781
path = WebViewJavascriptBridge;
7882
sourceTree = SOURCE_ROOT;
@@ -158,7 +162,6 @@
158162
files = (
159163
2CF988CE170E0BA500CA0CC7 /* [email protected] in Resources */,
160164
2CA045BF17117439006DEE8B /* InfoPlist.strings in Resources */,
161-
2CA045C017117439006DEE8B /* ExampleApp-iOS-Info.plist in Resources */,
162165
2CA045C117117439006DEE8B /* ExampleApp.html in Resources */,
163166
2CA045C81711745D006DEE8B /* WebViewJavascriptBridge.js.txt in Resources */,
164167
);
@@ -173,7 +176,8 @@
173176
files = (
174177
2CA045C217117439006DEE8B /* ExampleAppDelegate.m in Sources */,
175178
2CA045C317117439006DEE8B /* main.m in Sources */,
176-
2CA045C91711745D006DEE8B /* WebViewJavascriptBridge.m in Sources */,
179+
2CA045C91711745D006DEE8B /* WebViewJavascriptBridgeAbstract.m in Sources */,
180+
2CA0460817117BF9006DEE8B /* WebViewJavascriptBridge_iOS.m in Sources */,
177181
);
178182
runOnlyForDeploymentPostprocessing = 0;
179183
};

ExampleApp-iOS/ExampleAppDelegate.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#import <UIKit/UIKit.h>
2-
#import "WebViewJavascriptBridge.h"
2+
#import "WebViewJavascriptBridge_iOS.h"
33

44
@interface ExampleAppDelegate : UIResponder <UIApplicationDelegate>
55

WebViewJavascriptBridge/WebViewJavascriptBridge.h

Lines changed: 0 additions & 17 deletions
This file was deleted.

WebViewJavascriptBridge/WebViewJavascriptBridge.m

Lines changed: 0 additions & 248 deletions
This file was deleted.
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#define kMessageSeparator @"__WVJB_MESSAGE_SEPERATOR__"
2+
#define kCustomProtocolScheme @"wvjbscheme"
3+
#define kQueueHasMessage @"__WVJB_QUEUE_MESSAGE__"
4+
5+
typedef void (^WVJBResponseCallback)(id responseData);
6+
typedef void (^WVJBHandler)(id data, WVJBResponseCallback responseCallback);
7+
8+
@interface WebViewJavascriptBridgeAbstract : NSObject
9+
10+
@property (nonatomic, strong) id webView;
11+
@property (nonatomic, strong) id webViewDelegate;
12+
@property (nonatomic, strong) NSMutableArray *startupMessageQueue;
13+
@property (nonatomic, strong) NSMutableDictionary *responseCallbacks;
14+
@property (nonatomic, strong) NSMutableDictionary *messageHandlers;
15+
@property (atomic, assign) NSInteger uniqueId;
16+
@property (nonatomic, copy) WVJBHandler messageHandler;
17+
18+
+ (void)enableLogging;
19+
- (void)send:(id)message;
20+
- (void)send:(id)message responseCallback:(WVJBResponseCallback)responseCallback;
21+
- (void)registerHandler:(NSString*)handlerName handler:(WVJBHandler)handler;
22+
- (void)callHandler:(NSString*)handlerName;
23+
- (void)callHandler:(NSString*)handlerName data:(id)data;
24+
- (void)callHandler:(NSString*)handlerName data:(id)data responseCallback:(WVJBResponseCallback)responseCallback;
25+
- (void)reset;
26+
27+
@end
28+
29+
@interface WebViewJavascriptBridgeAbstract (Protected)
30+
31+
- (void)_flushMessageQueue;
32+
- (void)_sendData:(NSDictionary*)data responseCallback:(WVJBResponseCallback)responseCallback handlerName:(NSString*)handlerName;
33+
- (void)_queueMessage:(NSDictionary*)message;
34+
- (void)_dispatchMessage:(NSDictionary*)message;
35+
- (NSString*)_serializeMessage:(NSDictionary*)message;
36+
- (NSDictionary*)_deserializeMessageJSON:(NSString*)messageJSON;
37+
- (void)_log:(NSString*)type json:(NSString*)output;
38+
39+
@end

0 commit comments

Comments
 (0)