未验证 提交 5cd9ed55 编写于 作者: Y yixiangboy 提交者: GitHub

Merge pull request #195 from csc-EricWu/master

增加block方式注入插件
......@@ -69,6 +69,10 @@
if ([plugin respondsToSelector:@selector(pluginDidLoad:)]) {
[plugin pluginDidLoad:(NSDictionary *)_itemData];
}
void (^handleBlock)(void) = _itemData[@"handleBlock"];
if (handleBlock) {
handleBlock();
}
}
}
......
......@@ -80,6 +80,8 @@ typedef NS_ENUM(NSUInteger, DoraemonManagerPluginType) {
@property (nonatomic, copy) DoraemonH5DoorBlock h5DoorBlock;
- (void)addPluginWithTitle:(NSString *)title icon:(NSString *)iconName desc:(NSString *)desc pluginName:(NSString *)entryName atModule:(NSString *)moduleName;
- (void)addPluginWithTitle:(NSString *)title icon:(NSString *)iconName desc:(NSString *)desc pluginName:(NSString *)entryName atModule:(NSString *)moduleName handle:(void(^)())handleBlock;
- (void)removePluginWithPluginType:(DoraemonManagerPluginType)pluginType;
......
......@@ -200,37 +200,52 @@ typedef void (^DoraemonPerformanceBlock)(NSDictionary *);
- (void)addPluginWithPluginType:(DoraemonManagerPluginType)pluginType
{
DoraemonManagerPluginTypeModel *model = [self getDefaultPluginDataWithPluginType:pluginType];
[self addPluginWithTitle:DoraemonLocalizedString(model.title) icon:model.icon desc:DoraemonLocalizedString(model.desc) pluginName:model.pluginName atModule:DoraemonLocalizedString(model.atModule)];
}
- (void)addPluginWithTitle:(NSString *)title icon:(NSString *)iconName desc:(NSString *)desc pluginName:(NSString *)pluginName atModule:(NSString *)moduleName{
NSMutableDictionary *pluginDic = [[NSMutableDictionary alloc] init];
[pluginDic setValue:title forKey:@"name"];
[pluginDic setValue:iconName forKey:@"icon"];
[pluginDic setValue:desc forKey:@"desc"];
[pluginDic setValue:pluginName forKey:@"pluginName"];
BOOL hasModule = NO;
for (int i=0; i<_dataArray.count; i++) {
NSDictionary *moduleDic = _dataArray[i];
NSString *tempModuleName = moduleDic[@"moduleName"];
if ([tempModuleName isEqualToString:moduleName]) {
NSMutableDictionary *pluginDic = [self foundGroupWithModule:moduleName];
pluginDic[@"name"] = title;
pluginDic[@"icon"] = iconName;
pluginDic[@"desc"] = desc;
pluginDic[@"pluginName"] = pluginName;
}
- (void)addPluginWithTitle:(NSString *)title icon:(NSString *)iconName desc:(NSString *)desc pluginName:(NSString *)entryName atModule:(NSString *)moduleName handle:(void (^)())handleBlock
{
NSMutableDictionary *pluginDic = [self foundGroupWithModule:moduleName];
pluginDic[@"name"] = title;
pluginDic[@"icon"] = iconName;
pluginDic[@"desc"] = desc;
pluginDic[@"pluginName"] = entryName;
pluginDic[@"handleBlock"] = [handleBlock copy];
}
- (NSMutableDictionary *)foundGroupWithModule:(NSString *)module
{
NSMutableDictionary *pluginDic = [NSMutableDictionary dictionary];
pluginDic[@"moduleName"] = module;
__block BOOL hasModule = NO;
[self.dataArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSDictionary *moduleDic = obj;
NSString *moduleName = moduleDic[@"moduleName"];
if ([moduleName isEqualToString:module]) {
hasModule = YES;
NSMutableArray *pluginArray = moduleDic[@"pluginArray"];
if (pluginArray) {
[pluginArray addObject:pluginDic];
}
[moduleDic setValue:pluginArray forKey:@"pluginArray"];
*stop = YES;
}
}
}];
if (!hasModule) {
NSMutableArray *pluginArray = [[NSMutableArray alloc] initWithObjects:pluginDic, nil];
[self registerPluginArray:pluginArray withModule:moduleName];
[self registerPluginArray:pluginArray withModule:module];
}
return pluginDic;
}
- (void)removePluginWithPluginType:(DoraemonManagerPluginType)pluginType
{
DoraemonManagerPluginTypeModel *model = [self getDefaultPluginDataWithPluginType:pluginType];
......
......@@ -27,6 +27,11 @@
//DDLogInfo(@"点击添加埋点11111");
}
[[DoraemonManager shareInstance] addPluginWithTitle:DoraemonLocalizedString(@"测试插件") icon:@"doraemon_default" desc:DoraemonLocalizedString(@"测试插件") pluginName:@"TestPlugin" atModule:DoraemonLocalizedString(@"业务工具")];
[[DoraemonManager shareInstance] addPluginWithTitle:@"block方式加入插件" icon:@"doraemon_default" desc:@"测试插件" pluginName:@"TestPlugin" atModule:DoraemonLocalizedString(@"业务工具") handle:^{
NSLog(@"handle block plugin");
}];
[[DoraemonManager shareInstance] addStartPlugin:@"StartPlugin"];
[[DoraemonManager shareInstance] install];
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册