123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404 |
- //
- // AppDelegate.m
- // XiaYue
- //
- // Created by Apple on 2019/11/7.
- // Copyright © 2019 XiaYue. All rights reserved.
- //
- #import "AppDelegate.h"
- #import "YOUPAILCTabBarVC.h"
- //#import "YOUPAILCIAPHelper.h"
- #import "YOUPAILCMessageVC.h"
- //Bugly
- #import <Bugly/Bugly.h>
- #import <WechatOpenSDK/WXApi.h>
- #import <AlipaySDK/AlipaySDK.h>
- //#import "WXApiManager.h"
- #import "SDWebImageCodersManager.h"
- #import "SDWebImageAPNGCoder.h"
- //#import "IPAManager.h"
- #import "OCBarrage.h"
- #include <execinfo.h>
- #import "YYKit.h"
- #import "YOUPAIOCBarrageGradientBackgroundColorCell.h"
- #import "YOUPAIOCBarrageWalkBannerCell.h"
- #import "YOUPAIOCBarrageBecomeNobleCell.h"
- #import "YOUPAIOCBarrageCoustmerCell.h"
- #import "YOUPAILZBarrageGradientOnlineNotifactionCell.h"
- #import "YOUPAILZBarrageGradientVipNotifactionCell.h"
- #import "YOUPAIOCBarrageGifCell.h"
- #import "YOUPAIOCBarrageVerticalAnimationCell.h"
- #import "YOUPAILPIMNotificationModel.h"
- #import "YOUPAIFSVideoChoseVC.h"
- #import "UIViewController+TFPresent.h"
- #import "YOUPAILPIMNotificationModel.h"
- #ifdef NSFoundationVersionNumber_iOS_9_x_Max
- #import <UserNotifications/UserNotifications.h>
- #import "YOUPAILCGiftModel.h"
- #import <AgoraRtcKit/AgoraRtcEngineKit.h>
- //#import <RPSDK/RPSDK.h>
- #import "YOUPAIZYFirstVC.h"
- #import "YOUPAILZVipVC.h"
- #import "TalkingData.h"
- #endif
- #import "OpenInstallSDK.h"
- #import "YOUPAILZAudioPlayer.h"
- #import "IQKeyboardManager.h"
- #import <UMCommonLog/UMCommonLogHeaders.h>
- #import <UMAPM/UMAPMConfig.h>
- #import <UMAPM/UMCrashConfigure.h>
- #import "YMGuidePageViewController.h"
- #import "YMPasswordLoginViewController.h"
- #import "YMImproveInfoViewController.h"
- #import "WHUtilsManager.h"
- //#import <YDAvoidCrashKit/YDAvoidCrashKit.h>
- #import <IQKeyboardManager/IQKeyboardManager.h>
- #import "LCHttpHelper.h"
- #import "YMAdvertModel.h"
- #import "YOUPAIZYFirstRechargeWindow.h"
- #import "LCTools.h"
- #import "UIViewController+TFPresent.h"
- @interface AppDelegate ()<UNUserNotificationCenterDelegate,WXApiDelegate,OpenInstallDelegate>
- @property (nonatomic, strong) YOUPAIOCBarrageManager *barrageManager;
- //@property (nonatomic, strong) NSTimer *updateTimer,*backGroundTimer;
- //@property (nonatomic, assign) UIBackgroundTaskIdentifier bgTask;
- @property (nonatomic, strong) NSTimer *danmuTimer;
- @end
- @implementation AppDelegate
- - (void)initsystemIndex:(NSDictionary *)launchOptions{ //打开app最先请求的接口
- NSLog(@"声网版本号 = %@",[AgoraRtcEngineKit getSdkVersion]);
-
-
-
-
-
- NSMutableDictionary *mutDic = [NSMutableDictionary new];
- [mutDic setValue:[LCTools getbindData] forKey:@"bindData"];
- [mutDic setValue:[LCTools getchannelCode] forKey:@"channelCode"];
-
- [LCHttpHelper requestWithURLString:SystemIndex parameters:mutDic needToken:NO type:HttpRequestTypePost success:^(id responseObject) {
- NSDictionary* dict = (NSDictionary*)responseObject;
- NSInteger code = [[dict objectForKey:@"code"] integerValue];
- if (code==0) {//成功
- // NSString *appurl = [[dict objectForKey:@"data"] objectForKey:@"appurl"];
- // NSString *imageUrl = [[dict objectForKey:@"data"] objectForKey:@"image_server"];
- // NSString *authSDKInfo = [[dict objectForKey:@"data"] objectForKey:@"oneKeyLoginKey"];
- // @"OGVMWJ2Fjj1Dqy34oS2WIth/SPqiJ0aD/NAxOImkJ/2u2C5eEvZzk9juYepEhTwzKdFyPdFro9RT9mB7Rj8sKubHyZONR20qJpAGLtnzEnAoPn44LejOFijQTRUPs4hyF+zsqsLv63LM7CHoyrsoCNAE1AlSw95Om8abm49cIbnLtfc3Zs5syM7mi5h/PvxXrTOPK8rFylCRK9PHqSgR3WlfIrkY3P3tsyieDSB/TLuK2bRm4/2AZzmAip3iAzauPscB1DyLDzA=";
- // [[dict objectForKey:@"data"] objectForKey:@"oneKeyLoginKey"];
-
- NSString *timestamp = [[dict objectForKey:@"data"] objectForKey:@"timestamp"];
-
- NSInteger time = [timestamp integerValue] - [[LCTools getCurrentMillisecondTimestamp] integerValue];
- [LCSaveData saveTimeDifference:time];//设置时间差
-
-
- NSString *audit_status = [[dict objectForKey:@"data"] objectForKey:@"audit_status"];
-
- NSString *say_hi = [[[dict objectForKey:@"data"] objectForKey:@"module_show"] objectForKey:@"say_hi"];
-
- [LCSaveData saveWhiteVersion:[audit_status boolValue]];
- [LCSaveData saveSayHi:![say_hi boolValue]];
- //
- // [[TXCommonHandler sharedInstance] setAuthSDKInfo:authSDKInfo
- // complete:^(NSDictionary * _Nonnull resultDic) {
- // NSLog(@"设置秘钥结果:%@", resultDic);//阿里一键登录sdk初始化
- // }];
-
- // [TalkingData sessionStarted:@"CD160D5DCD854E81AF3535EABAB69668" withChannelId:@"app store"];
- }else{
- }
- } failure:^(NSError *error) {
- }];
-
-
- }
- - (UIImage *)getTheLaunchImage {
- CGSize viewSize = [UIScreen mainScreen].bounds.size;
- NSString *viewOrientation = nil;
- if (([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortraitUpsideDown) || ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait)) {
- viewOrientation = @"Portrait";
- } else {
- viewOrientation = @"Landscape";
- }
- NSString *launchImage = nil;
- NSArray* imagesDict = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"UILaunchImages"];
- for (NSDictionary* dict in imagesDict)
- {
- CGSize imageSize = CGSizeFromString(dict[@"UILaunchImageSize"]);
-
- if (CGSizeEqualToSize(imageSize, viewSize) && [viewOrientation isEqualToString:dict[@"UILaunchImageOrientation"]])
- {
- launchImage = dict[@"UILaunchImageName"];
- }
- }
- return [UIImage imageNamed:launchImage];
-
- }
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
-
- NSLog(@"didFinishLaunchingWithOptions 程序完成加载");
- //设置全局状态栏字体颜色为黑色
- [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
-
- [self configForNetwork:launchOptions];
-
- [self initAction:launchOptions];
-
- [self configureBugly];
-
- //#if DEBUG
- // @weakify(self);
- // self.danmuTimer = [NSTimer scheduledTimerWithTimeInterval:5 repeats:YES block:^(NSTimer * _Nonnull timer) {
- // @strongify(self);
- // [self danmuProcess:nil];
- // }];
- //#endif
-
- [self youpaifloadAdvert1];
-
- return YES;
- }
- - (void)configForNetwork:(NSDictionary *)launchOptions{
-
- [LCSaveData saveBaseURL:kBaseURL];
- [LCSaveData saveImageUrl:kBaseImgURL];
-
- if ([LCSaveData getTokenString] != nil)
- {
- [LCHttpHelper requestWithURLString:GiftConfig parameters:nil needToken:YES type:(HttpRequestTypePost) success:^(id responseObject) {
- NSDictionary* dict = (NSDictionary*)responseObject;
- NSLog(@"GiftConfig == %@",dict);
- NSInteger code = [[dict objectForKey:@"code"] integerValue];
- if (code==0) {//成功
- NSMutableArray *giftArray = [NSMutableArray array];
- giftArray = [YOUPAILCGiftModel mj_objectArrayWithKeyValuesArray:[[dict objectForKey:@"data"]objectForKey:@"gift_list"]];
- for (int i = 0; i< giftArray.count; i++) {
- YOUPAILCGiftModel *model = giftArray[i];
- if (model.youpaipsvga.length> 0 ) {
- [LCTools giftSVGAWithSvgaUrlStr:model.youpaipsvga];
- }
- }
- }
- } failure:^(NSError *error) {
- }];
- } else {
- }
- [WHUtilsManager checkNetworkStatus:^(BOOL isAlways, AFNetworkReachabilityStatus status) {
- switch (status) {
- case AFNetworkReachabilityStatusNotReachable:{
- NSLog (@"Socket网络不通:%@" ,@(status) );
- break;
- } case AFNetworkReachabilityStatusReachableViaWiFi:{
- NSLog (@"Socket网络通过WIFI连接:%@" ,@(status));
- [self initsystemIndex:launchOptions];//打开app最先请求的接口
- break ;
- } case AFNetworkReachabilityStatusReachableViaWWAN:{
- NSLog (@"Socket网络通过数据连接:%@" ,@(status) );
- [self initsystemIndex:launchOptions];//打开app最先请求的接口
- break ;
- }
- default :
- break ;
- }
- }];
-
- }
- - (void)initAction:(NSDictionary *)launchOptions {
- // [self registerYDAvoidCrashKit];
-
- [OpenInstallSDK initWithDelegate:self];//初始化OpenInstallSDK
- [YMGlobalUtils registerRouter];
- // [self configureBugly];
- //test
- _globalUUIDStr = [LCTools getUUIDString];
- _logRecoderStr = [[NSMutableString alloc]init];
- _logCallTime = [[NSString alloc]init];
- //飘屏 add by leo
- [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(danmuProcess:) name:@"PiaoPing" object:nil];
- [LCSaveData saveIsVideo:NO];
- [self updateCityList];
- [self initUMeng];
- //初始化内购类
- [self uploadApplePayReceiptData];
- [self initIM];
- // [RPSDK setup];
- [GKConfigure setupCustomConfigure:^(GKNavigationBarConfigure *configure) {
- // configure.titleColor = [UIColor blackColor];
- // configure.titleFont = [UIFont systemFontOfSize:17.0f];
-
- if (@available(iOS 13.0, *)) {
- configure.gk_navItemLeftSpace = 14.0f;
- configure.gk_navItemRightSpace = 14.0f;
- } else {
- configure.gk_navItemLeftSpace = 20.0f;
- configure.gk_navItemRightSpace = 20.0f;
- }
-
- configure.backStyle = GKNavigationBarBackStyleWhite;
- configure.gk_openScrollViewGestureHandle = YES;
- }];
-
- IQKeyboardManager *keyboardManager = [IQKeyboardManager sharedManager];
- keyboardManager.enable = NO;
- keyboardManager.enableAutoToolbar = NO; // 控制是否显示键盘上的工具条
- keyboardManager.keyboardDistanceFromTextField = NavBarHeight; // 输入框距离键盘的距离
- [keyboardManager registerTextFieldViewClass:[YYTextView class]
- didBeginEditingNotificationName:YYTextViewTextDidBeginEditingNotification
- didEndEditingNotificationName:YYTextViewTextDidEndEditingNotification];
-
- /// 按钮防止重复点击,需要过滤的button
- [UIButton setIgnoreTargets:@[@"YOUPAINIMInputView",@"LZBFaceSignlePageView"]];
-
- SDWebImageAPNGCoder *APNGCoder = [SDWebImageAPNGCoder sharedCoder];
- [[SDWebImageCodersManager sharedInstance] addCoder:APNGCoder];
- [[UIApplication sharedApplication]setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];
-
- self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
- self.window.backgroundColor = UIColor.whiteColor;
-
- BOOL isfirstEnterApp = [OCUserDefaults boolForKey:kIS_FIRST_ENTER_APP];
-
- if (isfirstEnterApp) {
-
- if ([LCSaveData getLoginMark]){
-
- if ([LCSaveModel getUserModel].youpaipuserinfo.youpaipfinish_status == 0) {
-
- YMImproveInfoViewModel *improveInfoVM = [[YMImproveInfoViewModel alloc]initWithParams:@{
- @"inviteCode":[LCTools getPasteString]?:@""
- }];
- YMImproveInfoViewController* improveInfoVC = [[YMImproveInfoViewController alloc]initWithViewModel:improveInfoVM];
- ZCBaseNavigationVC* nav = [[ZCBaseNavigationVC alloc]initWithRootViewController:improveInfoVC];
- self.window.rootViewController = nav;
-
- }else{
- YOUPAILCTabBarVC* tabbar = [[YOUPAILCTabBarVC alloc]init];
- self.window.rootViewController = tabbar;
- [LCHttpHelper requestWithURLString:ActiveUpdate parameters:nil needToken:YES type:(HttpRequestTypePost) success:^(id responseObject) {
- } failure:^(NSError *error) {
- }];
-
- }
-
- }else{
- YMPasswordLoginViewModel *loginVM = [[YMPasswordLoginViewModel alloc]initWithParams:@{}];
- YMPasswordLoginViewController* loginVC = [[YMPasswordLoginViewController alloc]initWithViewModel:loginVM];
- ZCBaseNavigationVC* nav = [[ZCBaseNavigationVC alloc]initWithRootViewController:loginVC];
- self.window.rootViewController = nav;
- }
-
- } else {
- //首次安装直接赋值默认隐藏
- [OCUserDefaults setBool:YES forKey:kIS_HIDE_PERSONALIZED_RECOMMENDATION_TIPS];
- [OCUserDefaults synchronize];
-
- YMGuidePageViewModel *guidePageVM = [[YMGuidePageViewModel alloc]initWithParams:@{}];
- YMGuidePageViewController* guidePageVC = [[YMGuidePageViewController alloc]initWithViewModel:guidePageVM];
- ZCBaseNavigationVC* nav = [[ZCBaseNavigationVC alloc]initWithRootViewController:guidePageVC];
- self.window.rootViewController = nav;
- //创建一个队列,串行并行都可以,主要为了操作信号量
- dispatch_queue_t queue = dispatch_queue_create("GuidePage", DISPATCH_QUEUE_SERIAL);
- dispatch_async(queue, ^{
- //创建一个初始为0的信号量
- dispatch_semaphore_t sema = dispatch_semaphore_create(0);
- //第一个弹框,UI的创建和显示,要在主线程
- dispatch_async(dispatch_get_main_queue(), ^{
- @weakify(self)
- guidePageVC.callBlock = ^(BOOL isConsentAuthorization) {
- @strongify(self)
- if (isConsentAuthorization) {
- //点击Alert上的按钮,我们发送一次信号。
- dispatch_semaphore_signal(sema);
- }else{
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wundeclared-selector"
- //运行一个不存在的方法,退出界面更加圆滑
- [self performSelector:@selector(notExistCall)];
- abort();
- #pragma clang diagnostic pop
- }
- };
- });
- //等待信号触发,注意,这里是在我们创建的队列中等待
- dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
- //上面的等待到信号触发之后
- dispatch_async(dispatch_get_main_queue(), ^{
- if ([LCSaveData getLoginMark]){
- YOUPAILCTabBarVC* tabbar = [[YOUPAILCTabBarVC alloc]init];
- self.window.rootViewController = tabbar;
- [LCHttpHelper requestWithURLString:ActiveUpdate parameters:nil needToken:YES type:(HttpRequestTypePost) success:^(id responseObject) {
- } failure:^(NSError *error) {
- }];
- }else{
- YMPasswordLoginViewModel *loginVM = [[YMPasswordLoginViewModel alloc]initWithParams:@{}];
- YMPasswordLoginViewController* loginVC = [[YMPasswordLoginViewController alloc]initWithViewModel:loginVM];
- ZCBaseNavigationVC* nav = [[ZCBaseNavigationVC alloc]initWithRootViewController:loginVC];
- self.window.rootViewController = nav;
- }
- [OCUserDefaults setBool:YES forKey:kIS_FIRST_ENTER_APP];
- });
- });
- }
-
- [self.window makeKeyAndVisible];
-
-
-
-
- #ifdef DEBUG
- //测试开启调试log
- // [YMPopupView setLogStyle:YMPopupViewLogStyleALL];
- #else
- //正式关闭调试log
- [YMPopupView setLogStyle:YMPopupViewLogStyleNO];
- #endif
-
- }
- //Bugly
- - (void)configureBugly {
- BuglyConfig *config = [[BuglyConfig alloc] init];
-
- config.unexpectedTerminatingDetectionEnable = YES; //非正常退出事件记录开关,默认关闭
- config.reportLogLevel = BuglyLogLevelVerbose; //报告级别
- //config.deviceIdentifier = [UIDevice currentDevice].identifierForVendor.UUIDString; //设备标识
- // config.blockMonitorEnable = YES; //开启卡顿监控
- // config.blockMonitorTimeout = 5; //卡顿监控判断间隔,单位为秒
- // config.delegate = self;
- #if DEBUG
- config.debugMode = YES; //SDK Debug信息开关, 默认关闭
- config.channel = @"debug";
- #else
- config.channel = @"release";
- #endif
- //[Bugly startWithAppId:@"429d917fd8"//花蝶id
- //[Bugly startWithAppId:@"24dd581f52"//花蝶id 魏志凡
- [Bugly startWithAppId:BuglyAppId//花蝶id xjh
- #if DEBUG
- developmentDevice:YES
- #endif
- config:config];
- }
- #pragma mark - misc
- - (void)registerPushService {
- UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
- UNAuthorizationOptions authOptions = UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionCriticalAlert;
- [center getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) {
- dispatch_async(dispatch_get_main_queue(), ^{
- if (settings.authorizationStatus == UNAuthorizationStatusNotDetermined || settings.authorizationStatus == UNAuthorizationStatusAuthorized) {
- [center requestAuthorizationWithOptions:authOptions completionHandler:^(BOOL granted, NSError * _Nullable error) {
- if (!granted) {
- dispatch_async_main_safe(^{
- [self.window makeToast:@"请开启推送功能否则无法收到推送通知" duration:2.0 position:CSToastPositionCenter];
- })
- } else {
- dispatch_async(dispatch_get_main_queue(), ^{
- [UIApplication.sharedApplication registerForRemoteNotifications];
- });
- }
- }];
- } else if (settings.authorizationStatus == UNAuthorizationStatusDenied) {
-
- }
- });
- }];
- }
- - (void)initIM {
- //初始化SDK
- [[YOUPAILCIMLoginManager sharedCenter] youpaifNIMinit:isProdPush];
- [[YOUPAILCIMNotificationManager sharedCenter] start];
- // 用户已登录--登录IM
- if ([LCSaveData getLoginMark]) {
- if (![[YOUPAILCIMLoginManager sharedCenter] youpaifIMIsLogined]) {
- [[YOUPAILCIMLoginManager sharedCenter]IMLogin:[LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id token:[LCSaveModel getUserModel].youpaipuserinfo.youpaipim_token];
- }
- }
- //注册推送服务
- [self registerPushService];
- }
- - (void)initUMeng{
- [WXApi registerApp:OpenWXID universalLink:WXUniversalLink];
-
- UMAPMConfig* config = [UMAPMConfig defaultConfig];
- [UMCrashConfigure setAPMConfig:config];//必须配置,请注意
- [UMConfigure initWithAppkey:UMAppKey channel:nil];
- /* 设置微信的appKey和appSecret */
- [UMCommonLogManager setUpUMCommonLogManager];
- [UMConfigure setLogEnabled:YES];
-
- // wxb47ebfd44611c167
- // 094461cf71cbf96c20bf521a115718a1
-
- // [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:@"wxadbddd65f7e82c2a" appSecret:@"632ce1e662f5b05dbeca6fa78cbfc14b" redirectURL:@"http://mobile.umeng.com/social"];
-
- //注册微信
- /*
- [WXApi registerApp:@"wx01af598cc5e4bf4a" enableMTA:NO];
- UInt64 typeFlag = MMAPP_SUPPORT_TEXT | MMAPP_SUPPORT_PICTURE | MMAPP_SUPPORT_LOCATION | MMAPP_SUPPORT_VIDEO |MMAPP_SUPPORT_AUDIO | MMAPP_SUPPORT_WEBPAGE | MMAPP_SUPPORT_DOC | MMAPP_SUPPORT_DOCX | MMAPP_SUPPORT_PPT | MMAPP_SUPPORT_PPTX | MMAPP_SUPPORT_HYS | MMAPP_SUPPORT_HYSX | MMAPP_SUPPORT_PDF;
- [WXApi registerAppSupportContentFlag:typeFlag];
- */
- // [WXApi registerApp:@"wxadbddd65f7e82c2a" universalLink:@"https://asset.vqu.show/"];
- /*
- * 移除相应平台的分享,如微信收藏
- */
- [[UMSocialManager defaultManager] removePlatformProviderWithPlatformTypes:@[@(UMSocialPlatformType_WechatFavorite)]];
-
- // [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:@"1101558994"/*设置QQ平台的appID*/ appSecret:nil redirectURL:@"http://mobile.umeng.com/social"];
- //1589809879
-
- [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:@"1112111172"/*设置QQ平台的appID*/ appSecret:nil redirectURL:@"http://mobile.umeng.com/social"];
-
- // /* 设置新浪的appKey和appSecret */
- // [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_Sina appKey:@"1310381086" appSecret:@"a0827c4e349c051e4da9bce421124945" redirectURL:@"https://api.weibo.com/oauth2/default.html"];
- // //分享全局配置是否使用https功能
- // [UMSocialGlobal shareInstance].isUsingHttpsWhenShareContent = NO;
-
- }
- //- (void)registerYDAvoidCrashKit {
- // //设置允许防崩溃类前缀
- // [YDAvoidCrash setAvoidCrashEnableMethodPrefixList:@[@"NS",@"YD"]];
- //
- // //接收异常的回调处理,可以用来上报等
- // [YDAvoidCrash setupBlock:^(NSException *exception, NSString *defaultToDo, BOOL upload) {
- //
- // }];
- // //开启全部类拦截,同时开启日志收集(日志默认保存10天,可以在开启前通过[[YDLogService shared] clearLogWithDayTime:5]设置)
- // [YDAvoidCrash becomeAllEffectiveWithLogger:YES];
- //}
- - (void)updateCityList{
- NSString *path = [[NSBundle mainBundle]pathForResource:@"city.plist" ofType:nil];
- NSDictionary *dictCity = [[NSDictionary alloc]initWithContentsOfFile:path];
- [LCSaveData saveCityDict:dictCity];
-
- // [LCHttpHelper requestWithURLString:CityList parameters:nil needToken:NO type:(HttpRequestTypeGet) success:^(id responseObject) {
- // NSDictionary* dict = (NSDictionary*)responseObject;
- // NSInteger code = [[dict objectForKey:@"code"] integerValue];
- // if (code==0) {
- // NSDictionary* dictCity = [dict objectForKey:@"data"];
- // if (dictCity.count>0) {
- // [LCSaveData saveCityDict:dictCity];
- // }
- // }
- // } failure:^(NSError *error) {
- //
- // }];
- [[YMGlobalUtils shared] requestProvinceCity];
- [[YMGlobalUtils shared] requestCityCode];
- }
- - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
- [OpenInstallSDK continueUserActivity:userActivity];
- if (![[UMSocialManager defaultManager] handleUniversalLink:userActivity options:nil]) {
- // 其他SDK的回调
- return [WXApi handleOpenUniversalLink:userActivity delegate:self];
- }
- return YES;
- }
- - (void)applicationWillResignActive:(UIApplication *)application {
- NSLog(@"applicationWillResignActive 应用程序将要进入非活动状态,即将进入后台");
-
-
- // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
- // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
- }
- - (void)applicationDidEnterBackground:(UIApplication *)application {
-
- NSLog(@"applicationDidEnterBackground 如果应用程序支持后台运行,则应用程序已经进入后台运行");
-
-
-
- // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
- // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
- [LCSaveData saveIsVideo:NO];
- NSInteger count = [[[NIMSDK sharedSDK] conversationManager] allUnreadCount];
- [[UIApplication sharedApplication] setApplicationIconBadgeNumber:count];
- //add by leo。
- // [self comeToBackgroundMode];
-
- // self.bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithName:kBgTaskName expirationHandler:^{
- //
- // if ([YOUPAILZAudioPlayer sharedInstance].youpaipneedRunInBackground) {
- // [[YOUPAILZAudioPlayer sharedInstance].youpaipplayer play];
- // }
- // if (self.bgTask != UIBackgroundTaskInvalid) {
- // [[UIApplication sharedApplication] endBackgroundTask:self.bgTask];
- // self.bgTask = UIBackgroundTaskInvalid;
- // }
- // }];
- }
- ///*后台常驻*/ //add by leo 解决支付宝黑屏
- //-(void)comeToBackgroundMode{
- // //初始化一个后台任务BackgroundTask,这个后台任务的作用就是告诉系统当前app在后台有任务处理,需要时间
- // // UIApplication* app = [UIApplication sharedApplication];
- // /*
- // self.bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
- // if(self.bgTask == UIBackgroundTaskInvalid)
- // [app endBackgroundTask:self.bgTask];
- // self.bgTask = UIBackgroundTaskInvalid;
- // }];
- // */
- // __weak __typeof__ (self) wself = self;
- // UIApplication * app = [UIApplication performSelector:@selector(sharedApplication)];
- // wself.bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
- // __strong __typeof (wself) sself = wself;
- // if (sself) {
- // if (wself.bgTask != UIBackgroundTaskInvalid && wself.bgTask != UIBackgroundTaskInvalid) {
- // [app endBackgroundTask:sself.bgTask];
- // sself.bgTask = UIBackgroundTaskInvalid;
- // }
- // }
- // }];
- // //开启定时器 不断向系统请求后台任务执行的时间
- // self.backGroundTimer = [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(applyForMoreTime) userInfo:nil repeats:YES];
- // [self.backGroundTimer fire];
- //}
- //-(void)applyForMoreTime {
- // //如果系统给的剩余时间小于60秒 就终止当前的后台任务,再重新初始化一个后台任务,重新让系统分配时间,这样一直循环下去,保持APP在后台一直处于active状态。
- // if ([UIApplication sharedApplication].backgroundTimeRemaining < 30) {
- // [[UIApplication sharedApplication] endBackgroundTask:self.bgTask];
- // self.bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
- // [[UIApplication sharedApplication] endBackgroundTask:self.bgTask];
- // self.bgTask = UIBackgroundTaskInvalid;
- // }];
- // }
- //}
- - (void)applicationWillEnterForeground:(UIApplication *)application {
-
-
- NSLog(@"applicationWillEnterForeground 应用程序将要进入活动状态,即将进入前台运行");
-
- // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
- [LCSaveData saveIsVideo:NO];
-
- if ([LCSaveData getLoginMark]) {
- if (![[YOUPAILCIMLoginManager sharedCenter] youpaifIMIsLogined]) {
- [[YOUPAILCIMLoginManager sharedCenter]IMLogin:[LCSaveModel getUserModel].youpaipuserinfo.youpaipuser_id token:[LCSaveModel getUserModel].youpaipuserinfo.youpaipim_token];
- }
- [LCHttpHelper requestWithURLString:ActiveUpdate parameters:nil needToken:YES type:(HttpRequestTypePost) success:^(id responseObject) {
- } failure:^(NSError *error) {}];
- }
-
- // if ([YOUPAILZAudioPlayer sharedInstance].youpaipneedRunInBackground) {
- // [[YOUPAILZAudioPlayer sharedInstance].youpaipplayer pause];
- // }
- // [[UIApplication sharedApplication] endBackgroundTask:self.bgTask];
- }
- - (void)applicationDidBecomeActive:(UIApplication *)application {
- NSLog(@"applicationDidBecomeActive 应用程序已进入前台,处于活动状态");
- // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
- [[YOUPAILCIMNotificationManager sharedCenter] youpaifhandelDictData];
- }
- - (void)applicationWillTerminate:(UIApplication *)application {
- NSLog(@"applicationWillTerminate 应用程序将要退出,通常用于保存数据和一些退出前的清理工作");
- // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
- }
- #pragma mark - DeviceToken
- -(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
- {
-
- NSLog(@"Device Token: %@", deviceToken);
- NSLog(@"Device Token HexStr: %@", [self convertDataToHexStr:deviceToken]);
-
-
- //device token v1.0.7
- // NSString * tokenString = [[[[deviceToken description] stringByReplacingOccurrencesOfString: @"<" withString: @""]
- // stringByReplacingOccurrencesOfString: @">" withString: @""]
- // stringByReplacingOccurrencesOfString: @" " withString: @""];
- // NSString *deviceTokenStr = [[NSString alloc]init];
- // if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 13) {
- // if (![deviceToken isKindOfClass:[NSData class]]) {
- // //记录获取token失败的描述
- // return;
- // }
- // const unsigned *tokenBytes = (const unsigned *)[deviceToken bytes];
- // NSString *strToken = [NSString stringWithFormat:@"%08x%08x%08x%08x%08x%08x%08x%08x",
- // ntohl(tokenBytes[0]), ntohl(tokenBytes[1]), ntohl(tokenBytes[2]),
- // ntohl(tokenBytes[3]), ntohl(tokenBytes[4]), ntohl(tokenBytes[5]),
- // ntohl(tokenBytes[6]), ntohl(tokenBytes[7])];
- // NSLog(@"deviceToken1:%@", strToken);
- // deviceTokenStr = strToken;
- // } else {
- // NSString *token = [NSString
- // stringWithFormat:@"%@",deviceToken];
- // token = [token stringByReplacingOccurrencesOfString:@"<" withString:@""];
- // token = [token stringByReplacingOccurrencesOfString:@">" withString:@""];
- // token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];
- // NSLog(@"deviceToken2 is: %@", token);
- // deviceTokenStr = token;
- // }
- // NSData *deviceTokenData = [NSData dataWithHexString:deviceTokenStr];
- [[YOUPAILCIMLoginManager sharedCenter] youpaifupdateDeviceToken:deviceToken];
- //注册友盟推送token
- // 7f064b92d72720d2c6739233aa48622e9c0bb23f11655b060f3edbfcce9f0cfa
- // [UMessage registerDeviceToken:deviceTokenData];
- }
- - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
- NSLog(@"didFailToRegisterForRemoteNotificationsWithError: %@",error.localizedDescription);
-
- }
- - (NSString *)convertDataToHexStr:(NSData *)data {
- if (!data || [data length] == 0) {
- return @"";
- }
- NSMutableString *hexString = [NSMutableString stringWithCapacity:([data length] * 2)];
- const unsigned char *bytes = (const unsigned char *)[data bytes];
-
- for (NSInteger i = 0; i < [data length]; ++i) {
- [hexString appendFormat:@"%02x", bytes[i]];
- }
- return [NSString stringWithString:hexString];
- }
- #pragma mark - 推送相关
- -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
- {
- [UMessage setAutoAlert:NO];
- // if([[[UIDevice currentDevice] systemVersion]intValue] < 10){
- [self handelRemoteNotification:userInfo];
- completionHandler(UIBackgroundFetchResultNewData);
- // }
- }
- - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
- {
- // //关闭友盟自带的弹出框
- [UMessage setAutoAlert:NO];
- [self handelRemoteNotification:userInfo];
- }
- //iOS10新增:处理前台收到通知的代理方法
- -(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler API_AVAILABLE(ios(10.0)){
- NSDictionary * userInfo = notification.request.content.userInfo;
- if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
- //关闭U-Push自带的弹出框
- [UMessage setAutoAlert:NO];
- //必须加这句代码
- [self handelRemoteNotification:userInfo];
-
- }else{
- //应用处于前台时的本地推送接受
- }
- //当应用处于前台时提示设置,需要哪个可以设置哪一个
- completionHandler(UNNotificationPresentationOptionSound|UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionAlert);
- }
- //iOS10新增:处理后台点击通知的代理方法
- -(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler API_AVAILABLE(ios(10.0)){
- NSDictionary * userInfo = response.notification.request.content.userInfo;
- if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
- //必须加这句代码
- [self handelRemoteNotification:userInfo];
- }else{
- //应用处于后台时的本地推送接受
- }
- }
- //处理后台消息推送
- - (void)handelRemoteNotification:(NSDictionary*)userInfo{
- // [UMessage didReceiveRemoteNotification:userInfo];
- NSLog(@"收到推送消息: %@", userInfo);
- NSInteger nimNum = [[userInfo objectForKey:@"nim"]integerValue];
- if (nimNum ==1) {//跳转
- NSString* callType = [userInfo objectForKey:@"callType"];
- NSString* msgType = [userInfo objectForKey:@"type"];
- if ([callType isEqualToString:@"video"]) {
- return ;
- }
- if ([msgType isEqualToString:@"customSystem"]) {//自定义系统消息的推送
- if ([self.window.rootViewController isKindOfClass:[YOUPAILCTabBarVC class]]){
- NSInteger link_type = [[userInfo objectForKey:@"link_type"] integerValue];
- NSString* link_url = [userInfo objectForKey:@"link_url"];
- if (link_type==0) {
- }else if (link_type==1){
- ZCBaseWebVC* webVc = [[ZCBaseWebVC alloc]init];
- webVc.contentUrl = link_url;
- [[LCTools getCurrentVC].navigationController pushViewController:webVc animated:YES];
- }else if (link_type==2){
- [[LCTools getCurrentVC] youpaifpageToStr:link_url];
- }
- }
- }else{//自定义IM消息的推送
- if ([self.window.rootViewController isKindOfClass:[YOUPAILCTabBarVC class]] && [LCSaveData getIsVideo]==NO) {
-
- NSString* userId = [userInfo objectForKey:@"userId"];
- if (userId) {
- NIMSession *session = [NIMSession session:userId type:NIMSessionTypeP2P];
- if (session) {
- @weakify(self);
- [ZCHUDHelper show];
- [[[NIMSDK sharedSDK] userManager] fetchUserInfos:@[session.sessionId] completion:^(NSArray<NIMUser *> * _Nullable users, NSError * _Nullable error) {
- @strongify(self);
- [ZCHUDHelper dismiss];
- YOUPAILCIMSessionVC *vc = [[YOUPAILCIMSessionVC alloc] initWithSession:session];
- [[LCTools getCurrentVC].navigationController pushViewController:vc animated:YES];
- }];
- }
- }
- }
- }
-
- }
- }
- //通过OpenInstall获取已经安装App被唤醒时的参数(如果是通过渠道页面唤醒App时,会返回渠道编号)
- -(void)getWakeUpParams:(OpeninstallData *)appData{
- if (appData.data) {//(动态唤醒参数)
- //e.g.如免填邀请码建立邀请关系、自动加好友、自动进入某个群组或房间等
- }
- if (appData.channelCode) {//(通过渠道链接或二维码唤醒会返回渠道编号)
- //e.g.可自己统计渠道相关数据等
- }
- NSLog(@"OpenInstallSDK:\n动态参数:%@;\n渠道编号:%@",appData.data,appData.channelCode);
- }
- #pragma mark - 跳转回调
- #if __IPHONE_OS_VERSION_MAX_ALLOWED > 100000
- - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
- {
- //6.3的新的API调用,是为了兼容国外平台(例如:新版facebookSDK,VK等)的调用[如果用6.2的api调用会没有回调],对国内平台没有影响。
- //处理通过openInstall URL Scheme唤起App的数据
- // [self handelOpenUrl:url];
- if ([url.host isEqualToString:@"safepay"]){//支付宝
- [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
- NSLog(@"AlipayResult = %@",resultDic);
- NSInteger resultStatus = [resultDic[@"resultStatus"] integerValue];
-
- if (resultStatus == 9000) {
- [OCNotificationCenter postNotificationName:ALIPAY_SUCCESS_NOTIFICATION object:nil];
- } else {
- [ZCHUDHelper showTitle:@"支付失败"];
- }
- }];
-
- // 授权跳转支付宝钱包进行支付,处理支付结果
- [[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic) {
- NSLog(@"AlipayResult = %@",resultDic);
- // 解析 auth code
- NSString *result = resultDic[@"result"];
- NSString *authCode = nil;
- if (result.length>0) {
- NSArray *resultArr = [result componentsSeparatedByString:@"&"];
- for (NSString *subResult in resultArr) {
- if (subResult.length > 10 && [subResult hasPrefix:@"auth_code="]) {
- authCode = [subResult substringFromIndex:10];
- break;
- }
- }
- }
- NSLog(@"授权结果 AlipayAuthCode = %@", authCode?:@"");
- }];
- return YES;
- }else if(([url.host isEqualToString:@"oauth"] || [url.host isEqualToString:@"pay"] || [url.host isEqualToString:@"resendContextReqByScheme"] || [url.host isEqualToString:@"platformId=wechat"]) && [url.scheme isEqualToString:OpenWXID]){//微信 wxadbddd65f7e82c2a 这个是爱糖的
-
- return [WXApi handleOpenURL:url delegate:self];
- }
- return NO;
- }
- #endif
- - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
- {
- //6.3的新的API调用,是为了兼容国外平台(例如:新版facebookSDK,VK等)的调用[如果用6.2的api调用会没有回调],对国内平台没有影响
- [OpenInstallSDK handLinkURL:url];
- BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url sourceApplication:sourceApplication annotation:annotation];
- if (!result) {
-
- // [self handelOpenUrl:url];
- if ([url.host isEqualToString:@"safepay"]){//支付宝
- [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
- NSLog(@"AlipayResult = %@",resultDic);
- NSInteger resultStatus = [resultDic[@"resultStatus"] integerValue];
-
- if (resultStatus == 9000) {
- [OCNotificationCenter postNotificationName:ALIPAY_SUCCESS_NOTIFICATION object:nil];
- } else {
- [ZCHUDHelper showTitle:@"支付失败"];
- }
- }];
-
- // 授权跳转支付宝钱包进行支付,处理支付结果
- [[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic) {
- NSLog(@"AlipayResult = %@",resultDic);
- // 解析 auth code
- NSString *result = resultDic[@"result"];
- NSString *authCode = nil;
- if (result.length>0) {
- NSArray *resultArr = [result componentsSeparatedByString:@"&"];
- for (NSString *subResult in resultArr) {
- if (subResult.length > 10 && [subResult hasPrefix:@"auth_code="]) {
- authCode = [subResult substringFromIndex:10];
- break;
- }
- }
- }
- NSLog(@"授权结果 AlipayAuthCode = %@", authCode?:@"");
- }];
- return YES;
- }else if(([url.host isEqualToString:@"oauth"] || [url.host isEqualToString:@"pay"] || [url.host isEqualToString:@"resendContextReqByScheme"] || [url.host isEqualToString:@"platformId=wechat"]) && [url.scheme isEqualToString:OpenWXID]){//微信
- return [WXApi handleOpenURL:url delegate:self];
- }
- return NO;
- }
- return result;
- }
- - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
- {
- BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url];
- if (!result) {
-
- if ([url.host isEqualToString:@"safepay"]){//支付宝
- [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
- NSLog(@"AlipayResult = %@",resultDic);
- NSInteger resultStatus = [resultDic[@"resultStatus"] integerValue];
-
- if (resultStatus == 9000) {
- [OCNotificationCenter postNotificationName:ALIPAY_SUCCESS_NOTIFICATION object:nil];
- } else {
- [ZCHUDHelper showTitle:@"支付失败"];
- }
- }];
-
- // 授权跳转支付宝钱包进行支付,处理支付结果
- [[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic) {
- NSLog(@"AlipayResult = %@",resultDic);
- // 解析 auth code
- NSString *result = resultDic[@"result"];
- NSString *authCode = nil;
- if (result.length>0) {
- NSArray *resultArr = [result componentsSeparatedByString:@"&"];
- for (NSString *subResult in resultArr) {
- if (subResult.length > 10 && [subResult hasPrefix:@"auth_code="]) {
- authCode = [subResult substringFromIndex:10];
- break;
- }
- }
- }
- NSLog(@"授权结果 AlipayAuthCode = %@", authCode?:@"");
- }];
- return YES;
- }else if(([url.host isEqualToString:@"oauth"] || [url.host isEqualToString:@"pay"] || [url.host isEqualToString:@"resendContextReqByScheme"] || [url.host isEqualToString:@"platformId=wechat"]) && [url.scheme isEqualToString:OpenWXID]){//微信
- return [WXApi handleOpenURL:url delegate:self];
- }
- return NO;
- }
- return result;
- }
- #pragma mark - 微信SDK所有请求
- - (void)onReq:(BaseReq *)req{
- if ([req isKindOfClass:[LaunchFromWXReq class]]) {
- LaunchFromWXReq *smallPro = (LaunchFromWXReq *)req;
- WXMediaMessage *meessage = smallPro.message;
- NSLog(@"meeage = %@", meessage);
- }
- }
- #pragma mark - 微信SDK所有响应
- - (void)onResp:(BaseResp *)resp{
- if([resp isKindOfClass:[SendAuthResp class]]){
- SendAuthResp *sendAuth = (SendAuthResp *)resp;
- if (sendAuth.errCode == 0 ) {
- if ([sendAuth.state isEqual:kAccountWeChatSendAuth]) {
- [OCNotificationCenter postNotificationName:WECHAT_AUTHORIZATION_NOTIFICATION object:nil userInfo:@{
- @"authCode":sendAuth.code
- }];
- }
- }
- }else if([resp isKindOfClass:[SendMessageToWXResp class]]){
- SendMessageToWXResp *sendMessageToWX = (SendMessageToWXResp *)resp;
- if (sendMessageToWX.errCode == 0) {
-
- }
- }else if ([resp isKindOfClass:[WXLaunchMiniProgramReq class]]){
- WXLaunchMiniProgramResp *WXLaunchMiniProgram = (WXLaunchMiniProgramResp *)resp;
- if ([WXLaunchMiniProgram.extMsg isEqualToString:@"fail"]) {
- [ZCHUDHelper showTitle:@"支付失败"];
- return;
- }
-
- if ([WXLaunchMiniProgram.extMsg isEqualToString:@"success"]) {
- [OCNotificationCenter postNotificationName:WECHATPAY_SUCCESS_NOTIFICATION object:nil];
- }
- }else if ([resp isKindOfClass:[PayResp class]]) {
- PayResp *pay = (PayResp *)resp;
- if (pay.errCode != 0 ) {
- [ZCHUDHelper showTitle:@"支付失败"];
- }else{
- [OCNotificationCenter postNotificationName:WECHATPAY_SUCCESS_NOTIFICATION object:nil];
- }
- }else if([resp isKindOfClass:[WXLaunchMiniProgramResp class]]){
- BOOL isPaySuccess = NO;
- PayResp *response = (PayResp*)resp;
- switch (response.errCode) {
- case WXSuccess: {
- if([response isKindOfClass:[WXLaunchMiniProgramResp class]]){
- WXLaunchMiniProgramResp *minPay = (WXLaunchMiniProgramResp *)resp;
- if([minPay.extMsg isEqualToString:@"0000"]){
- NSLog(@"微信回调支付成功");
- isPaySuccess = YES;
- }else{
- isPaySuccess = NO;
- }
- }else{
- isPaySuccess = YES;
- }
-
- break;
- }
- case WXErrCodeCommon: {
- NSLog(@"微信回调支付异常");
- break;
- }
- case WXErrCodeUserCancel: {
- NSLog(@"微信回调用户取消支付");
- break;
- }
- case WXErrCodeSentFail: {
- NSLog(@"微信回调发送支付信息失败");
- break;
- }
- case WXErrCodeAuthDeny: {
- NSLog(@"微信回调授权失败");
- break;
- }
- case WXErrCodeUnsupport: {
- NSLog(@"微信回调微信版本暂不支持");
- break;
- }
- default: {
- break;
- }
- }
- if (isPaySuccess) {
- // 发送微信支付成功通知
- [OCNotificationCenter postNotificationName:WECHATPAY_SUCCESS_NOTIFICATION object:nil];
- }else{
- // 支付失败通知
- [ZCHUDHelper showTitle:@"支付失败"];
- }
- }
- }
- #pragma mark 飘屏
- -(void)danmuProcess:(NSNotification *)notify
- {
- if ([LCSaveData getWhiteVersion]) {//白包取消飘屏
- return;
- }
-
- // 仅针对花蝶适配
- NSArray *tabvcArr = @[@"YMHomePageViewController", @"YOUPAILZDiscoverVC", @"YMRankingViewController", @"YOUPAILCMsgVC", @"YMMineViewController", ];
- BOOL allowDanmu = NO;
- for (NSString *tabvc in tabvcArr) {
- if ([LCTools.getCurrentVC isKindOfClass: NSClassFromString(tabvc)]) {
- allowDanmu = YES;
- }
- }
- // 非 TabVC 不允许弹出弹幕
- if (!allowDanmu) {
- return;
- }
-
- NSDictionary *dataDic = notify.userInfo;
- YOUPAILPIMNotificationModel *sysNotifyModel = dataDic[@"model"] ;
- // 数据解析为空,不显示弹幕
- if (!sysNotifyModel) {
- return;
- }
-
- self.barrageManager = [YOUPAIOCBarrageManager shareManager];
- UIViewController *appRootVC = [UIApplication sharedApplication].keyWindow.rootViewController;
- UIViewController *topVC = appRootVC;
- // if (topVC.presentedViewController) {
- // topVC = topVC.presentedViewController;
- // }
- [topVC.view addSubview:self.barrageManager.renderView];
- self.barrageManager.renderView.userInteractionEnabled = NO;
- /*
- NSArray *titleArray =@[@"张先生充值了100",@"李先生赠送了礼物飞机",@"小冠希赠送了礼物游艇",@"小坏蛋充值了1000RMB",@"小叮当赠送礼物海洋之心"];
- for(int i=0;i<5;i++)
- {
- NSDictionary *subDic= @{@"title":titleArray[i]};
- [self performSelector:@selector(addFixedSpeedAnimationCell:) withObject:subDic afterDelay:0.1*i];//添加等速的弹幕, 等速弹幕速度相同不会重叠
-
- }
- */
- /*
- YOUPAILPIMNotificationModel *ntModel = [[YOUPAILPIMNotificationModel alloc]init];
- ntModel.fromId =1021;
- ntModel.toid = 200;
- ntModel.nickname =@"张全蛋";
- ntModel.tonickname = @"大水蜜桃";
- ntModel.amount =1000;
- ntModel.avatar = @"uploads/avatar/33/2025_5_20_18_38_24_4037.jpg";
- ntModel.toavatar = @"images/avatar/woman.png";
- ntModel.chonzhi_panduang = 1;
- ntModel.giftname = @"飞机";
- ntModel.gifttotal = 3;
- ntModel.giftimg = @"images/gift/ic_video_gift22.png";
-
-
-
- YOUPAILPIMNotificationModel *ntModel2 = [[YOUPAILPIMNotificationModel alloc]init];
- ntModel2.fromId =1020;
- ntModel2.toid = 200;
- ntModel2.nickname =@"大水蜜桃旺仔牛奶";
- ntModel2.tonickname = @"大水蜜桃";
- ntModel2.amount =680000;
- ntModel2.avatar = @"uploads/album/201911/26/ce76dcdcff10af6daec61360fb302c26_.pic.jpg";
- ntModel2.toavatar = @"uploads/album/201911/26/72b682e5ad41514c68b6fe20b4a5213d_.pic.jpg";
- ntModel2.avatar = @"uploads/avatar/33/2025_5_20_18_38_24_4037.jpg";
- ntModel2.toavatar = @"images/avatar/woman.png";
- ntModel2.chonzhi_panduang = 1;
- ntModel2.giftname = @"飞机";
- ntModel2.gifttotal = 2;
- ntModel2.giftimg = @"images/gift/ic_video_gift22.png";
- [self performSelector:@selector(addMixedImageAndTextBarrage:) withObject:ntModel2 afterDelay:0.2];//添加等速的弹幕, 等速弹幕速度相同不会重叠
- [self performSelector:@selector(addFixedSpeedAnimationCell:) withObject:ntModel afterDelay:0.5];//添加等速的弹幕, 等速弹幕速度相同不会重叠
- [self performSelector:@selector(addFixedSpeedAnimationCell:) withObject:ntModel2 afterDelay:0.8];//添加等速的弹幕, 等速弹幕速度相同不会重叠
- [self.barrageManager start];
- */
- if (sysNotifyModel.notifyType == 12) {
- [self performSelector:@selector(addFixedSpeedAnimationCell:) withObject:sysNotifyModel afterDelay:0.5];//添加等速的弹幕, 等速弹幕速度相同不会重叠
- } else if (sysNotifyModel.notifyType == 14) {
- // [self performSelector:@selector(addOnlineNotifationAndTextBarrage:) withObject:sysNotifyModel afterDelay:0.35];//添加等速的弹幕, 等速弹幕速度相同不会重叠
- } else if (sysNotifyModel.notifyType == 15) {
- [self performSelector:@selector(addVipNotifationAndTextBarrage:) withObject:sysNotifyModel afterDelay:0.35];//添加等速的弹幕, 等速弹幕速度相同不会重叠
- } else {
- [self performSelector:@selector(addMixedImageAndTextBarrage:) withObject:sysNotifyModel afterDelay:0.2];//添加等速的弹幕, 等速弹幕速度相同不会重叠
- }
- [self.barrageManager start];
-
-
- }
- //充值
- - (void)addFixedSpeedAnimationCell:(YOUPAILPIMNotificationModel *)ntModel {
- YOUPAIOCBarrageGradientBackgroundColorDescriptor *gradientBackgroundDescriptor = [[YOUPAIOCBarrageGradientBackgroundColorDescriptor alloc] init];
- gradientBackgroundDescriptor.titleStr =[NSString stringWithFormat:@"充值了%ld钻石",ntModel.amount];
- gradientBackgroundDescriptor.vip = ntModel.vip;
- gradientBackgroundDescriptor.vip_icon = ntModel.vip_icon;
- gradientBackgroundDescriptor.imageUrl = ntModel.avatar;
- gradientBackgroundDescriptor.nickname = ntModel.nickname;
- gradientBackgroundDescriptor.fixedSpeed = 30.0;//用fixedSpeed属性设定速度
- gradientBackgroundDescriptor.barrageCellClass = [YOUPAIOCBarrageGradientBackgroundColorCell class];
- gradientBackgroundDescriptor.positionPriority = OCBarragePositionHigh;
- gradientBackgroundDescriptor.dataModel = ntModel;
-
- gradientBackgroundDescriptor.animationDuration = 12.0f;
- gradientBackgroundDescriptor.gradientColor = LCRedColor;
- gradientBackgroundDescriptor.gradientColor = [UIColor.blackColor colorWithAlphaComponent:0.2];
- // __weak typeof(gradientBackgroundDescriptor)weakGradient = gradientBackgroundDescriptor;
- // gradientBackgroundDescriptor.clickBlock = ^{
- // dispatch_async(dispatch_get_main_queue(), ^{
- // NSLog(@"%@", weakGradient.titleStr);
- // UIViewController *appRootVC = [UIApplication sharedApplication].keyWindow.rootViewController;
- // UIViewController *topVC = appRootVC;
- // if (topVC.presentedViewController) {
- // topVC = topVC.presentedViewController;
- // }
- // YOUPAIFSVideoChoseVC*VC= [[YOUPAIFSVideoChoseVC alloc]init];
- // VC.vWidth = KScreenWidth -60;
- // VC.vHeight = 235;
- // VC.avblock = ^{
- // // LCUserShowVC* userShow = [[LCUserShowVC alloc]init];
- // YOUPAILZUserShowVC *userShow = [[YOUPAILZUserShowVC alloc] init];
- // userShow.youpaipuserId = [NSString stringWithFormat:@"%ld",ntModel.fromId];;
- // [[LCTools getCurrentVC].navigationController pushViewController:userShow animated:YES];
- // };
- // VC.userId = [NSString stringWithFormat:@"%ld",ntModel.fromId];
- // VC.isTouchDismiss = YES;
- // [topVC TFPresentVC:VC completion:^{
- //
- // }];
- // });
- //
- // };
- [self.barrageManager youpaifrenderBarrageDescriptor:gradientBackgroundDescriptor];
- // [self performSelector:@selector(addFixedSpeedAnimationCell:) withObject:ntModel afterDelay:5.4];
- }
- // 礼物
- - (void)addMixedImageAndTextBarrage:(YOUPAILPIMNotificationModel *)ntModel {
- YOUPAIOCBarrageTextDescriptor *imageAndTextDescriptor = [[YOUPAIOCBarrageTextDescriptor alloc] init];
- imageAndTextDescriptor.positionPriority = OCBarragePositionHigh;
-
- imageAndTextDescriptor.animationDuration = 12.0f;
- imageAndTextDescriptor.fixedSpeed = 30.0;//用fixedSpeed属性设定速度
- imageAndTextDescriptor.dataModel = ntModel;
- imageAndTextDescriptor.gradientColor = LCGradientTwoColor;
- imageAndTextDescriptor.gradientColor = [UIColor.blackColor colorWithAlphaComponent:0.2];
- imageAndTextDescriptor.barrageCellClass = [YOUPAIOCBarrageCoustmerCell class];
-
- // __weak typeof(imageAndTextDescriptor)weakGradient = (imageAndTextDescriptor);
- // imageAndTextDescriptor.clickBlock = ^{
- // dispatch_async(dispatch_get_main_queue(), ^{
- // UIViewController *appRootVC = [UIApplication sharedApplication].keyWindow.rootViewController;
- // UIViewController *topVC = appRootVC;
- // if (topVC.presentedViewController) {
- // topVC = topVC.presentedViewController;
- // }
- // YOUPAIFSVideoChoseVC*VC= [[YOUPAIFSVideoChoseVC alloc]init];
- // VC.vWidth = KScreenWidth -60;
- // VC.vHeight = 235;
- // VC.userId = [NSString stringWithFormat:@"%ld",ntModel.fromId];
- // VC.avblock = ^{
- // // LCUserShowVC* userShow = [[LCUserShowVC alloc]init];
- // YOUPAILZUserShowVC *userShow = [[YOUPAILZUserShowVC alloc] init];
- // userShow.youpaipuserId = [NSString stringWithFormat:@"%ld",ntModel.fromId];;
- // [[LCTools getCurrentVC].navigationController pushViewController:userShow animated:YES];
- // };
- // VC.isTouchDismiss = YES;
- // [topVC TFPresentVC:VC completion:^{
- //
- // }];
- // NSLog(@"%@", weakGradient.dataModel.nickname);
- // });
- // };
- [self.barrageManager youpaifrenderBarrageDescriptor:imageAndTextDescriptor];
- //[self performSelector:@selector(addMixedImageAndTextBarrage:) withObject:ntModel afterDelay:5.0];
- }
- // 上线
- - (void)addOnlineNotifationAndTextBarrage:(YOUPAILPIMNotificationModel *)ntModel {
- YOUPAIOCBarrageTextDescriptor *imageAndTextDescriptor = [[YOUPAIOCBarrageTextDescriptor alloc] init];
- imageAndTextDescriptor.positionPriority = OCBarragePositionHigh;
-
-
- imageAndTextDescriptor.animationDuration = 5.0f;
- imageAndTextDescriptor.fixedSpeed = 30.0;//用fixedSpeed属性设定速度
- imageAndTextDescriptor.dataModel = ntModel;
- imageAndTextDescriptor.gradientColor = LCGradientTwoColor;
- imageAndTextDescriptor.barrageCellClass = [YOUPAILZBarrageGradientOnlineNotifactionCell class];
- __weak typeof(imageAndTextDescriptor)weakGradient = (imageAndTextDescriptor);
- imageAndTextDescriptor.clickBlock = ^{
- dispatch_async(dispatch_get_main_queue(), ^{
- UIViewController *appRootVC = [UIApplication sharedApplication].keyWindow.rootViewController;
- UIViewController *topVC = appRootVC;
- if (topVC.presentedViewController) {
- topVC = topVC.presentedViewController;
- }
- YOUPAIFSVideoChoseVC*VC= [[YOUPAIFSVideoChoseVC alloc]init];
- VC.vWidth = KScreenWidth -60;
- VC.vHeight = 235;
- VC.userId = [NSString stringWithFormat:@"%ld",ntModel.fromId];
- VC.avblock = ^{
- // LCUserShowVC* userShow = [[LCUserShowVC alloc]init];
- YOUPAILZUserShowVC *userShow = [[YOUPAILZUserShowVC alloc] init];
- userShow.youpaipuserId = [NSString stringWithFormat:@"%ld",ntModel.fromId];;
- [[LCTools getCurrentVC].navigationController pushViewController:userShow animated:YES];
- };
- VC.isTouchDismiss = YES;
- [topVC TFPresentVC:VC completion:^{
-
- }];
- NSLog(@"%@", weakGradient.dataModel.nickname);
- });
- };
- [self.barrageManager youpaifrenderBarrageDescriptor:imageAndTextDescriptor];
- //[self performSelector:@selector(addMixedImageAndTextBarrage:) withObject:ntModel afterDelay:5.0];
- }
- // VIP
- - (void)addVipNotifationAndTextBarrage:(YOUPAILPIMNotificationModel *)ntModel{
- YOUPAIOCBarrageTextDescriptor *imageAndTextDescriptor = [[YOUPAIOCBarrageTextDescriptor alloc] init];
- imageAndTextDescriptor.positionPriority = OCBarragePositionHigh;
-
-
- imageAndTextDescriptor.animationDuration = 5.0f;
- imageAndTextDescriptor.fixedSpeed = 30.0;//用fixedSpeed属性设定速度
- imageAndTextDescriptor.dataModel = ntModel;
- imageAndTextDescriptor.gradientColor = LCGradientTwoColor;
- imageAndTextDescriptor.barrageCellClass = [YOUPAILZBarrageGradientVipNotifactionCell class];
- __weak typeof(imageAndTextDescriptor)weakGradient = (imageAndTextDescriptor);
- imageAndTextDescriptor.clickBlock = ^{
- dispatch_async(dispatch_get_main_queue(), ^{
- YOUPAILZVipVC *vc = [[YOUPAILZVipVC alloc] init];
- [[LCTools getContainNavigationControllerCurrentVC].navigationController pushViewController:vc animated:YES];
- });
- };
- [self.barrageManager youpaifrenderBarrageDescriptor:imageAndTextDescriptor];
- }
- -(void)application:(UIApplication *)application performFetchWithCompletionHandler:(nonnull void (^)(UIBackgroundFetchResult))completionHandler
- {
-
- NSLog(@"后台刷新");
- AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
-
- [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
- switch (status) {
- case AFNetworkReachabilityStatusUnknown:
- // 未知网络
- // NSLog(@"当前网络:未知网络");
- break;
-
- case AFNetworkReachabilityStatusNotReachable:
- // 无网络
- // NSLog(@"当前网络:无网络");
- break;
-
- case AFNetworkReachabilityStatusReachableViaWWAN:
- // 蜂窝数据
- // NSLog(@"当前网络:蜂窝数据");
- break;
-
- case AFNetworkReachabilityStatusReachableViaWiFi:
- // 无线网络
- // NSLog(@"当前网络:无线网络");
- break;
-
- default:
- break;
- }
- }];
-
- // 开始监听
- [manager startMonitoring];
- }
- /*
- -(UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options API_AVAILABLE(ios(13.0)){
- UISceneConfiguration * config = [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role];
-
- return config;
- }
- */
- // 内购支付凭证上送
- -(void)uploadApplePayReceiptData{
- NSArray *receipt_datas = [LCSaveData getReceiptDatas];
- if (receipt_datas.count == 0) {
- return;
- }
- NSString *receipt_data = receipt_datas[0];
- [LCHttpHelper requestWithURLString:ApplePayBack parameters:@{@"receipt_data":receipt_data} needToken:YES type:(HttpRequestTypePost) success:^(id responseObject) {
- NSDictionary* dict = (NSDictionary*)responseObject;
- NSInteger code = [[dict objectForKey:@"code"] integerValue];
-
- if (code == 0 || code == 900) {
- [LCSaveData removeReceiptData:receipt_data];
- [self uploadApplePayReceiptData];
- }
-
- } failure:^(NSError *error) {
-
- }];
- }
- //获取首冲弹框数据
- - (void)youpaifloadAdvert1 {
- @weakify(self);
- [LCHttpHelper requestWithURLString:GetAdvert parameters:@{@"position":@"6"} needToken:YES type:(HttpRequestTypePost) success:^(id responseObject) {
- @strongify(self);
- NSDictionary* dict = (NSDictionary*)responseObject;
-
- //NSLog(@"输出🍀\n%@",dict);
- NSInteger code = [[dict objectForKey:@"code"] integerValue];
- // 请求成功才会继续后面的逻辑
- if (code != 0) { return; }
-
- NSDictionary *dataDict = [dict objectForKey:@"data"];
- NSInteger is_open = [[dataDict objectForKey:@"is_open"] integerValue];
- NSArray *listArr = [dataDict objectForKey:@"list"];
-
- // 弹窗打开,才会进行数据解析
- if (is_open != 1) {
- return;
- }
-
-
- for (NSDictionary *advDict in listArr) {
- YMAdvertModel *model = [YMAdvertModel yy_modelWithDictionary:advDict];
- NSArray *advModelTags = YMGlobalUtils.shared.advModelTags;
- if (![advModelTags containsObject:model.tag]) {
- [YMGlobalUtils.shared.advModels addObject:model];
- }
- }
-
- for (YMAdvertModel *model in YMGlobalUtils.shared.advModels) {
- if (model.window_type != 1 && model.showedTag != 0) {
- continue;
- }
-
- model.showedTag = 1;
-
- CGFloat delay = model.delayed_time;
-
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delay * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- YOUPAIZYFirstRechargeWindow *VC = [[YOUPAIZYFirstRechargeWindow alloc]init];
- //VC.youpaipdelegate = self;
- VC.vWidth = KScreenWidth - adapt(80);
- VC.vHeight = KScreenHeight * 0.6;
- VC.youpaipimageurl = model.image;
- VC.youpaiplink_type = model.link_type;
- VC.youpaiplink_url = model.link_url;
- VC.isTouchDismiss = YES;
- VC.youpaipimgV.contentMode = UIViewContentModeScaleAspectFill;
-
- [[LCTools getCurrentVC] TFPresentVC:VC completion:^{}];
-
- UIView *containerView = VC.baseView;
-
- UILabel *titleLabel = [[UILabel alloc] init];
- titleLabel.font = [UIFont systemFontOfSize:24 weight:(UIFontWeightBold)];
- titleLabel.textColor = UIColor.blackColor;
- titleLabel.textAlignment = NSTextAlignmentCenter;
- titleLabel.text = model.title;
- [containerView addSubview:titleLabel];
-
- UITextView *textView = [[UITextView alloc] init];
- textView.text = model.content;
- textView.font = [UIFont systemFontOfSize:15 weight:(UIFontWeightRegular)];
- textView.textColor = [UIColor.blackColor colorWithAlphaComponent:0.5];
- textView.backgroundColor = UIColor.clearColor;
- textView.editable = NO;
- [containerView addSubview:textView];
-
- [titleLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(containerView).offset(adapt(20));
- make.left.right.equalTo(containerView);
- make.height.mas_equalTo(adapt(40));
- }];
- [textView mas_remakeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(titleLabel.mas_bottom).offset(adapt(20));
- make.left.equalTo(containerView).offset(adapt(20));
- make.right.equalTo(containerView).offset(adapt(-20));
- make.bottom.equalTo(containerView).offset(adapt(-20));
- }];
- });
- }
- } failure:^(NSError *error) {}];
-
- }
- @end
|