基本框架,分成独立模块使用,pod 'TimCore'

网友投稿 744 2022-10-27

基本框架,分成独立模块使用,pod 'TimCore'

基本框架,分成独立模块使用,pod 'TimCore'

TimCore

TimCore分为 core 核心布恩,和 TimJpush ,TimShare ,TimBaseViewModel ,TimAFAppConnectClient,几个子模块,子模块都可以独立使用,互不影响,

Timcore

Timcore 为其他的 module 需要的基本支持部分,基于RAC 2.5实现,主要为 OC 版本提供支持,

TimJpush 简化推送的代码逻辑,这个使用的 jpush 作为拓展,只需要设置3方 sdk 的 key 和 一个 收到推送的 block 即可

TimShare 简化分享的代码逻辑,这个使用的 Sharesdk 作为拓展,只需要设置 各个3方 sdk 的 key 和 一个 分享成功的回调即可

TimBaseViewModel 实现基于 RAC 实现的 MVVM 网络请求方案,支持上传 key-value 数据,支持上传 图像等其他二进制数据, 返回数据支持重新处理之后才传递给下一级, 良好的支持列表数据返回,自带分页管理, 支持整体配置基本的网络访问参数, 完全解耦合多个网络请求的冲突问题

TimAFAppConnectClient 基于 AF 3.0 做的一个简化网络请求的设置模块,支持 设置 基本的数据来过滤 非正常状态码的数据,简化大量网络请求的代码, 新增 DNS 处理和 https 中间人攻击校验

Timcore

Timcore 为其他的 module 需要的基本支持部分,基于RAC 2.5实现,主要为 OC 版本提供支持,主要对外提供 TimCoreAppDelegate : UIResponder 的基础类,其他子模块在需要的时候都会引入这个部分//定义@interface TimCoreAppDelegate : UIResponder @property (strong, nonatomic) UIWindow *window;+(TimCoreAppDelegate*)shareInstance;@end///继承使用--推送部分@interface TimCoreAppDelegate (myJpush)///code@endTimJpush简化推送的代码逻辑,这个使用的 jpush 作为拓展,只需要设置3方 sdk 的 key 和 一个 收到推送的 block 即可借鉴于 jiaAppDelegate 的,[jiaAppDelegate] , 不能忘记 [super application:application didFinishLaunchingWithOptions:launchOptions]; 借推送测试工具 +(void)load{[super load];///设置极光的 push 方案[TimJpushConfigManager sharedInstance].enableJpush = YES;[TimJpushConfigManager sharedInstance].pushAppKey = @"XXXX";[TimJpushConfigManager sharedInstance].apsForProduction = YES;}- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {// Override point for customization after application launch.///不能忘记[super application:application didFinishLaunchingWithOptions:launchOptions];__weak AppDelegate *weak_self =self;self.pushBlock = ^(NSDictionary *userInfo, UIApplicationState state){///do it by yourself//STRONG_SELF};return YES;}亲爱的各位同行,如果你已经浏览到这,请帮我点下右上角星星Star,非常感谢 [jiaAppDelegate]: https://github.com/TimRabbit/TimCore.gitTimShare简化分享的代码逻辑,这个使用的 sharesdk 作为拓展,只需要设置3方 sdk 的 key 和 一个 收到mob的 block 即可因为 qq 的 sdk导致 pod lib lint 不通过,typedef void(^ShareResult)(BOOL sucess,NSString *msg);@interface AppDelegate(share)-(void)initSharedSDK;-(void)shareInfo:(NSString *)title content:(NSString *)content image:(id)image url:(NSString *)url actionSheet:(UIView *)actionSheet onShareStateChanged:(ShareResult)shareStateChangedHandler;@endTimBaseViewModelTimBaseViewModel 实现基于 RAC 实现的 MVVM 网络请求方案,支持上传 key-value 数据,支持上传 图像等其他二进制数据, 返回数据支持重新处理之后才传递给下一级, 良好的支持列表数据返回,自带分页管理, 支持整体配置基本的网络访问参数, ```` -(void)initialize {

[super initialize];

///设置请求地址 self.path = @"show-img/view"; @weakify(self)    ///处理上传数据 self.inputBlock = ^(NSMutableDictionary *para ) { @strongify(self) if (para && self. id ) { [para setObject:self.id forKey:@"id"]; } return para; };   ///处理图片上传数据,  基于AF self.formDataInputBlock = ^(id _Nullable formData) { @strongify(self) if (self.object.img) { NSInteger I =0 ; for (UIImage *image in @[self.object.img] ) { NSData *data = UIImagePNGRepresentation(image); if(data == nil){ data = UIImageJPEGRepresentation(image,1); } if(data){ [formData appendPartWithFileData:data name:[NSString stringWithFormat:@"pic[%ld]",I++] fileName:@"pic.png"mimeType:@"image/png" ]; } } } };

///非列表数据输出 self.outputBlock = ^(NSDictionary *para ) { @strongify(self)       self.obj = [[XXXDetailObject alloc] mj_setKeyValues:para]; return self.obj ; };

///列表数据输出 self.block = ^NSArray *(NSDictionary *dict){       return [xxxxObject   mj_objectArrayWithKeyValuesArray: dict   ]; };

}

TimAFAppConnectClient

  • TimAFAppConnectClient 基于 AF 3.0 做的一个简化网络请求的设置模块,支持 设置 基本的数据来过滤 非正常状态码的数据,简化大量网络请求的代码
  • ````objectivec///设置状态码等基本数据-(void)setSucessCode:(NSInteger)sucessCode statusCodeKey:(NSString *_Nonnull)statusCodeKey msgKey:(NSString *_Nonnull)msgKey responseDataKey:(NSString * _Nonnull)responseDataKey;   ///常见 post 请求 /** * POST请求 * * @param methodName 方法名 * @param param 参数 * @param checkNullData 检查data是否为空 * @param successBlock 成功回调 * @param failedBlock 失败回调 */- (void)skPostWithMethodName:(NSString *_Nonnull)methodName param:(NSDictionary * _Nullable )param checkNullData:(BOOL)checkNullData successBlock:(void(^_Nullable)(NSURLSessionDataTask * _Nonnull task, id _Nullable json))successBlock failedBlock:(void(^_Nullable)(NSURLSessionDataTask * _Nonnull task, id _Nullable json, SKErrorMsgType errorType, NSError *_Nullable error))failedBlock;

    版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:LeetCode刷题之旅(中等 -2):997. 找到小镇的法官
下一篇:后端日志【15】:时间过的很快,坚持自我修炼的两个月又10天,我现在有什么感觉呢?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~