123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812 |
- //
- // LCTools.m
- // LiveChat
- //
- // Created by 张灿 on 2018/4/10.
- // Copyright © 2018年 caicai. All rights reserved.
- //
- #import "LCTools.h"
- #import "WHKeyChain.h"
- #import "YOUPAILCTabBarVC.h"
- #import "YOUPAILCMessageVC.h"
- #import <CommonCrypto/CommonHMAC.h>
- #import <CommonCrypto/CommonDigest.h>
- #import <sys/utsname.h>
- #import "AppDelegate.h"
- #import "YOUPAIZYFirstVC.h"
- #import "YOUPAIRealPersonFaceVC.h"
- #import "YOUPAILZLiveVerifyResultVC.h"
- #import "YOUPAIRealPersonFaceVC.h"
- #import <RPSDK/RPSDK.h>
- #import "YOUPAILZLiveVerifyResultVC.h"
- #import "LZAlertWindow.h"
- #import "YOUPAILCBigCastProtocolVC.h"
- #import "UIViewController+TFPresent.h"
- #import "YMPasswordLoginViewController.h"
- #import "YOUPAILCUploadCameraAuditVC.h"
- #define KEY_DEVICE_UUID_KEYCHAIN @"KEY_DEVICE_UUID_KEYCHAIN" //keyChain存档的uuid
- #define KEY_LOAD_UUID_TABLENAME @"KEY_LOAD_UUID_TABLENAME" //读取字典对象的健名
- @implementation YOUPAILZRichTextStyle
- + (instancetype)richTextStyleWithText:(NSString *)text font:(UIFont *)font color:(UIColor *)color{
- return [[self alloc] initWithText:text font:font color:color];
- }
- - (instancetype)initWithText:(NSString *)text font:(UIFont *)font color:(UIColor *)color{
- if (self = [super init]) {
- self.text = text;
- self.font = font;
- self.color = color;
- }
- return self;
- }
- @end
- static LCTools *function = nil;
- @interface LCTools()
- @property (nonatomic, copy ) NSString *networkStatus;
- @end
- @implementation LCTools
- +(id)share
- {
- if (function ==nil) {
- function = [[self alloc]init];
- }
- return function;
- }
- + (CGFloat)getStatusBarHight {
- CGFloat statusBarHeight = 0;
- if (@available(iOS 13.0, *)) {
- statusBarHeight = [UIApplication sharedApplication].windows.firstObject.windowScene.statusBarManager.statusBarFrame.size.height;
- } else {
- statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height;
- }
- return statusBarHeight;
- }
- + (NSString*)getPasteString{
- NSString *text = @"#vqu#";
- UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
- if([pasteboard.string hasPrefix:text]){
- NSString* caicaiNumStr = [pasteboard.string substringFromIndex:text.length];//截取前八个字符----每次换包必须改
- return caicaiNumStr;
- }else{
- return @"";
- }
- }
- /// 提取粘贴板数据
- + (void)extractPasteboardSource:(void(^)(NSString *extractSource))handle{
- //获取全局队列
-
- dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(){
- //iOS14及以上,先检测剪切板内容,符合规则再读取剪切板
- if (@available(iOS 14.0, *)) {
- UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
- NSSet *pasteDetectionPatternSet = [NSSet setWithObjects:UIPasteboardDetectionPatternNumber,
- UIPasteboardDetectionPatternProbableWebURL,
- UIPasteboardDetectionPatternProbableWebSearch,
- nil];
- [pasteboard detectPatternsForPatterns: pasteDetectionPatternSet
- completionHandler:^(NSSet<UIPasteboardDetectionPattern> *foundPattenSet, NSError *e) {
- BOOL isNumber = NO, isUrl = NO, isWebSearch = NO;
- for (UIPasteboardDetectionPattern pattern in foundPattenSet) {
- if ([pattern isEqualToString: UIPasteboardDetectionPatternNumber]) {
- isNumber = YES;
- }
- if ([pattern isEqualToString: UIPasteboardDetectionPatternProbableWebURL]) {
- isUrl = YES;
- }
- if ([pattern isEqualToString: UIPasteboardDetectionPatternProbableWebSearch]) {
- isWebSearch = YES;
- }
- }
- if (isNumber || isUrl || isWebSearch) {
- //符合规则,在下一个runloop读取剪切板
- dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^() {
- UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
- NSString *string = [pasteboard.string copy];
- handle(string);
- });
- }
- }];
- } else {
- //iOS14以下,直接读剪切板
- UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
- NSString *string = [pasteboard.string copy];
- handle(string);
- }
- });
- }
- + (UIImage*)giftImgWithGiftUrlStr:(NSString*)giftUrlStr{
- UIImage* image;
- NSString* giftName = [[giftUrlStr componentsSeparatedByString:@"/"]lastObject];
- NSString* giftCanchesPath= [[NSString alloc]initWithFormat:@"%@/%@/",CachesPath,@"Gift"];
- image = [UIImage imageNamed:[giftCanchesPath stringByAppendingPathComponent:giftName]];
- if (!image) {
- if (![[NSFileManager defaultManager] fileExistsAtPath:giftCanchesPath])
- {
- [[NSFileManager defaultManager] createDirectoryAtPath:giftCanchesPath
- withIntermediateDirectories:NO
- attributes:nil
- error:nil];
- }
- NSString *imagePath =[giftCanchesPath stringByAppendingPathComponent:giftName];
- if (![[NSFileManager defaultManager] fileExistsAtPath:imagePath]){
- NSString* urlStr = [NSString stringWithFormat:@"%@/%@",[LCSaveData getImageUrl]?[LCSaveData getImageUrl]:BaseImgUrl,giftUrlStr];
- NSData* data = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlStr]];
- image = [UIImage imageWithData:data];
- [UIImagePNGRepresentation([UIImage imageWithData:data]) writeToFile:imagePath atomically:YES];
- }
- }
-
- return image;
- }
- + (NSData*)giftSVGAWithSvgaUrlStr:(NSString*)svgaUrlStr
- {
- NSData *data;
- NSString* svgaName = [[svgaUrlStr componentsSeparatedByString:@"/"]lastObject];
- NSString* svgaCanchesPath= [[NSString alloc]initWithFormat:@"%@/%@/",CachesPath,@"SVGA"];
- data = [NSData dataWithContentsOfFile:[svgaCanchesPath stringByAppendingPathComponent:svgaName]];
- if (!data) {
-
- if (![[NSFileManager defaultManager] fileExistsAtPath:svgaCanchesPath])
- {
- [[NSFileManager defaultManager] createDirectoryAtPath:svgaCanchesPath
- withIntermediateDirectories:NO
- attributes:nil
- error:nil];
- }
- NSString *svgaPath =[svgaCanchesPath stringByAppendingPathComponent:svgaName];
- if (![[NSFileManager defaultManager] fileExistsAtPath:svgaPath]){
- dispatch_queue_t queue = dispatch_queue_create("SvgaCache", NULL);
- dispatch_async(queue, ^{
- NSString* urlStr = [NSString stringWithFormat:@"%@/%@",[LCSaveData getImageUrl]?[LCSaveData getImageUrl]:BaseImgUrl,svgaUrlStr];
- NSData* data = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlStr]];
- [data writeToFile:svgaPath atomically:YES];
- });
- // dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
- // NSString* urlStr = [NSString stringWithFormat:@"%@/%@",[LCSaveData getImageUrl]?[LCSaveData getImageUrl]:BaseImgUrl,svgaUrlStr];
- // NSData* data = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlStr]];
- // [data writeToFile:svgaPath atomically:YES];
- // });
- }
- }
- return data;
- }
- + (UIViewController *)getCurrentVC {
- // UIWindow *window = [[UIApplication sharedApplication].windows firstObject];
- // if (!window) {
- // return nil;
- // }
- // UIView *tempView;
- // for (UIView *subview in window.subviews) {
- // if ([[subview.classForCoder description] isEqualToString:@"UILayoutContainerView"]) {
- // tempView = subview;
- // break;
- // }
- // }
- // if (!tempView) {
- // tempView = [window.subviews lastObject];
- // }
- //
- // id nextResponder = [tempView nextResponder];
- // while (![nextResponder isKindOfClass:[UIViewController class]] || [nextResponder isKindOfClass:[UINavigationController class]] || [nextResponder isKindOfClass:[UITabBarController class]]) {
- // tempView = [tempView.subviews firstObject];
- //
- // if (!tempView) {
- // return nil;
- // }
- // nextResponder = [tempView nextResponder];
- // }
- // return (UIViewController *)nextResponder;
-
- UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController;
-
- UIViewController *currentVC = [self getCurrentVCFrom:rootViewController];
-
- return currentVC;
- }
- + (UIViewController *)getContainNavigationControllerCurrentVC{
-
- UIViewController *rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController;
-
- UIViewController *currentVC = [self getContainNavigationControllerCurrentVCFrom:rootViewController];
-
- return currentVC;
- }
- + (UIViewController *)getContainNavigationControllerCurrentVCFrom:(UIViewController *)rootVC{
- UIViewController *currentVC;
- if ([rootVC isKindOfClass:[UITabBarController class]]) {
- // 根视图为UITabBarController
-
- currentVC = [self getContainNavigationControllerCurrentVCFrom:[(UITabBarController *)rootVC selectedViewController]];
-
- } else if ([rootVC isKindOfClass:[UINavigationController class]]){
- // 根视图为UINavigationController
-
- currentVC = [self getContainNavigationControllerCurrentVCFrom:[(UINavigationController *)rootVC viewControllers].lastObject];
-
- } else {
- // 根视图为非导航类
-
- currentVC = rootVC;
- }
-
- return currentVC;
- }
- + (UIViewController *)getCurrentVCFrom:(UIViewController *)rootVC
- {
- UIViewController *currentVC;
-
- if ([rootVC presentedViewController]) {
- // 视图是被presented出来的
-
- rootVC = [rootVC presentedViewController];
- }
-
- if ([rootVC isKindOfClass:[UITabBarController class]]) {
- // 根视图为UITabBarController
-
- currentVC = [self getCurrentVCFrom:[(UITabBarController *)rootVC selectedViewController]];
-
- } else if ([rootVC isKindOfClass:[UINavigationController class]]){
- // 根视图为UINavigationController
-
- currentVC = [self getCurrentVCFrom:[(UINavigationController *)rootVC visibleViewController]];
-
- } else {
- // 根视图为非导航类
-
- currentVC = rootVC;
- }
-
- return currentVC;
- }
- +(UIViewController *)getNilPresentationController:(UIViewController *)viewController{
- UIViewController *vc = viewController;
- while (vc.presentedViewController) {
- vc = vc.presentedViewController;
- }
- return vc;
- }
- + (NSString*)getUUIDString{
-
- NSMutableDictionary *readKeyChainUUID = (NSMutableDictionary *)[WHKeyChain load:KEY_DEVICE_UUID_KEYCHAIN];
- if(!readKeyChainUUID){
- //需要写入
- NSString *uuidStr = [[NSUUID UUID] UUIDString];
- NSString *uuid = [[uuidStr stringByReplacingOccurrencesOfString:@"0" withString:@""] stringByReplacingOccurrencesOfString:@"-" withString:@""];
- // 保存自己生成的
- NSDictionary *dict = [NSDictionary dictionaryWithObject:uuid forKey:KEY_LOAD_UUID_TABLENAME];
- [WHKeyChain save:KEY_DEVICE_UUID_KEYCHAIN data:dict];
-
- return uuid;
-
- }
- return readKeyChainUUID[@"KEY_LOAD_UUID_TABLENAME"];
- }
- + (UIColor*)getBkgRandomColor{
- NSArray* bkgColorArray = @[HexColorFromRGB(0xe5c9c9),HexColorFromRGB(0xc9d8e5),HexColorFromRGB(0xc9d3c1),HexColorFromRGB(0xcbcbc8),HexColorFromRGB(0xd3cbe4),HexColorFromRGB(0xcdd1d6)];
- int index = arc4random() % 6;
- return bkgColorArray[index];
- }
- + (UIImage *)image:(UIImage *)image rotation:(UIImageOrientation)orientation
- {
- long double rotate = 0.0;
- CGRect rect;
-
- float translateX = 0;
-
- float translateY = 0;
-
- float scaleX = 1.0;
-
- float scaleY = 1.0;
-
- switch (orientation) {
-
- case UIImageOrientationLeft:
-
- rotate = M_PI_2;
-
- rect = CGRectMake(0, 0, image.size.height, image.size.width);
-
- translateX = 0;
-
- translateY = -rect.size.width;
-
- scaleY = rect.size.width/rect.size.height;
-
- scaleX = rect.size.height/rect.size.width;
-
- break;
-
- case UIImageOrientationRight:
-
- rotate = 3 * M_PI_2;
-
- rect = CGRectMake(0, 0, image.size.height, image.size.width);
-
- translateX = -rect.size.height;
-
- translateY = 0;
-
- scaleY = rect.size.width/rect.size.height;
-
- scaleX = rect.size.height/rect.size.width;
-
- break;
-
- case UIImageOrientationDown:
-
- rotate = M_PI;
-
- rect = CGRectMake(0, 0, image.size.width, image.size.height);
-
- translateX = -rect.size.width;
-
- translateY = -rect.size.height;
-
- break;
-
- default:
-
- rotate = 0.0;
-
- rect = CGRectMake(0, 0, image.size.width, image.size.height);
-
- translateX = 0;
-
- translateY = 0;
-
- break;
-
- }
- // 传入的View.frame.size是0的话,直接返回nil,防止 UIGraphicsBeginImageContext() 传入0,导致崩溃
- if (CGSizeEqualToSize(rect.size, CGSizeZero)) {
- return nil;
- }
- UIGraphicsBeginImageContext(rect.size);
-
- CGContextRef context = UIGraphicsGetCurrentContext();
-
- //做CTM变换
-
- CGContextTranslateCTM(context, 0.0, rect.size.height);
-
- CGContextScaleCTM(context, 1.0, -1.0);
-
- CGContextRotateCTM(context, rotate);
-
- CGContextTranslateCTM(context, translateX, translateY);
- CGContextScaleCTM(context, scaleX, scaleY);
-
- //绘制图片
-
- CGContextDrawImage(context, CGRectMake(0, 0, rect.size.width, rect.size.height), image.CGImage);
- UIImage *newPic = UIGraphicsGetImageFromCurrentImageContext();
- return newPic;
-
- }
- //获取当前时间戳
- + (NSString*)getCurrentTimestamp{
- NSDateFormatter *formatter = [[NSDateFormatter alloc] init] ;
- [formatter setDateStyle:NSDateFormatterMediumStyle];
- [formatter setTimeStyle:NSDateFormatterShortStyle];
- [formatter setDateFormat:@"YYYY-MM-dd HH:mm:ss"];
- NSTimeZone* timeZone = [NSTimeZone timeZoneWithName:@"Asia/Shanghai"];
- [formatter setTimeZone:timeZone];
- NSDate *datenow = [NSDate date];//现在时间,你可以输出来看下是什么格式
- NSString *timeSp = [NSString stringWithFormat:@"%ld", (long)[datenow timeIntervalSince1970]];
- return timeSp;
- }
- //获取当前时间戳 豪秒
- + (NSString*)getCurrentMillisecondTimestamp{
- NSDate* dat = [NSDate dateWithTimeIntervalSinceNow:0];
- NSTimeInterval a = [dat timeIntervalSince1970];
- NSString *timeSp = [NSString stringWithFormat:@"%0.f", a * 1000];//转为字符型
- return timeSp;
- }
- + (NSString *)hmac:(NSString *)plaintext withKey:(NSString *)key
- {
- const char *cKey = [key cStringUsingEncoding:NSASCIIStringEncoding];
- const char *cData = [plaintext cStringUsingEncoding:NSASCIIStringEncoding];
- unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
- CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
- NSData *HMACData = [NSData dataWithBytes:cHMAC length:sizeof(cHMAC)];
- const unsigned char *buffer = (const unsigned char *)[HMACData bytes];
- NSMutableString *HMAC = [NSMutableString stringWithCapacity:HMACData.length * 2];
- for (int i = 0; i < HMACData.length; ++i){
- [HMAC appendFormat:@"%02x", buffer[i]];
- }
- return HMAC;
- }
- + (void)updateTabCenter{
-
- }
- + (void)changeRootToTabbar{
-
-
- NSLog(@"!!!changeRootToTabbar, 刷新控制器");
- AppDelegate* app =(AppDelegate*)[UIApplication sharedApplication].delegate;
- YOUPAILCTabBarVC* tabbar = [[YOUPAILCTabBarVC alloc]init];
- app.window.rootViewController = tabbar;
- //切换的动画效果
- CATransition *animation = [CATransition animation];
- [animation setDuration:0.5];//设置动画时间
- // animation.type = kCATransitionReveal;//设置动画类型
- animation.type = @"oglFlip";
- animation.subtype = kCATransitionFromLeft;
- [app.window.layer addAnimation:animation forKey:nil];
- }
- + (void)changeRootToLogin{
-
- [LCSaveData saveIsspecial:NO];
- [LCSaveData saveLoginMark:NO];
- [LCSaveModel saveUserModel:nil];
- [LCSaveData saveTokenString:nil];
- [LCSaveData saveYoungNoticeTime:nil];
-
- [OCUserDefaults removeObjectForKey:kUSER_ID];
- [OCUserDefaults removeObjectForKey:kIS_FEMALE_GENDER];
- [OCUserDefaults removeObjectForKey:kIS_GODDESS_CERTIFIED];
- [OCUserDefaults removeObjectForKey:kIS_VIP];
- [OCUserDefaults synchronize];
-
- [[YOUPAILCIMLoginManager sharedCenter] youpaifIMLogout:^{
- }];
- AppDelegate* app =(AppDelegate*)[UIApplication sharedApplication].delegate;
-
- YMPasswordLoginViewModel *loginVM = [[YMPasswordLoginViewModel alloc]initWithParams:@{}];
- YMPasswordLoginViewController* loginVC = [[YMPasswordLoginViewController alloc]initWithViewModel:loginVM];
- ZCBaseNavigationVC* naviLogin = [[ZCBaseNavigationVC alloc]initWithRootViewController:loginVC];
- app.window.rootViewController = naviLogin;
- //切换的动画效果
- CATransition *animation = [CATransition animation];
- [animation setDuration:0.5];//设置动画时间
- // animation.type = kCATransitionReveal;//设置动画类型
- animation.type = @"oglFlip";
- animation.subtype = kCATransitionFromLeft;
- [app.window.layer addAnimation:animation forKey:nil];
- }
- + (UIImage*) ColorImage:(CGSize)size FromColors:(NSArray*)colors ByGradientType:(GradientType)gradientType{
- NSMutableArray *ar = [NSMutableArray array];
- for(UIColor *c in colors) {
- [ar addObject:(id)c.CGColor];
- }
- // 传入的View.frame.size是0的话,直接返回nil,防止 UIGraphicsBeginImageContext() 传入0,导致崩溃
- if (CGSizeEqualToSize(size, CGSizeZero)) {
- return nil;
- }
- UIGraphicsBeginImageContextWithOptions(size, YES, 1);
- CGContextRef context = UIGraphicsGetCurrentContext();
- CGContextSaveGState(context);
- CGColorSpaceRef colorSpace = CGColorGetColorSpace([[colors lastObject] CGColor]);
- CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (CFArrayRef)ar, NULL);
- CGPoint start;
- CGPoint end;
- switch (gradientType) {
- case 0:
- start = CGPointMake(0.0, 0.0);
- end = CGPointMake(0.0, size.height);
- break;
- case 1:
- start = CGPointMake(0.0, 0.0);
- end = CGPointMake(size.width, 0.0);
- break;
- case 2:
- start = CGPointMake(0.0, 0.0);
- end = CGPointMake(size.width, size.height);
- break;
- case 3:
- start = CGPointMake(size.width, 0.0);
- end = CGPointMake(0.0, size.height);
- break;
- default:
- break;
- }
- CGContextDrawLinearGradient(context, gradient, start, end, kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation);
- UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
- CGGradientRelease(gradient);
- CGContextRestoreGState(context);
- CGColorSpaceRelease(colorSpace);
- UIGraphicsEndImageContext();
- return image;
- }
- + (UIImage *)imageForSize:(CGSize)size colors:(NSArray*)colors locations:(NSArray *)locas ByGradientType:(GradientType)gradientType{
- NSMutableArray *ar = [NSMutableArray array];
- for(UIColor *c in colors) {
- [ar addObject:(id)c.CGColor];
- }
-
- CAGradientLayer *gradientLayer = [CAGradientLayer layer];
- gradientLayer.frame = CGRectMake(0, 0, size.width, size.height); // 设置显示的frame
- gradientLayer.colors = ar;
- gradientLayer.locations = locas; // 颜色的起点位置,递增,并且数量跟颜色数量相等
- CGPoint startPoint;
- CGPoint endPoint;
- switch (gradientType) {
- case GradientTopToBottom: //从上到下
- startPoint = CGPointMake(0.5, 0);
- endPoint = CGPointMake(0.5, 1);
- break;
- case GradientLeftToRight: //从左到右
- startPoint = CGPointMake(0.0, 0.5);
- endPoint = CGPointMake(1, 0.5);
- break;
- case GradientupleftTolowRight: //左上到右下
- startPoint = CGPointMake(0, 0);
- endPoint = CGPointMake(1, 1);
- break;
- case GradientUprightTolowLeft: //右上到左下
- startPoint = CGPointMake(1, 0);
- endPoint = CGPointMake(0, 1);
- break;
-
- default:
- break;
- }
- gradientLayer.startPoint = startPoint;
- gradientLayer.endPoint = endPoint;
-
- return [self imageFromLayer:gradientLayer];
- }
- + (UIImage *)imageFromLayer:(CALayer *)layer{
- UIGraphicsImageRenderer *render = [[UIGraphicsImageRenderer alloc] initWithSize:layer.bounds.size];
- return [render imageWithActions:^(UIGraphicsImageRendererContext * _Nonnull rendererContext) {
- [layer renderInContext:rendererContext.CGContext];
- }];
- }
- +(CAGradientLayer*)getGradientLayerWithSize:(CGSize)size twoColors:(NSArray*)twoColors gradientType:(GradientType)gradientType{
- CAGradientLayer *gradientLayer = [CAGradientLayer layer];
- gradientLayer.frame = CGRectMake(0, 0, size.width, size.height); // 设置显示的frame
- gradientLayer.colors = @[(id)((UIColor*)twoColors[0]).CGColor,(id)((UIColor*)twoColors[1]).CGColor]; // 设置渐变颜色
- gradientLayer.locations = @[@0.0, @1.0]; // 颜色的起点位置,递增,并且数量跟颜色数量相等
- switch (gradientType) {
- case 0:
- gradientLayer.startPoint = CGPointMake(0, 0);
- gradientLayer.endPoint = CGPointMake(0, 1);
- break;
- case 1:
- gradientLayer.startPoint = CGPointMake(0, 0);
- gradientLayer.endPoint = CGPointMake(1, 0);
- break;
- case 2:
- gradientLayer.startPoint = CGPointMake(0, 0);
- gradientLayer.endPoint = CGPointMake(1, 1);
- break;
- case 3:
- gradientLayer.startPoint = CGPointMake(1, 0);
- gradientLayer.endPoint = CGPointMake(0, 1);
- break;
- default:
- break;
- }
- return gradientLayer;
- }
- + (NSURL*)getImageUrlWithAddress:(NSString*)address{
- if (address.length == 0) {
- return [NSURL URLWithString:@""];
- }
- return [NSURL URLWithString:[NSString stringWithFormat:@"%@/%@",[LCSaveData getImageUrl]?[LCSaveData getImageUrl]:BaseImgUrl,address]];
- }
- + (void)kickBackToLogin{
- [self changeRootToLogin];
- }
- + (void)updateMessageUnread{
- AppDelegate* app =(AppDelegate*)[UIApplication sharedApplication].delegate;
-
- if ([app.window.rootViewController isKindOfClass:[YOUPAILCTabBarVC class]]) {
-
- YOUPAILCTabBarVC* tabbar = (YOUPAILCTabBarVC*)app.window.rootViewController;
- [tabbar youpaifupdateUnread];
- }
- }
- // 设置富文本
- + (NSAttributedString *)setRichTextFormat:(NSArray<YOUPAILZRichTextStyle *> *)richTextStyles{
- NSMutableAttributedString *mAttibutedString = [[NSMutableAttributedString alloc] init];
- for (YOUPAILZRichTextStyle *style in richTextStyles) {
- NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:style.text attributes:@{NSFontAttributeName:style.font, NSForegroundColorAttributeName:style.color}];
- [mAttibutedString appendAttributedString:attributedString];
- }
- return mAttibutedString;
- }
- + (NSAttributedString *)setRichTextWithTitle:(NSString *)title subTitle:(NSString *)subTitle titleColor:(UIColor *)titleColor subTitleColor:(UIColor *)subTitleColor titleFontSize:(CGFloat)size subTitleFontSize:(CGFloat)subSize {
- NSMutableAttributedString *mAttibutedString = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:size], NSForegroundColorAttributeName:titleColor}];
- NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:subTitle attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:subSize], NSForegroundColorAttributeName:subTitleColor}];
- [mAttibutedString appendAttributedString:attributedString];
- return mAttibutedString;
- }
- + (NSAttributedString *)setRichTextWithTitle:(NSString *)title subTitle:(NSString *)subTitle titleColor:(UIColor *)titleColor subTitleColor:(UIColor *)subTitleColor titleFontSize:(CGFloat)size subTitleFontSize:(CGFloat)subSize IsfirstFontBlod:(BOOL)isfirstFontBlod{
- NSMutableAttributedString *mAttibutedString;
- if (isfirstFontBlod) {
- mAttibutedString = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:LCBoldFont(size), NSForegroundColorAttributeName:titleColor}];
- }else{
- mAttibutedString = [[NSMutableAttributedString alloc] initWithString:title attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:size], NSForegroundColorAttributeName:titleColor}];
- }
-
- NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:subTitle attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:subSize], NSForegroundColorAttributeName:subTitleColor}];
- [mAttibutedString appendAttributedString:attributedString];
- return mAttibutedString;
-
-
- }
- //// 行首缩进-行尾缩进
- //+ (NSAttributedString *)attributedString:(NSAttributedString *)attrStr headIndent:(CGFloat)headIndent tailIndent:(CGFloat)tailIndent{
- // NSMutableAttributedString *muattrStr = attrStr.mutableCopy;
- // NSMutableParagraphStyle *paraStyle01 = [[NSMutableParagraphStyle alloc] init];
- // paraStyle01.headIndent = headIndent;//行首缩进
- // paraStyle01.tailIndent = tailIndent;//行尾缩进
- // [muattrStr addAttribute:NSParagraphStyleAttributeName value:paraStyle01 range:NSMakeRange(0, attrStr.length)];
- // return muattrStr.copy;
- //}
- //数据统计转换
- + (NSString*)integralChange:(NSInteger)integral{
- if (integral>=10000) {
- NSInteger num=(int)floorf(integral/1000.0);
- return [NSString stringWithFormat:@"%.1f万",num/10.0];
- }else{
- return [NSString stringWithFormat:@"%zd",integral];
- }
- }
- //切除边角
- + (void)clipCorner:(UIRectCorner)corner View:(UIView*)view size:(CGSize)size {
- UIBezierPath* maskPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds byRoundingCorners:corner cornerRadii:size]
- ;
- CAShapeLayer *maskLayer = [CAShapeLayer layer];
- maskLayer.frame = view.bounds;
- maskLayer.path = maskPath.CGPath;
- view.layer.mask = maskLayer;
-
-
-
- }
- //返回初始化是否提示更新版本
- + (BOOL)canShowNoticationTip{
- NSString* updateTime = [LCSaveData getUpdateNotiTime];
- NSDate * newData = [NSDate date];
- NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
- [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
- if (!updateTime) {
- NSString* dataString = [dateFormatter stringFromDate:newData];
- [LCSaveData saveUpdateNotiTime:dataString];
- return YES;
- }else{
- //获取与当前的时间差
- NSDate *timeDate = [dateFormatter dateFromString:updateTime];
- NSTimeInterval timeInterval = [timeDate timeIntervalSinceNow];
- timeInterval = -timeInterval;
- //超过1天
- if (timeInterval>60*60*24*1) {
- NSString* dataString = [dateFormatter stringFromDate:newData];
- [LCSaveData saveUpdateNotiTime:dataString];
- return YES;
- }else{
- return NO;
- }
- }
- }
- //是否显示评分弹框
- + (BOOL)canShowAppraise{
- NSString* updateTime = [LCSaveData getAppraiseTime];
- NSDate * newData = [NSDate date];
- NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
- [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
- if (!updateTime) {
- NSString* dataString = [dateFormatter stringFromDate:newData];
- [LCSaveData saveAppraiseTime:dataString];
- return YES;
- }else{
- //获取与当前的时间差
- NSDate *timeDate = [dateFormatter dateFromString:updateTime];
- NSTimeInterval timeInterval = [timeDate timeIntervalSinceNow];
- timeInterval = -timeInterval;
- //超过30天
- if (timeInterval>60*60*24*30) {
- NSString* dataString = [dateFormatter stringFromDate:newData];
- [LCSaveData saveAppraiseTime:dataString];
- return YES;
- }else{
- return NO;
- }
- }
- }
- //设置阴影
- + (void)setShadow:(CALayer*)layer Color:(UIColor*)color{
- layer.shadowOpacity = 0.5;
- layer.shadowColor = color.CGColor;
- layer.shadowOffset = CGSizeMake(0, 5);
- layer.shadowRadius= 7;
- }
- + (NSString*)getCityIDWithCityName:(NSString*)name{
- NSDictionary* cityDict = [LCSaveData getCityDict];
- NSArray *keys = [cityDict allKeys];
- for (int i = 0; i < keys.count; i++)
- {
- if ([cityDict[keys[i]] isEqualToString:name]) {
- return keys[i];
- }
- }
- return @"";
- }
- + (NSString*)iphoneType {
-
- struct utsname systemInfo;
-
- uname(&systemInfo);
-
- NSString *platform = [NSString stringWithCString: systemInfo.machine encoding:NSASCIIStringEncoding];
-
- if([platform isEqualToString:@"iPhone1,1"]) return@"iPhone 2G";
-
- if([platform isEqualToString:@"iPhone1,2"]) return@"iPhone 3G";
-
- if([platform isEqualToString:@"iPhone2,1"]) return@"iPhone 3GS";
-
- if([platform isEqualToString:@"iPhone3,1"]) return@"iPhone 4";
-
- if([platform isEqualToString:@"iPhone3,2"]) return@"iPhone 4";
-
- if([platform isEqualToString:@"iPhone3,3"]) return@"iPhone 4";
-
- if([platform isEqualToString:@"iPhone4,1"]) return@"iPhone 4S";
-
- if([platform isEqualToString:@"iPhone5,1"]) return@"iPhone 5";
-
- if([platform isEqualToString:@"iPhone5,2"]) return@"iPhone 5";
-
- if([platform isEqualToString:@"iPhone5,3"]) return@"iPhone 5c";
-
- if([platform isEqualToString:@"iPhone5,4"]) return@"iPhone 5c";
-
- if([platform isEqualToString:@"iPhone6,1"]) return@"iPhone 5s";
-
- if([platform isEqualToString:@"iPhone6,2"]) return@"iPhone 5s";
-
- if([platform isEqualToString:@"iPhone7,1"]) return@"iPhone 6 Plus";
-
- if([platform isEqualToString:@"iPhone7,2"]) return@"iPhone 6";
-
- if([platform isEqualToString:@"iPhone8,1"]) return@"iPhone 6s";
-
- if([platform isEqualToString:@"iPhone8,2"]) return@"iPhone 6s Plus";
-
- if([platform isEqualToString:@"iPhone8,4"]) return@"iPhone SE";
-
- if([platform isEqualToString:@"iPhone9,1"]) return@"iPhone 7";
-
- if([platform isEqualToString:@"iPhone9,2"]) return@"iPhone 7 Plus";
- if([platform isEqualToString:@"iPhone9,4"]) return@"iPhone 7 Plus";
-
- if([platform isEqualToString:@"iPhone10,1"]) return@"iPhone 8";
-
- if([platform isEqualToString:@"iPhone10,4"]) return@"iPhone 8";
-
- if([platform isEqualToString:@"iPhone10,2"]) return@"iPhone 8 Plus";
-
- if([platform isEqualToString:@"iPhone10,5"]) return@"iPhone 8 Plus";
-
- if([platform isEqualToString:@"iPhone10,3"]) return@"iPhone X";
-
- if([platform isEqualToString:@"iPhone10,6"]) return@"iPhone X";
-
- if([platform isEqualToString:@"iPhone11,8"])return@"iPhoneXR";
- if([platform isEqualToString:@"iPhone11,2"])return@"iPhone XS";
- if([platform isEqualToString:@"iPhone11,6"])return@"iPhone XS Max";
- if([platform isEqualToString:@"iPhone12,1"])return@"iPhone 11";
- if([platform isEqualToString:@"iPhone12,3"])return@"iPhone 11 Pro Max";
- if([platform isEqualToString:@"iPhone12,5"])return@"iPhone 11 Pro";
-
-
- if([platform isEqualToString:@"iPod1,1"]) return@"iPod Touch 1G";
-
- if([platform isEqualToString:@"iPod2,1"]) return@"iPod Touch 2G";
-
- if([platform isEqualToString:@"iPod3,1"]) return@"iPod Touch 3G";
-
- if([platform isEqualToString:@"iPod4,1"]) return@"iPod Touch 4G";
-
- if([platform isEqualToString:@"iPod5,1"]) return@"iPod Touch 5G";
-
- if([platform isEqualToString:@"iPad1,1"]) return@"iPad 1G";
-
- if([platform isEqualToString:@"iPad2,1"]) return@"iPad 2";
-
- if([platform isEqualToString:@"iPad2,2"]) return@"iPad 2";
-
- if([platform isEqualToString:@"iPad2,3"]) return@"iPad 2";
-
- if([platform isEqualToString:@"iPad2,4"]) return@"iPad 2";
-
- if([platform isEqualToString:@"iPad2,5"]) return@"iPad Mini 1G";
-
- if([platform isEqualToString:@"iPad2,6"]) return@"iPad Mini 1G";
-
- if([platform isEqualToString:@"iPad2,7"]) return@"iPad Mini 1G";
-
- if([platform isEqualToString:@"iPad3,1"]) return@"iPad 3";
-
- if([platform isEqualToString:@"iPad3,2"]) return@"iPad 3";
-
- if([platform isEqualToString:@"iPad3,3"]) return@"iPad 3";
-
- if([platform isEqualToString:@"iPad3,4"]) return@"iPad 4";
-
- if([platform isEqualToString:@"iPad3,5"]) return@"iPad 4";
-
- if([platform isEqualToString:@"iPad3,6"]) return@"iPad 4";
-
- if([platform isEqualToString:@"iPad4,1"]) return@"iPad Air";
-
- if([platform isEqualToString:@"iPad4,2"]) return@"iPad Air";
-
- if([platform isEqualToString:@"iPad4,3"]) return@"iPad Air";
-
- if([platform isEqualToString:@"iPad4,4"]) return@"iPad Mini 2G";
-
- if([platform isEqualToString:@"iPad4,5"]) return@"iPad Mini 2G";
-
- if([platform isEqualToString:@"iPad4,6"]) return@"iPad Mini 2G";
-
- if([platform isEqualToString:@"iPad4,7"]) return@"iPad Mini 3";
-
- if([platform isEqualToString:@"iPad4,8"]) return@"iPad Mini 3";
-
- if([platform isEqualToString:@"iPad4,9"]) return@"iPad Mini 3";
-
- if([platform isEqualToString:@"iPad5,1"]) return@"iPad Mini 4";
-
- if([platform isEqualToString:@"iPad5,2"]) return@"iPad Mini 4";
-
- if([platform isEqualToString:@"iPad5,3"]) return@"iPad Air 2";
-
- if([platform isEqualToString:@"iPad5,4"]) return@"iPad Air 2";
-
- if([platform isEqualToString:@"iPad6,3"]) return@"iPad Pro 9.7";
-
- if([platform isEqualToString:@"iPad6,4"]) return@"iPad Pro 9.7";
-
- if([platform isEqualToString:@"iPad6,7"]) return@"iPad Pro 12.9";
-
- if([platform isEqualToString:@"iPad6,8"]) return@"iPad Pro 12.9";
-
- if([platform isEqualToString:@"i386"]) return@"iPhone Simulator";
-
- if([platform isEqualToString:@"x86_64"]) return@"iPhone Simulator";
-
- return platform;
-
- }
- + (NSString *)getNetworkType_old
- {
- UIApplication *app = [UIApplication sharedApplication];
- id statusBar = [app valueForKeyPath:@"statusBar"];
- NSString *network = @"";
-
- if (Is_iPhoneX) {
- id statusBarView = [statusBar valueForKeyPath:@"statusBar"];
- UIView *foregroundView = [statusBarView valueForKeyPath:@"foregroundView"];
-
- NSArray *subviews = [[foregroundView subviews][2] subviews];
-
- for (id subview in subviews) {
- if ([subview isKindOfClass:NSClassFromString(@"_UIStatusBarWifiSignalView")]) {
- network = @"WIFI";
- }else if ([subview isKindOfClass:NSClassFromString(@"_UIStatusBarStringView")]) {
- network = [subview valueForKeyPath:@"originalText"];
- }
- }
- }else {
- // 非 iPhone X
- UIView *foregroundView = [statusBar valueForKeyPath:@"foregroundView"];
- NSArray *subviews = [foregroundView subviews];
-
- for (id subview in subviews) {
- if ([subview isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {
- int networkType = [[subview valueForKeyPath:@"dataNetworkType"] intValue];
- switch (networkType) {
- case 0:
- network = @"none";
- break;
- case 1:
- network = @"2G";
- break;
- case 2:
- network = @"3G";
- break;
- case 3:
- network = @"4G";
- break;
- case 5:
- network = @"WIFI";
- break;
- default:
- break;
- }
- }
- }
- }
- if ([network isEqualToString:@""]) {
- network = @"none";
- }
- return network;
- }
- + (NSString *)getNetworkType
- {
-
- //modify by leo -fix ios13 -20191008
- UIApplication *app = [UIApplication sharedApplication];
- // id statusBar = [app valueForKeyPath:@"statusBar"];
- __block id statusBar = nil;
- __block NSString *network = @"";
- dispatch_async(dispatch_get_main_queue(), ^{
- if (@available(iOS 13.0, *)) {
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wundeclared-selector"
- UIStatusBarManager *statusBarManager = [UIApplication sharedApplication].keyWindow.windowScene.statusBarManager;
- if ([statusBarManager respondsToSelector:@selector(createLocalStatusBar)]) {
- UIView *_localStatusBar = [statusBarManager performSelector:@selector(createLocalStatusBar)];
- if ([_localStatusBar respondsToSelector:@selector(statusBar)]) {
- statusBar = [_localStatusBar performSelector:@selector(statusBar)];
- }
- }
- #pragma clang diagnostic pop
- if (statusBar) {
- // _UIStatusBarDataCellularEntry
- id currentData = [[statusBar valueForKeyPath:@"_statusBar"] valueForKeyPath:@"currentData"];
- id _wifiEntry = [currentData valueForKeyPath:@"wifiEntry"];
- id _cellularEntry = [currentData valueForKeyPath:@"cellularEntry"];
- if (_wifiEntry && [[_wifiEntry valueForKeyPath:@"isEnabled"] boolValue]) {
- // If wifiEntry is enabled, is WiFi.
- network = @"WIFI";
- } else if (_cellularEntry && [[_cellularEntry valueForKeyPath:@"isEnabled"] boolValue]) {
- NSNumber *type = [_cellularEntry valueForKeyPath:@"type"];
- if (type) {
- switch (type.integerValue) {
- case 5:
- network = @"4G";;
- break;
- case 4:
- network = @"3G";;
- break;
- // case 1: // Return 1 when 1G.
- // break;
- case 0:
- // Return 0 when no sim card.
- network = @"none";;
- default:
- network = @"4G";;
- break;
- }
- }
- }
- }
- }
- else
- {
- statusBar = [app valueForKeyPath:@"statusBar"];
- if (Is_iPhoneX) {
- id statusBarView = [statusBar valueForKeyPath:@"statusBar"];
- UIView *foregroundView = [statusBarView valueForKeyPath:@"foregroundView"];
-
- NSArray *subviews = [[foregroundView subviews][2] subviews];
-
- for (id subview in subviews) {
- if ([subview isKindOfClass:NSClassFromString(@"_UIStatusBarWifiSignalView")]) {
- network = @"WIFI";
- }else if ([subview isKindOfClass:NSClassFromString(@"_UIStatusBarStringView")]) {
- network = [subview valueForKeyPath:@"originalText"];
- }
- }
- }else {
- // 非 iPhone X
- UIView *foregroundView = [statusBar valueForKeyPath:@"foregroundView"];
- NSArray *subviews = [foregroundView subviews];
-
- for (id subview in subviews) {
- if ([subview isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) {
- int networkType = [[subview valueForKeyPath:@"dataNetworkType"] intValue];
- switch (networkType) {
- case 0:
- network = @"none";
- break;
- case 1:
- network = @"2G";
- break;
- case 2:
- network = @"3G";
- break;
- case 3:
- network = @"4G";
- break;
- case 5:
- network = @"WIFI";
- break;
- default:
- break;
- }
- }
- }
- }
- }
- });
- if ([network isEqualToString:@""]) {
- network = @"none";
- }
- return network;
- }
- +(void)checkUpdateNeedTip:(BOOL)need{
- // NSOperationQueue * queue = [[NSOperationQueue alloc] init];
- // [queue addOperation:[NSBlockOperation blockOperationWithBlock:^{
- // NSDictionary* dict = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:@"https://img.caicaicp.cn/app/livechat.plist"]];
- // if (dict) {
- // NSString* newVersion = [[[[dict objectForKey:@"items"] objectAtIndex:0] objectForKey:@"metadata"] objectForKey:@"bundle-version"];
- // NSString* tip = [[[[dict objectForKey:@"items"] objectAtIndex:0] objectForKey:@"metadata"] objectForKey:@"tip"];
- // NSString *myVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
- // if (![newVersion isEqualToString:myVersion]) {
- // UIAlertController *alertController = [UIAlertController alertControllerWithTitle:tip message:@"是否更新版本" preferredStyle:UIAlertControllerStyleAlert];
- // [alertController addAction:[UIAlertAction actionWithTitle:@"不了" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
- //
- // }]];
- // [alertController addAction:[UIAlertAction actionWithTitle:@"好的" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-services://?action=download-manifest&url=https://img.caicaicp.cn/app/livechat.plist"]];
- //
- // }]];
- // [[LCTools getCurrentVC] presentViewController:alertController animated:YES completion:nil];
- //
- // }else{
- // if (need) {
- // [ZCHUDHelper showTitle:@"已经是最新版本"];
- // }
- //
- // }
- // }
- // }]];
- }
- ///// 获取vip标记
- //+ (UIImage *)getVipImageWithLevel:(NSInteger)level{
- // NSString *str = [self getVipImageStringWithLevel:level];
- // if (str != nil) {
- // return [UIImage imageNamed:str];
- // }else{
- // return nil;
- // }
- //}
- ///// 获取vip标记 带有VIP名字的图片
- //+ (UIImage *)getVipNameImageWithLevel:(NSInteger)level{
- // NSString *str = [self getVipImageStringWithLevel:level];
- // if (str != nil) {
- // NSString *imgName = [NSString stringWithFormat:@"%@_name",str];
- // return [UIImage imageNamed:imgName];
- // }else{
- // return nil;
- // }
- //}
- //
- ///// 获取vip标记 带有VIP名字的Size
- //+ (CGSize)getVipNameSizeWithLevel:(NSInteger)level{
- // CGSize size;
- // switch (level) {
- // case 0:
- // size = CGSizeMake(79.0f, 20.0f);
- // break;
- // case 1:
- // size = CGSizeMake(79.0f, 20.0f);
- // break;
- // case 3:
- // size = CGSizeMake(79.0f, 20.0f);
- // break;
- // case 4:
- // size = CGSizeMake(85.0f, 24.0f);
- // break;
- // case 5:
- // size = CGSizeMake(90.0f, 25.5f);
- // break;
- //
- // default:
- // size = CGSizeZero;
- // break;
- // }
- // return size;
- //}
- //
- ///// 获取vip标记 带有VIP的Size
- //+ (CGSize)getVipSizeWithLevel:(NSInteger)level{
- // CGSize size;
- // switch (level) {
- // case 0:
- // size = CGSizeMake(28.0f, 26.0f);
- // break;
- // case 1:
- // size = CGSizeMake(32.0f, 26.0f);
- // break;
- // case 3:
- // size = CGSizeMake(34.0f, 26.0f);
- // break;
- // case 4:
- // size = CGSizeMake(38.0f, 26.0f);
- // break;
- // case 5:
- // size = CGSizeMake(43.0f, 26.0f);
- // break;
- //
- // default:
- // size = CGSizeZero;
- // break;
- // }
- // return size;
- //}
- //
- //+ (NSString *)getVipImageStringWithLevel:(NSInteger)level{
- // NSString *imgName = nil;
- // switch (level) {
- // case 0:
- // imgName = @"vqu_images_ic_vip_zj";
- // break;
- // case 1:
- // imgName = @"vqu_images_ic_vip_bj";
- // break;
- // case 3:
- // imgName = @"vqu_images_ic_vip_gj";
- // break;
- // case 4:
- // imgName = @"vqu_images_ic_vip_gw";
- // break;
- // case 5:
- // imgName = @"vqu_images_ic_vip_hd";
- // break;
- //
- // default:
- // break;
- // }
- // return imgName;
- //}
- //
- ///// 获取vip飘窗背景颜色
- //+ (NSArray <UIColor *> *)getVipBgColorWithLevel:(NSInteger)level{
- // NSArray <UIColor *> *colors;
- // switch (level) {
- // case 0:
- // colors = @[HexColorFromRGB(0x5669EF),HexColorFromRGB(0xACB7FF)];
- // break;
- // case 1:
- // colors = @[HexColorFromRGB(0xFF6DBB),HexColorFromRGB(0xFFB39A)];
- // break;
- // case 3:
- // colors = @[HexColorFromRGB(0xFFCA71),HexColorFromRGB(0xFF6DBB)];
- // break;
- // case 4:
- // colors = @[HexColorFromRGB(0xBAD2FF),HexColorFromRGB(0xFC7ABF)];
- // break;
- // case 5:
- // colors = @[HexColorFromRGB(0xFF7070),HexColorFromRGB(0xFFCA71)];
- // break;
- //
- // default:
- // colors = @[LCGradientTwoColor,LCGradientOneColor];
- // break;
- // }
- // return colors;
- //}
- /// 获取VIP名字
- + (NSString *)getVipNameWithLevel:(NSInteger)level{
- NSString *name = nil;
- switch (level) {
- case 0:
- name = @"子爵贵族";
- break;
- case 1:
- name = @"伯爵贵族";
- break;
- case 3:
- name = @"公爵贵族";
- break;
- case 4:
- name = @"国王贵族";
- break;
- case 5:
- name = @"皇帝贵族";
- break;
-
- default:
- name = @"";
- break;
- }
- return name;
- }
- /// 生成随机文件名
- + (NSString *)randomFilename{
- NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
- // ----------设置你想要的格式,hh与HH的区别:分别表示12小时制,24小时制
- [formatter setDateFormat:@"YYYY_MM_dd_HH_mm_ss"];
- //现在时间,你可以输出来看下是什么格式
- NSDate *datenow = [NSDate date];
- //----------将nsdate按formatter格式转成nsstring
- NSString *currentTimeString = [formatter stringFromDate:datenow];
-
- NSString *filename = [NSString stringWithFormat:@"%@_%@",currentTimeString,[self randomNumberWithLength:6]];
- return filename;
- }
- /// 生成随机数
- /// @param length 长度
- /// @return 随机数
- + (NSString *)randomNumberWithLength:(NSInteger)length{
- NSString *strRandom = @"";
- for(int i = 0; i < length; i ++){
- strRandom = [strRandom stringByAppendingFormat:@"%i",(arc4random() % 9)];
- }
- return strRandom;
- }
- + (UIImage *)createQRCodeImageHaveCenterIMG:(NSString *)codeStr centerIMG:(UIImage *)centerIMG {
-
- //1.生成coreImage框架中的滤镜来生产二维码
- CIFilter *filter=[CIFilter filterWithName:@"CIQRCodeGenerator"];
- [filter setDefaults];
-
- [filter setValue:[codeStr dataUsingEncoding:NSUTF8StringEncoding] forKey:@"inputMessage"];
- //4.获取生成的图片
- CIImage *ciImg=filter.outputImage;
- //放大ciImg,默认生产的图片很小
-
- //5.设置二维码的前景色和背景颜色
- CIFilter *colorFilter=[CIFilter filterWithName:@"CIFalseColor"];
- //5.1设置默认值
- [colorFilter setDefaults];
- [colorFilter setValue:ciImg forKey:@"inputImage"];
- [colorFilter setValue:[CIColor colorWithRed:0 green:0 blue:0] forKey:@"inputColor0"];
- [colorFilter setValue:[CIColor colorWithRed:1 green:1 blue:1] forKey:@"inputColor1"];
- //5.3获取生存的图片
- ciImg=colorFilter.outputImage;
-
- CGAffineTransform scale=CGAffineTransformMakeScale(10, 10);
- ciImg=[ciImg imageByApplyingTransform:scale];
-
- // self.imgView.image=[UIImage imageWithCIImage:ciImg];
-
- //6.在中心增加一张图片
- UIImage *img=[UIImage imageWithCIImage:ciImg];
-
- // 传入的View.frame.size是0的话,直接返回nil,防止 UIGraphicsBeginImageContext() 传入0,导致崩溃
- if (CGSizeEqualToSize(img.size, CGSizeZero)) {
- return nil;
- }
- //7.生存图片
- //7.1开启图形上下文
- UIGraphicsBeginImageContext(img.size);
- //7.2将二维码的图片画入
- //BSXPCMessage received error for message: Connection interrupted why??
- // [img drawInRect:CGRectMake(10, 10, img.size.width-20, img.size.height-20)];
- [img drawInRect:CGRectMake(0, 0, img.size.width, img.size.height)];
- //7.3在中心划入其他图片
-
- UIImage *centerImg= centerIMG;
-
- CGFloat centerW= img.size.width*0.2;
- CGFloat centerH= img.size.width*0.2;
- CGFloat centerX=(img.size.width-centerW)*0.5;
- CGFloat centerY=(img.size.height -centerH)*0.5;
-
- [centerImg drawInRect:CGRectMake(centerX, centerY, centerW, centerH)];
-
- //7.4获取绘制好的图片
- UIImage *finalImg=UIGraphicsGetImageFromCurrentImageContext();
-
- //7.5关闭图像上下文
- UIGraphicsEndImageContext();
-
- return finalImg;
-
- }
- #pragma mark-照片相关
- -(void)readFromAlum:(id)viewController block:(ImageFinishBlock)ImageBlock
- {
-
- if ((YES == [UIImagePickerController isSourceTypeAvailable:
- UIImagePickerControllerSourceTypeSavedPhotosAlbum])
- )
- {
-
- _imgblock = ImageBlock;
- _VC = viewController;
-
- UIImagePickerController *cameraUI = [[UIImagePickerController alloc] init];
- self.cameraUI = cameraUI;
- self.cameraUI.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
-
- if (self.onlyShowImage) {
- self.cameraUI.mediaTypes = [NSArray arrayWithObjects:@"public.image", nil];
- } else {
- self.cameraUI.mediaTypes =
- [UIImagePickerController availableMediaTypesForSourceType:
- UIImagePickerControllerSourceTypePhotoLibrary];
- }
- [self.cameraUI setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
- self.cameraUI.allowsEditing = YES;
- self.cameraUI.delegate = self;
-
- [viewController presentViewController:self.cameraUI animated:YES completion:nil];
-
- }
-
- }
- -(void)readFromcamera:(id)viewController block:(ImageFinishBlock)ImageBlock
- {
-
-
- NSString *mediaType = AVMediaTypeVideo;
- AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:mediaType];
- if(authStatus == AVAuthorizationStatusDenied){
- UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"相机权限" message:@"请在iPhone的\"设置->隐私->相机\"选项中,允许\"APP\"访问您的相机." delegate:nil cancelButtonTitle:@"好" otherButtonTitles:nil];
- [alert show];
-
- }
-
-
- if ((YES == [UIImagePickerController isSourceTypeAvailable:
- UIImagePickerControllerSourceTypeCamera])
- )
- {
-
- _imgblock = ImageBlock;
- _VC = viewController;
-
- UIImagePickerController *cameraUI = [[UIImagePickerController alloc] init];
- cameraUI.sourceType = UIImagePickerControllerSourceTypeCamera;
-
- cameraUI.mediaTypes =
- [UIImagePickerController availableMediaTypesForSourceType:
- UIImagePickerControllerSourceTypeCamera];
-
- cameraUI.allowsEditing =YES ;
-
- cameraUI.delegate = self;
-
- [viewController presentViewController:cameraUI animated:YES completion:nil];
-
- }
- else{
- UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"打开照相机失败了" message:@"请检查照相机是否已损坏" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles: nil];
- [alert show];
-
- }
-
- }
- #pragma mark UIImagePickerDelegate
- - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
- {
- NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
-
- UIImage *originalImage, *editedImage;
-
- if ([mediaType isEqualToString:@"public.image"]){
-
- NSLog(@" image == %@",info);
- editedImage = (UIImage *) [info objectForKey:
- UIImagePickerControllerEditedImage];//截图之后的
- originalImage = (UIImage *) [info objectForKey:
- UIImagePickerControllerOriginalImage];//原图
-
-
- // NSData *imageData= UIImageJPEGRepresentation(editedImage, 100);
- // NSData* imageData = UIImagePNGRepresentation(editedImage);
-
- // photoImageView.image = [UIImage imageWithData:imageData];
-
- }
-
-
- if (_imgblock)
- {
- _imgblock(editedImage);
-
- }
- if (_originalImage)
- {
- _originalImage(originalImage);
- }
-
- [_VC dismissViewControllerAnimated: YES completion:nil];
-
- }
- - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
- [picker setNeedsStatusBarAppearanceUpdate];
- [picker dismissViewControllerAnimated:YES completion:nil];
- }
- + (CGFloat)widthWithString:(NSString *)string withFont:(UIFont *)font{
- return [string boundingRectWithSize:CGSizeMake(MAXFLOAT, 0) options:NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:font} context:NULL].size.width;
- }
- +(NSDate *)stringToDate:(NSString *)dateStr:(BOOL)type
- {
- //type== yes (年月日) 否则年月
-
- NSString *dateType;
- if (type) {
- dateType = @"yyyy-MM-dd";
- }else{
- dateType = @"yyyy-MM";
- }
- NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
- [dateFormatter setDateFormat:dateType];
- NSDate *date = [dateFormatter dateFromString:dateStr];
- return date;
- }
- //获取某月的最后一天字符串
- +(NSString *)getMonthLastDayWithDate:(NSDate *)date format:(NSString *)aformat{
- NSDate * newDate = date;
- double interval = 0;
- NSDate * firstDate = nil;
- NSDate * lastDate = nil;
- NSCalendar * calendar = [NSCalendar currentCalendar];
- BOOL bl = [calendar rangeOfUnit:NSCalendarUnitMonth startDate:&firstDate interval:&interval forDate:newDate];
- if(bl) {
- lastDate = [firstDate dateByAddingTimeInterval:interval -1];
- NSDateFormatter * myDateFormatter = [[NSDateFormatter alloc]init];
- [myDateFormatter setDateFormat:aformat];
- NSString * lastString = [myDateFormatter stringFromDate:lastDate];
- return lastString;
- }
- return @"";
- }
- //获取某月的第一天字符串
- +(NSString *)getMonthFirstDayWithDate:(NSDate *)date format:(NSString *)aformat{
- NSDate * newDate = date;
- double interval = 0;
- NSDate * firstDate = nil;
- NSCalendar * calendar = [NSCalendar currentCalendar];
- BOOL bl = [calendar rangeOfUnit:NSCalendarUnitMonth startDate:&firstDate interval:&interval forDate:newDate];
- if(bl) {
- NSDateFormatter * myDateFormatter = [[NSDateFormatter alloc]init];
- [myDateFormatter setDateFormat:aformat];
- NSString * firstString = [myDateFormatter stringFromDate: firstDate];
- return firstString;
- }
- return @"";
- }
- /**
- 是否属于同一月
- @param time1 time1
- @param time2 time2
- @return 同一月为真,否则为假
- */
- + (BOOL)isInSameMonth:(int64_t)time1 time2:(int64_t)time2
- {
- NSDate *date1 = [NSDate dateWithTimeIntervalSince1970:time1];
- NSDate *date2 = [NSDate dateWithTimeIntervalSince1970:time2];
- NSCalendar *calendar = [NSCalendar currentCalendar];
- int unit = NSCalendarUnitMonth | NSCalendarUnitYear;
- NSDateComponents *nowCmps = [calendar components:unit fromDate:date1];
- NSDateComponents *selfCmps = [calendar components:unit fromDate:date2];
- return (nowCmps.year == selfCmps.year)&&(nowCmps.month == selfCmps.month);
- }
- //openInstall的动态参数操作
- +(void)saveBindData:(NSString*)bindData{
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- [defaults setValue:bindData forKey:@"bindData"];
- [defaults synchronize];
- }
- +(NSString*)getbindData{
-
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- NSString *result = [defaults objectForKey:@"bindData"];
- return result;
- }
- +(BOOL)isIdCard:(NSString *)idcard{
- if(!idcard)
- return 0;
-
- NSString *regex = @"^[1-9]{1}[0-9]{16}([0-9]|[xX])$";
- return [self predicateMatchWithString:idcard regex:regex];
- }
- +(BOOL)predicateMatchWithString:(NSString *)str regex:(NSString *)regex{
-
- NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
- return [predicate evaluateWithObject:str];
- }
- //openInstall的渠道编号操作
- +(void)saveChannelCode:(NSString*)channelCode{
- NSUserDefaults *defualts = [NSUserDefaults standardUserDefaults];
- [defualts setValue:channelCode forKey:@"channelCode"];
- [defualts synchronize];
- }
- +(NSString*)getchannelCode{
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
- NSString *result = [defaults objectForKey:@"channelCode"];
- return result;
-
- }
- + (BOOL)isGirlsRealNameAuthentication{
- YOUPAILCBaseInfo *userinfo = [LCSaveModel getUserModel].youpaipuserinfo;
- BOOL isGoddessCertified = [OCUserDefaults boolForKey:kIS_GODDESS_CERTIFIED];
- if (userinfo.youpaipgender == 1){//女
- if (isGoddessCertified) {
- return YES;
- }else{
- @weakify(self)
- [self showAuthAlertWithConfirmBlock:^{
- @strongify(self);
- YOUPAILCBigCastProtocolVC* vc = [[YOUPAILCBigCastProtocolVC alloc]init];
- [vc setAgreeProtocolBlock:^{
- @strongify(self);
- [self youpaifrealNameAuthentication];
- }];
- // [[self getContainNavigationControllerCurrentVC].navigationController pushViewController:vc animated:YES];
- [[LCTools getCurrentVC].navigationController pushViewController:vc animated:YES];
- }];
- return NO;
- }
- }
-
- return YES;
- }
- /// 是否实名认证
- + (BOOL)isRealNameAuthentication{
- YOUPAILCBaseInfo *userinfo = [LCSaveModel getUserModel].youpaipuserinfo;
- if (userinfo.youpaipgender == 1){//女
- BOOL isGoddessCertified = [OCUserDefaults boolForKey:kIS_GODDESS_CERTIFIED];
- if (isGoddessCertified) { //是否通过女神认证 0未通过 1已通过
- return YES;
- }else{
- @weakify(self)
- [self showAuthAlertWithConfirmBlock:^{
- @strongify(self);
- YOUPAILCBigCastProtocolVC *vc = [[YOUPAILCBigCastProtocolVC alloc]init];
- [vc setAgreeProtocolBlock:^{
- @strongify(self);
- [self youpaifrealNameAuthentication];
- }];
- [[LCTools getCurrentVC].navigationController pushViewController:vc animated:YES];
- // [[self getContainNavigationControllerCurrentVC].navigationController pushViewController:vc animated:YES];
-
- }];
-
- }
- }else{//男
-
- // if (userinfo.youpaipis_auth == 1) {
- return YES;
- // }else{
- // @weakify(self)
- // [self showAuthAlertWithConfirmBlock:^{
- // @strongify(self);
- // YOUPAIRealPersonFaceVC *vc = [YOUPAIRealPersonFaceVC new];
- // [[self getContainNavigationControllerCurrentVC].navigationController pushViewController:vc animated:YES];
- // }];
- // }
-
- }
- return NO;
- }
- /// 去认证页面
- + (void)goRealNamePage{
- YOUPAILCBaseInfo *userinfo = [LCSaveModel getUserModel].youpaipuserinfo;
- if (userinfo.youpaipgender == 1){//女
- @weakify(self);
- YOUPAILCBigCastProtocolVC* vc = [[YOUPAILCBigCastProtocolVC alloc]init];
- [vc setAgreeProtocolBlock:^{
- @strongify(self);
- [self youpaifrealNameAuthentication];
- }];
- // [[self getContainNavigationControllerCurrentVC].navigationController pushViewController:vc animated:YES];
- [[LCTools getCurrentVC].navigationController pushViewController:vc animated:YES];
- }else{//男
- YOUPAIRealPersonFaceVC *vc = [YOUPAIRealPersonFaceVC new];
- [[LCTools getCurrentVC].navigationController pushViewController:vc animated:YES];
- }
- }
- + (void)showAuthAlertWithConfirmBlock:(void(^)(void))block{
-
- LZAlertAction *cancelAction = [LZAlertAction actionWithTitle:@"暂不认证" handler:^(LZAlertAction *action) {
- }];
- cancelAction.cornerRadius = 24;
- cancelAction.bgColor = LZF5F4F7Color;
- cancelAction.color = LZ273145Color;
- LZAlertAction *confimAction = [LZAlertAction actionWithTitle:@"去认证" handler:^(LZAlertAction *action) {
- if (block != nil) {
- block();
- }
- }];
- confimAction.cornerRadius = 24.0f;
- confimAction.bgColor = [UIColor colorWithPatternImage:[LCTools ColorImage:CGSizeMake((KScreenWidth - 108.0f)/2, 48.0f) FromColors:@[LZBFB6FFColor,LZ7C69FEColor] ByGradientType:GradientLeftToRight]];
- LZAlertWindow *alert = [LZAlertWindow alertWithTitle:@"真人认证" content:@"花蝶提倡真实交友,真人认证通过后即可心动交友啦~" action:@[cancelAction,confimAction]];
- alert.contentTextAlignment = NSTextAlignmentCenter;
- [[LCTools getCurrentVC] TFPresentVC:alert completion:^{}];
- }
- /// 阿里实名认证
- + (void)youpaifrealNameAuthentication{
-
- [UCAuthorityManager cameraAuthority:^{
- YMCustomCameraViewModel *customCameraVM = [[YMCustomCameraViewModel alloc]initWithParams:@{}];
- [YMRouter openURL:stringFormat(@"%@%@",YM_ROUTER_URL_PREFIX,YM_ROUTER_CUSTOM_CAMERA) withUserInfo:@{
- RouterViewModel:customCameraVM
- } completion:nil];
- } denied:^{
-
- YMTipsPopupView *customView = [[YMTipsPopupView alloc]init];
- [customView configutationWithTips:@"请在iphone的“设置-隐私-相机”选项中,允许APP访问您的相机。" TipsAlignment:NSTextAlignmentCenter IsHideTitle:NO IsHideSingleButton:NO];
- YMPopupView *popupView = [YMPopupView initWithCustomView:customView parentView:[YMGlobalUtils getCurrentVC].view popStyle:YMPopupStyleFade dismissStyle:YMDismissStyleFade];
- popupView.priority = 999;
- popupView.cornerRadius = adapt(10);
- popupView.rectCorners = UIRectCornerAllCorners;
- popupView.positionStyle = YMPositionStyleCenter;
- popupView.isHideBg = NO;
- popupView.bgAlpha = 0.3;
- @weakify(popupView)
- customView.buttonBlock = ^(BOOL isConfirm) {
- @strongify(popupView)
- if (isConfirm) {
- [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:@{} completionHandler:nil];
- }
- [popupView dismissWithStyle:YMDismissStyleFade duration:2.0];
- };
- [popupView pop];
- }];
-
-
- // @weakify(self);
- // [LCHttpHelper requestWithURLString:GetLiveVerifyToken parameters:@{} needToken:YES type:HttpRequestTypePost success:^(id responseObject) {
- // @strongify(self);
- // NSDictionary* dict = (NSDictionary*)responseObject;
- // NSInteger code = [[dict objectForKey:@"code"] integerValue];
- // if (code == 0) {
- // NSString *token = dict[@"data"][@"VerifyToken"];
- // NSString *BizId = dict[@"data"][@"BizId"];
- // [self youpaifpushToAliSdk:token BizId:BizId];
- //
- // }else{
- //
- // [ZCHUDHelper showTitle:[dict objectForKey:@"message"]];
- // }
- //
- //
- //
- // } failure:^(NSError *error) {
- // [ZCHUDHelper showTitle:error.localizedDescription];
- //
- // }];
-
-
-
- }
- + (void)youpaifpushToAliSdk:(NSString*)token BizId:(NSString*)bizIdStr{
- RPConfiguration *configuration = [RPConfiguration configuration];
- NSString *filePath1 = [[NSBundle mainBundle] pathForResource:@"RPCustomUI" ofType:@"bundle"];
- configuration.customUIPath = filePath1;
- [RPSDK startWithVerifyToken:token viewController:[LCTools getContainNavigationControllerCurrentVC] configuration:configuration completion:^(RPResult * _Nonnull result) {
- NSLog(@"实人认证结果:%@==%@", result,result.message);
- switch (result.state) {
- case RPStatePass:
- // 认证通过。
- [self youpaifpostBizId:bizIdStr];
- break;
- case RPStateFail:
- // 认证不通过。
- [ZCHUDHelper showTitle:@"认证失败,请重新认证"];
- break;
- case RPStateNotVerify:
- // 未认证。
- // 通常是用户主动退出或者姓名身份证号实名校验不匹配等原因导致。
- // 具体原因可通过result.errorCode来区分(详见文末错误码说明表格)。
- break;
- }
- }];
-
- }
- + (void)youpaifpostBizId:(NSString*)ID{
-
- NSMutableDictionary *dict = [NSMutableDictionary new];
- [dict setObject:ID forKey:@"BizId"];
- [LCHttpHelper requestWithURLString:LiveVerifyTokenSuccess parameters:dict needToken:YES type:HttpRequestTypePost success:^(id responseObject) {
- NSDictionary* dict = (NSDictionary*)responseObject;
- NSInteger code = [[dict objectForKey:@"code"] integerValue];
- if (code == 0) {
- YOUPAILZLiveVerifyResultVC *vc = [[YOUPAILZLiveVerifyResultVC alloc] init];
- vc.youpaipstate = LZLiveVerifyStateWithInReview;
- vc.youpaipcontent_str = [dict objectForKey:@"message"];
- [[LCTools getContainNavigationControllerCurrentVC].navigationController pushViewController:vc animated:YES];
- }else{
-
- [ZCHUDHelper showTitle:[dict objectForKey:@"message"]];
- }
-
-
-
- } failure:^(NSError *error) {
- [ZCHUDHelper showTitle:error.localizedDescription];
-
- }];
-
- }
- @end
|