BUJSBDefine.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. //
  2. // BUJSBDefine.h
  3. // BURexxar
  4. //
  5. // Created by muhuai on 2017/5/5.
  6. // Copyright © 2017年 muhuai. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. //#import "BURexxarEngine.h"
  10. #define BU_EXPORT_HANDLER(NAME) - (void)NAME##WithParam:(NSDictionary *)param callback:(BUJSBResponse)callback webView:(UIView<BURexxarEngine> *)webview controller:(UIViewController *)controller;
  11. #define _BU_HANDLER_SET(NAME, HANDLERS) \
  12. - (NSSet<NSString *> *)NAME { \
  13. if (![HANDLERS isKindOfClass:[NSArray class]]) {\
  14. return nil;\
  15. }\
  16. return [NSSet setWithArray:HANDLERS];\
  17. }
  18. #define ARRAY(...) [NSArray arrayWithObjects: (id []){ __VA_ARGS__ } count: sizeof((id []){ __VA_ARGS__ }) / sizeof(id)]
  19. #define BU_PROTECTED_HANDLER(...) \
  20. _BU_HANDLER_SET(protectedHandlerSet, ARRAY(__VA_ARGS__))
  21. #define BU_PRIVATE_HANDLER(...) \
  22. _BU_HANDLER_SET(privateHandlerSet, ARRAY(__VA_ARGS__))
  23. #define BU_CALLBACK_SUCCESS \
  24. if (callback) {\
  25. callback(BUJSBMsgSuccess, @{@"code": @"1"});\
  26. }\
  27. #define BU_CALLBACK_FAILED \
  28. if (callback) {\
  29. callback(BUJSBMsgFailed, @{@"code": @"0"});\
  30. }\
  31. #define BU_CALLBACK_FAILED_MSG(msg) \
  32. if (callback) {\
  33. callback(BUJSBMsgFailed, @{@"code": @"0", @"msg": [NSString stringWithFormat:msg]? :@""});\
  34. }\
  35. #define BU_CALLBACK_WITH_MSG(status, msg) \
  36. if (callback) {\
  37. callback(status, @{@"code": status == BUJSBMsgSuccess? @"1": @"0", @"msg": [NSString stringWithFormat:msg]? [NSString stringWithFormat:msg] :@""});\
  38. }\
  39. typedef NS_ENUM(NSUInteger, BUJSBInstanceType) {
  40. BUJSBInstanceTypeNormal, //每次调用都是不同实例(默认, 推荐)
  41. BUJSBInstanceTypeGlobal, //全局单例, 需要实现 +(instance)sharedPlugin;
  42. BUJSBInstanceTypeWebView, //对同一个webview复用一个实例
  43. };
  44. typedef NS_ENUM(NSUInteger, BUJSBAuthType){
  45. BUJSBAuthPublic, // 所有均可调用(默认)
  46. BUJSBAuthProtected, //内部domain,及外部授权可调用
  47. BUJSBAuthPrivate // 仅内部domain,appinfo不可见
  48. };
  49. typedef enum : NSUInteger {
  50. BUJSBMsgSuccess,
  51. BUJSBMsgFailed,
  52. BUJSBMsgParamError,
  53. BUJSBMsgNoHandler,
  54. BUJSBMsgNoPermission
  55. } BUJSBMsg;
  56. typedef NS_ENUM(NSInteger, BUJSBResultCode){
  57. BUJSBResultCodeError = -2, // jsb结果错误cod回传
  58. BUJSBResultCodeSuccess = 200, // jsb结果成功cod回传
  59. };
  60. typedef void(^BUJSBResponse)(BUJSBMsg, NSDictionary *);