1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813 |
- //
- // 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
|