Commit d112636d17a19eba0cf0bee45522bb83912c9dee
1 parent
d860b452
与主工程跳转交互
Showing
14 changed files
with
107 additions
and
12 deletions
CNLiveCServiceModule/Classes/Manager/CNLiveCServiceManagerBridge.h
| ... | ... | @@ -21,7 +21,7 @@ typedef NS_ENUM(NSInteger , CNCServiceJumpType) { |
| 21 | 21 | * @param type type |
| 22 | 22 | * @param param 参数 |
| 23 | 23 | */ |
| 24 | -- (void)jumpControllerType:(CNCServiceJumpType)type param:(NSDictionary *)param controller:(UIViewController *)controller; | |
| 24 | +- (void)jumpControllerType:(CNCServiceJumpType)type param:(NSDictionary *_Nullable)param controller:(UIViewController *_Nullable)controller; | |
| 25 | 25 | @end |
| 26 | 26 | |
| 27 | 27 | NS_ASSUME_NONNULL_BEGIN |
| ... | ... | @@ -31,6 +31,7 @@ NS_ASSUME_NONNULL_BEGIN |
| 31 | 31 | @property (nonatomic, strong) id<CNLiveCServiceProtocol> protocol; |
| 32 | 32 | |
| 33 | 33 | + (instancetype) shareManager; |
| 34 | ++ (UIViewController *)viewControllerFromView:(UIView *)view; | |
| 34 | 35 | |
| 35 | 36 | /** |
| 36 | 37 | * 服务号跳转 |
| ... | ... | @@ -40,7 +41,31 @@ NS_ASSUME_NONNULL_BEGIN |
| 40 | 41 | * @param to to |
| 41 | 42 | * @param shopType shopType |
| 42 | 43 | */ |
| 43 | -+ (void) jumpServiceController:(NSString *)serviceId type:(NSString *)type to:(NSString *)to shopType:(NSString *)shopType controller:(UIViewController *)controller; | |
| 44 | ++ (void)jumpServiceController:(NSString *)serviceId | |
| 45 | + type:(NSString *)type | |
| 46 | + to:(NSString *)to | |
| 47 | + shopType:(NSString *)shopType | |
| 48 | + controller:(UIViewController *)controller; | |
| 49 | +/** | |
| 50 | + * 服务号跳转 | |
| 51 | + * | |
| 52 | + * @param type type | |
| 53 | + * @param param 参数 | |
| 54 | + */ | |
| 55 | ++ (void)jumpViewControllerType:(CNCServiceJumpType)type | |
| 56 | + param:(NSDictionary *)param | |
| 57 | + controller:(UIViewController *)controller; | |
| 58 | +/** | |
| 59 | + *服务号跳转 | |
| 60 | + *@param goodsId 商品id | |
| 61 | + */ | |
| 62 | ++ (void)jumpGoodsViewController:(NSString *)goodsId | |
| 63 | + controller:(UIViewController *)controller; | |
| 64 | +/** | |
| 65 | + *服务号跳转 | |
| 66 | + *@param contentId 服务id | |
| 67 | + */ | |
| 68 | ++ (void)jumpGetPageOtherVC:(NSString *)contentId controller:(UIViewController *)controller; | |
| 44 | 69 | @end |
| 45 | 70 | |
| 46 | 71 | NS_ASSUME_NONNULL_END | ... | ... |
CNLiveCServiceModule/Classes/Manager/CNLiveCServiceManagerBridge.m
| ... | ... | @@ -6,6 +6,7 @@ |
| 6 | 6 | // |
| 7 | 7 | |
| 8 | 8 | #import "CNLiveCServiceManagerBridge.h" |
| 9 | +#import "CNLiveServicePresent.h" | |
| 9 | 10 | |
| 10 | 11 | @implementation CNLiveCServiceManagerBridge |
| 11 | 12 | + (instancetype)shareManager{ |
| ... | ... | @@ -37,6 +38,36 @@ |
| 37 | 38 | @"to":to, |
| 38 | 39 | @"shopType":shopType, |
| 39 | 40 | }; |
| 40 | - [[CNLiveCServiceManagerBridge shareManager].protocol jumpControllerType:jumpType param:param controller:controller]; | |
| 41 | + [CNLiveCServiceManagerBridge jumpViewControllerType:jumpType param:param controller:controller]; | |
| 42 | +} | |
| 43 | ++ (void)jumpGoodsViewController:(NSString *)goodsId controller:(UIViewController *)controller | |
| 44 | +{ | |
| 45 | + NSDictionary *param = @{ | |
| 46 | + @"goodsId":goodsId, | |
| 47 | + }; | |
| 48 | + [CNLiveCServiceManagerBridge jumpViewControllerType:CNCServiceJumpTypeGoods param:param controller:controller]; | |
| 49 | +} | |
| 50 | ++ (void)jumpGetPageOtherVC:(NSString *)contentId controller:(UIViewController *)controller{ | |
| 51 | + [QMUITips showLoadingInView:controller.view]; | |
| 52 | + [CNLiveServicePresent loadServiceInfoServiceId:contentId result:^(CNLiveSearchModel * _Nonnull model) { | |
| 53 | + [QMUITips hideAllTips]; | |
| 54 | + [CNLiveCServiceManagerBridge jumpServiceController:model.id type:model.type to:model.to shopType:model.shopType controller:controller]; | |
| 55 | + } error:^{ | |
| 56 | + [QMUITips hideAllTips]; | |
| 57 | + }]; | |
| 58 | +} | |
| 59 | ++ (void)jumpViewControllerType:(CNCServiceJumpType)type param:(NSDictionary *)param controller:(UIViewController *)controller{ | |
| 60 | + | |
| 61 | + [[CNLiveCServiceManagerBridge shareManager].protocol jumpControllerType:type param:param controller:controller]; | |
| 62 | +} | |
| 63 | + | |
| 64 | ++ (UIViewController *)viewControllerFromView:(UIView *)view { | |
| 65 | + for (UIView *next = [view superview]; next; next = next.superview) { | |
| 66 | + UIResponder *nextResponder = [next nextResponder]; | |
| 67 | + if ([nextResponder isKindOfClass:[UIViewController class]]) { | |
| 68 | + return (UIViewController *)nextResponder; | |
| 69 | + } | |
| 70 | + } | |
| 71 | + return nil; | |
| 41 | 72 | } |
| 42 | 73 | @end | ... | ... |
CNLiveCServiceModule/Classes/Manager/CNLiveCServicePCH.h
CNLiveCServiceModule/Classes/Model/CNLiveServiceModel.h
| ... | ... | @@ -114,7 +114,7 @@ NS_ASSUME_NONNULL_BEGIN |
| 114 | 114 | @property (nonatomic, copy) NSString *linkType; |
| 115 | 115 | @property (nonatomic, copy) NSString *moreType; |
| 116 | 116 | |
| 117 | -@property (nonatomic, strong) NSArray <CnLivePageContentModel *> *contents; | |
| 117 | +@property (nonatomic, strong) NSArray *contents; | |
| 118 | 118 | |
| 119 | 119 | @end |
| 120 | 120 | NS_ASSUME_NONNULL_END | ... | ... |
CNLiveCServiceModule/Classes/Present/CNLiveServicePresent.h
| ... | ... | @@ -55,6 +55,8 @@ NS_ASSUME_NONNULL_BEGIN |
| 55 | 55 | @param serviceId 服务对应Id,全部服务为@“” |
| 56 | 56 | */ |
| 57 | 57 | + (void)loadAllServiceWithServiceId:(NSString *)serviceId page:(NSString *)page result:(void (^) (NSArray * dataArray, BOOL isLastPage)) succeed error:(void(^)(void))failure; |
| 58 | + | |
| 59 | ++ (void)loadServiceInfoServiceId:(NSString *)serviceId result:(void (^) (CNLiveSearchModel * model)) succeed error:(void(^)(void))failure; | |
| 58 | 60 | @end |
| 59 | 61 | |
| 60 | 62 | NS_ASSUME_NONNULL_END | ... | ... |
CNLiveCServiceModule/Classes/Present/CNLiveServicePresent.m
| ... | ... | @@ -348,4 +348,24 @@ static const CGFloat margin = 15; |
| 348 | 348 | |
| 349 | 349 | }]; |
| 350 | 350 | } |
| 351 | + | |
| 352 | ++ (void)loadServiceInfoServiceId:(NSString *)serviceId result:(nonnull void (^)(CNLiveSearchModel * _Nonnull))succeed error:(void(^)(void))failure | |
| 353 | +{ | |
| 354 | + NSDictionary * params = @{@"sid": CNUserShareModelUid ? CNUserShareModelUid : @"", | |
| 355 | + @"serviceId":serviceId | |
| 356 | + }; | |
| 357 | + | |
| 358 | + [CNLiveNetworking setAllowRequestDefaultArgument:YES]; | |
| 359 | + [CNLiveNetworking setupShowDataResult:NO]; | |
| 360 | + [CNLiveNetworking setupShowResult:YES]; | |
| 361 | + [CNLiveNetworking requestNetworkWithMethod:CNLiveRequestMethodGET URLString:cn_API_Classify(@"/contentApi/getServiceInfo") Param:params CacheType:CNLiveNetworkCacheTypeNetworkOnly CompletionBlock:^(NSURLSessionTask *requestTask, id responseObject, NSError *error) { | |
| 362 | + CNLiveSearchModel *model = [CNLiveSearchModel mj_objectWithKeyValues:responseObject[@"data"]]; | |
| 363 | + if (model) { | |
| 364 | + !succeed?:succeed(model); | |
| 365 | + }else{ | |
| 366 | + [QMUITips showError:error.localizedDescription inView:AppKeyWindow hideAfterDelay:3]; | |
| 367 | + !failure?:failure(); | |
| 368 | + } | |
| 369 | + }]; | |
| 370 | +} | |
| 351 | 371 | @end | ... | ... |
CNLiveCServiceModule/Classes/View/CNLiveGoodsOrVideoHeaderView.m
| ... | ... | @@ -53,6 +53,11 @@ |
| 53 | 53 | make.centerY.equalTo(self); |
| 54 | 54 | }]; |
| 55 | 55 | } |
| 56 | +#pragma mark - Action | |
| 57 | +- (void)moreButtonClick | |
| 58 | +{ | |
| 59 | + [CNLiveCServiceManagerBridge jumpServiceController:_pageModel.blockId type:_pageModel.moreType to:_pageModel.moreUrl shopType:_pageModel.showType controller:[CNLiveCServiceManagerBridge viewControllerFromView:self]]; | |
| 60 | +} | |
| 56 | 61 | |
| 57 | 62 | #pragma mark - Setting&&Getting |
| 58 | 63 | - (void)setPageModel:(CNliveServicePageModel *)pageModel |
| ... | ... | @@ -119,6 +124,7 @@ |
| 119 | 124 | [_moreBtn setTitleColor:CNLiveColorWithHexString(@"#999695") forState:UIControlStateNormal]; |
| 120 | 125 | _moreBtn.titleLabel.font = UIFontMake(12); |
| 121 | 126 | _moreBtn.imagePosition = QMUIButtonImagePositionRight; |
| 127 | + [_moreBtn addTarget:self action:@selector(moreButtonClick) forControlEvents:UIControlEventTouchUpInside]; | |
| 122 | 128 | } |
| 123 | 129 | return _moreBtn; |
| 124 | 130 | } | ... | ... |
CNLiveCServiceModule/Classes/View/CNLiveRecommendCell.m
| ... | ... | @@ -29,7 +29,12 @@ static NSString *CNVideoRecommendCellID = @"CNLiveVideoRecommendCell"; |
| 29 | 29 | } |
| 30 | 30 | #pragma mark - UICollectionViewDelegate |
| 31 | 31 | - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ |
| 32 | - | |
| 32 | + if ([_model.blockName isEqualToString:@"精品音频"]){ | |
| 33 | + [CNLiveCServiceManagerBridge jumpViewControllerType:CNCServiceJumpTypeVideo param:self.model.contents[indexPath.row] controller:[CNLiveCServiceManagerBridge viewControllerFromView:self]]; | |
| 34 | + }else{ | |
| 35 | + CnLivePageContentModel *model = [CnLivePageContentModel mj_objectWithKeyValues:self.model.contents[indexPath.row]]; | |
| 36 | + [CNLiveCServiceManagerBridge jumpGoodsViewController:model.contentId controller:[CNLiveCServiceManagerBridge viewControllerFromView:self]]; | |
| 37 | + } | |
| 33 | 38 | } |
| 34 | 39 | #pragma mark - UICollectionViewDataSource |
| 35 | 40 | - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{ | ... | ... |
CNLiveCServiceModule/Classes/View/CNLiveServiceEpiCell.m
| ... | ... | @@ -67,7 +67,8 @@ static NSString *CNServiceOrLookID = @"CNLiveServiceOrLookCell"; |
| 67 | 67 | } |
| 68 | 68 | #pragma mark - UICollectionViewDelegate |
| 69 | 69 | - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ |
| 70 | - | |
| 70 | + CnLivePageContentModel *model = [CnLivePageContentModel mj_objectWithKeyValues:self.model.contents[indexPath.row]]; | |
| 71 | + [CNLiveCServiceManagerBridge jumpGetPageOtherVC:model.contentId controller:[CNLiveCServiceManagerBridge viewControllerFromView:self]]; | |
| 71 | 72 | } |
| 72 | 73 | #pragma mark - UICollectionViewDataSource |
| 73 | 74 | - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{ | ... | ... |
CNLiveCServiceModule/Classes/ViewController/CNLiveAllServiceVC.m
| ... | ... | @@ -109,7 +109,7 @@ static NSString *HistoryFootID = @"UICollectionFooterView"; |
| 109 | 109 | CNLiveSearchHotsModel *model = self.dataSource[indexPath.section]; |
| 110 | 110 | CNLiveSearchModel *model1 = [CNLiveSearchModel mj_objectWithKeyValues:model.lists[indexPath.row]]; |
| 111 | 111 | [CNLiveServicePresent usedServiceWithServingId:model1.id]; |
| 112 | - | |
| 112 | + [CNLiveCServiceManagerBridge jumpServiceController:model1.id type:model1.type to:model1.to shopType:model1.shopType controller:self]; | |
| 113 | 113 | } |
| 114 | 114 | #pragma mark - UICollectionViewDataSource |
| 115 | 115 | - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{ | ... | ... |
CNLiveCServiceModule/Classes/ViewController/CNLiveMyServicesVC.m
| ... | ... | @@ -100,7 +100,7 @@ static NSString *HotListCellID = @"HotListCellID"; |
| 100 | 100 | - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ |
| 101 | 101 | |
| 102 | 102 | CNLiveSearchModel *model1 = self.dataSource[indexPath.row]; |
| 103 | -#warning 跳转 | |
| 103 | + [CNLiveCServiceManagerBridge jumpServiceController:model1.id type:model1.type to:model1.to shopType:model1.shopType controller:self]; | |
| 104 | 104 | |
| 105 | 105 | } |
| 106 | 106 | #pragma mark - UICollectionViewDataSource | ... | ... |
CNLiveCServiceModule/Classes/ViewController/CNLiveServiceSearchVC.m
| ... | ... | @@ -164,7 +164,8 @@ static NSString *HistoryFootID = @"HistoryFootID"; |
| 164 | 164 | return 75; |
| 165 | 165 | } |
| 166 | 166 | - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ |
| 167 | -#warning 跳转 | |
| 167 | + CNLiveSearchModel *model = self.dataListArr[indexPath.row]; | |
| 168 | + [CNLiveCServiceManagerBridge jumpServiceController:model.id type:model.type to:model.to shopType:model.shopType controller:self]; | |
| 168 | 169 | } |
| 169 | 170 | #pragma mark - UITableViewDataSource |
| 170 | 171 | - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section |
| ... | ... | @@ -182,7 +183,7 @@ static NSString *HistoryFootID = @"HistoryFootID"; |
| 182 | 183 | CNLiveSearchHotsModel *model = self.hDataSources[indexPath.section]; |
| 183 | 184 | if ([model.title isEqualToString:@"热度推荐"]) { |
| 184 | 185 | CNLiveSearchModel *model1 = model.lists[indexPath.row]; |
| 185 | -#warning 跳转 | |
| 186 | + [CNLiveCServiceManagerBridge jumpServiceController:model1.id type:model1.type to:model1.to shopType:model1.shopType controller:self]; | |
| 186 | 187 | }else |
| 187 | 188 | { |
| 188 | 189 | CNLiveHistoryModel *model1 = model.lists[indexPath.row]; | ... | ... |
Example/CNLiveCServiceModule/Base.lproj/CNLiveCServiceModuleImpl.h
| ... | ... | @@ -7,10 +7,11 @@ |
| 7 | 7 | // |
| 8 | 8 | |
| 9 | 9 | #import <Foundation/Foundation.h> |
| 10 | +#import <CNLiveCServiceModule/CNLiveCServiceManagerBridge.h> | |
| 10 | 11 | |
| 11 | 12 | NS_ASSUME_NONNULL_BEGIN |
| 12 | 13 | |
| 13 | -@interface CNLiveCServiceModuleImpl : NSObject | |
| 14 | +@interface CNLiveCServiceModuleImpl : NSObject<CNLiveCServiceProtocol> | |
| 14 | 15 | |
| 15 | 16 | @end |
| 16 | 17 | ... | ... |
Example/CNLiveCServiceModule/Base.lproj/CNLiveCServiceModuleImpl.m