| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117 |
- //
- // AppDelegate.m
- // MiMoLive
- //
- // Created by SuperC on 2023/10/7.
- //
- #import "AppDelegate.h"
- #import "MOLoginChooseVC.h"
- #import "IQKeyboardManager.h"
- #import "POLanguageVC.h"
- #import "MOFirstInfoSetVC.h"
- #import "MOTopUpVC.h"
- #import "MOMineEditInfoVC.h"
- #import "MOShowLivePagesVC.h"
- #import "MOVipDetailVC.h"
- #import "MOGradeCenterVC.h"
- #import "MOCreateLiveVC.h"
- #import "NSObject+MOLaunchImage.h"
- #import "MOShopBaseVC.h"
- #import "MOUserHomePageVC.h"
- #import "MOGetGiftView.h"
- #import "MOWebViewController.h"
- #import "MODiaWinVC.h"
- #import "MODrawOpenView.h"
- #import "MODrawOpenVC.h"
- #import "MOWameListVC.h"
- #import "MOFanClubListVC.h"//粉丝团
- #import "MOBindingEmailVC.h"//绑定邮箱
- #import "MOBingMobileVC.h"//绑定手机
- #import "MOMobileDataModels.h"
- #import "MOSetPasswordSMS.h"//设置交易密码界面
- #import "MOTopUpView.h"//半屏充值弹窗
- #import "MOPackageViewController.h"//背包
- #import "MOEasemobEvent.h"
- //#import <YTCommonXMagic/TELicenseCheck.h>
- #import <AdjustSdk/AdjustSdk.h>
- #if !TARGET_IPHONE_SIMULATOR
- #import <FBSDKCoreKit/FBSDKCoreKit.h>
- #endif
- #import "TencentCaptcha.h"//腾讯验证码
- #import "TIMPush/TIMPush.h"
- #if DEBUG
- #import "MOLogFormatter.h"
- #import "DoraemonKit.h"
- #import "NEHTTPEye.h"
- #endif
- @interface AppDelegate ()<UNUserNotificationCenterDelegate,AdjustDelegate,TIMPushListener>
- @property (nonatomic, assign) BOOL isFromBackground;
- @end
- @implementation AppDelegate
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- // Override point for customization after application launch.
-
- #if DEBUG
- [self setupLogger];
- [self setupNetworkMonitor];
- #endif
-
- //IQKeyboardManager
- [IQKeyboardManager sharedManager].shouldResignOnTouchOutside = YES;
-
- //APNs
- [self setAPNsWithApplication:application];
-
- //Adjust
- [self setAdjustConfig];
-
- //腾讯验证码
- [self setTencentCaptcha];
- //腾讯推送
- [self toRegisterTencentPush];
-
- [self parpareIAP];//内购
-
- self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
-
- self.window.backgroundColor = [UIColor whiteColor];
-
- [MOEventDeliver notifyAppLaunchFinished];
-
- NSString *token = [NSString stringWithFormat:@"%@",GetToken];
- if (token != nil && ![token isEqualToString:@"(null)"])
- {
- //登录过
- [self mainPageAction];
-
- [self showFirstLaunchImage];
-
- self.isShowAdView = YES;
-
- // 检查应用程序是否通过推送通知启动
- NSDictionary *remoteNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
- if (remoteNotification) {
- [self handlePushNotification:remoteNotification];
- }
-
- [MOEventDeliver notifyUserLogin];
- }
- else
- {
- //没有登录过
- [self loginPageAction];
- }
- #if !TARGET_IPHONE_SIMULATOR
- [[FBSDKApplicationDelegate sharedInstance] application:application
- didFinishLaunchingWithOptions:launchOptions];
- #endif
-
- #if DEBUG
- [self setupDoraemonKit];
- #endif
-
- return YES;
- }
- - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
- if ([[userActivity activityType]
- isEqualToString:NSUserActivityTypeBrowsingWeb]) {
- NSURL *incomingURL = [userActivity webpageURL];
-
- [self handleAdjustLink:incomingURL];
-
- SendNotification(@"kNotification_adjustAgent")//如果app没被杀死,需要通知绑定
- //#if kAPP_Environment == 2
- // if (inviteCode.length > 0) {
- // dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- // [MBProgressHUD showInfoMessage:[NSString stringWithFormat:@"continueUserActivity code = %@", inviteCode]];
- // });
- // }
- //#endif
- } else {
- return NO;
- }
- return YES;
- }
- - (BOOL)adjustDeferredDeeplinkReceived:(NSURL *)deeplink {
- [self handleAdjustLink:deeplink];
- return NO;
- }
- - (void)mainPageAction{
- MOMainTabController *mainTabbar = [MOMainTabController sharedSingleton];
- mainTabbar.isNormalOpen = YES;
- [mainTabbar toResetSetupTabbar];
- self.window.rootViewController = mainTabbar;
-
- //MOFirstInfoSetVC
- //POLanguageVC
- // MOFirstInfoSetVC *vc = [[MOFirstInfoSetVC alloc] init];
- // UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
- // [nav.navigationBar setHidden:YES];
- // self.window.rootViewController = nav;
-
- [self.window makeKeyAndVisible];
- }
- - (void)loginPageAction{
-
- MOLoginChooseVC *vc = [[MOLoginChooseVC alloc] init];
- UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
- [nav.navigationBar setHidden:YES];
- self.window.rootViewController = nav;
-
- [self.window makeKeyAndVisible];
- }
- //推送注册
- - (void)setAPNsWithApplication:(UIApplication *)application{
-
- [self setApsConfigWithApplication:application];
- }
- - (void)setTencentCaptcha{
- [TencentCaptcha setupWithConfigurationHandler:^(TencentCaptchaConfiguration * _Nonnull config) {
- config.appID = kTentCaptchaAppIdStr;
- }];
- }
- - (void)setAdjustConfig{
- NSString *appToken = @"s78jipv8axhc";
-
- #if kAPP_Environment == 1
- NSString *environment = ADJEnvironmentProduction;
- ADJConfig *adjustConfig = [[ADJConfig alloc] initWithAppToken:appToken
- environment:environment];
- adjustConfig.logLevel = ADJLogLevelSuppress;
- [adjustConfig enableCostDataInAttribution];
- [adjustConfig setDelegate:self];
- #elif kAPP_Environment == 2
- NSString *environment = ADJEnvironmentSandbox;
- ADJConfig *adjustConfig = [[ADJConfig alloc] initWithAppToken:appToken
- environment:environment];
- adjustConfig.logLevel = ADJLogLevelVerbose;
- [adjustConfig enableCostDataInAttribution];
- [adjustConfig setDelegate:self];
- #endif
- [Adjust initSdk:adjustConfig];
- }
- - (void)adjustAttributionChanged:(ADJAttribution *)attribution{
-
- }
- - (void)setApsConfigWithApplication:(UIApplication *)application{
- if (NSClassFromString(@"UNUserNotificationCenter")) {
- //注册推送,用于 iOS 10 及以上版本。
- UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
- center.delegate = self; // 设置 UNUserNotificationCenter 的代理
- [center requestAuthorizationWithOptions:UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert completionHandler:^(BOOL granted, NSError *error) {
- if (granted) {
- dispatch_async(dispatch_get_main_queue(), ^{
- [application registerForRemoteNotifications];
- });
- }
- }];
- return;
- }
-
- if([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
- //iOS 8 至 iOS 10 推送样式设置。
- UIUserNotificationType notificationTypes = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
- UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:notificationTypes categories:nil];
- [application registerUserNotificationSettings:settings];
- }
-
- if ([application respondsToSelector:@selector(registerForRemoteNotifications)]) {
- //注册推送,用于 iOS 8 及以上版本。
- [application registerForRemoteNotifications];
- } else {
- //注册推送,用于 iOS 8 之前版本。
- UIRemoteNotificationType notificationTypes = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert;
- [[UIApplication sharedApplication] registerForRemoteNotificationTypes:notificationTypes];
- }
- MOLogV(@"注册完毕");
- }
- // 将得到的deviceToken传给SDK
- - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
- {
- // 异步方法
-
- [Adjust setPushToken:deviceToken];
-
- // dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
- // EMError *error = [[EMClient sharedClient] bindDeviceToken:deviceToken];
- // MOLogV(@"deviceToken 回调完毕");
- // });
- }
- // 注册deviceToken失败
- - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{
- MOLogV(@"注册deviceToken失败 error -- %@",error);
- }
- // 当应用在前台时收到通知
- - (void)userNotificationCenter:(UNUserNotificationCenter *)center
- willPresentNotification:(UNNotification *)notification
- withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {
- // 处理通知内容
- NSDictionary *userInfo = notification.request.content.userInfo;
- MOLogV(@"Foreground Notification received: %@", userInfo);
- // [[EMLocalNotificationManager sharedManager] userNotificationCenter:center willPresentNotification:notification withCompletionHandler:completionHandler];
- }
- - (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandler
- {
-
- // [[EMLocalNotificationManager sharedManager] userNotificationCenter:center didReceiveNotificationResponse:response withCompletionHandler:completionHandler];
-
- UNNotificationRequest *request = response.notification.request;
- UNNotificationContent *content = request.content;
- NSDictionary *userInfo = content.userInfo;
-
- UIApplicationState state = [[UIApplication sharedApplication] applicationState];
- if (state == UIApplicationStateInactive){
-
- }
- completionHandler();
- }
- // 处理推送通知数据并跳转到指定界面
- - (void)handlePushNotification:(NSDictionary *)userInfo {
- // 解析推送通知数据
- NSString *targetViewController = userInfo[@"targetViewController"];
- NSString *additionalData = userInfo[@"additionalData"];
- }
- - (void)emDidRecivePushSilentMessage:(NSDictionary *)messageDic{
- //透传消息
- MOLogV(@"emDidRecivePushSilentMessage : %@",messageDic);
-
- kMainThreadBlock(^{
- MOEasemobEvent *baseModel = [MOEasemobEvent modelWithDictionary:messageDic];
- //每日任务
- if([baseModel.event isEqualToString:@"task.dialog"]){
- TaskPublishEvent *publishInfo = [TaskPublishEvent modelWithJSON:baseModel.value];
-
- MOGetGiftView *view = [MOGetGiftView moGetGiftView];
- view.viewModel = publishInfo;
- [view showGetGiftView];
- }
- //钻石大赢家
- else if ([baseModel.event isEqualToString:@"activity.big.winner"]){
-
- UIViewController *currentVC = [MOTools currentViewController];
-
-
-
- ActivityBigWinnerPublishEvent *diaWinObject = [ActivityBigWinnerPublishEvent modelWithJSON:baseModel.value];
-
- MODrawOpenVC *vc = [[MODrawOpenVC alloc] init];
- vc.viewModel = diaWinObject;
- UINavigationController *newNav = [[UINavigationController alloc] initWithRootViewController:vc];
- newNav.modalPresentationStyle = UIModalPresentationOverFullScreen;
- [currentVC presentViewController:newNav animated:NO completion:nil];
-
- }
- })
- }
- - (void)toOpenTheSchemeUrlWith:(NSString *)schemeUrl{
-
- if(schemeUrl.length == 0){
- return;
- }
-
- NSURL *url = [NSURL URLWithString:schemeUrl];
- if ([[UIApplication sharedApplication]respondsToSelector:@selector(openURL:options:completionHandler:)])
- {
- [[UIApplication sharedApplication] openURL:url options:@{UIApplicationOpenURLOptionUniversalLinksOnly:@NO} completionHandler:^(BOOL success) {}];
- }
- else
- {
- [[UIApplication sharedApplication] openURL:url];
- }
- }
- - (void)application:(UIApplication *)application
- didReceiveRemoteNotification:(NSDictionary *)userInfo
- fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
- if ([[userInfo objectForKey:@"adjust_purpose"]
- isEqualToString:@"uninstall detection"]) {
- // No handling required for Adjust data payload
- completionHandler(UIBackgroundFetchResultNoData);
- } else {
- // Handle other types of push messages here
- // Pass the appropriate value to the completionHandler:
- // UIBackgroundFetchResultNewData, UIBackgroundFetchResultNoData,
- // or UIBackgroundFetchResultFailed
- completionHandler(UIBackgroundFetchResultNewData);
- }
- }
- - (void)handleAdjustLink:(NSURL *)link {
- NSString *inviteCode = [MOTools getValueWithKey:kAgentInviteCodeKey url:link];
- [[MODataCache sharedYYCache] setObject:inviteCode forKey:kAgentInviteCode];
-
- NSString *jumpRoomId = [MOTools getValueWithKey:kAgentJumpRoomIdKey url:link];
- [[MODataCache sharedYYCache] setObject:jumpRoomId forKey:kAgentJumpRoomId];
-
- //#if kAPP_Environment == 2
- // if (jumpRoomId.length > 0) {
- // dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- // [MBProgressHUD showInfoMessage:[NSString stringWithFormat:@"jumpRoomId = %@", link]];
- // });
- // }
- //#endif
- }
- //MARK: - Scheme 跳转
- - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
- MOLogV(@"从哪个app跳转而来 Bundle ID: %@", options[UIApplicationOpenURLOptionsSourceApplicationKey]);
- MOLogV(@"URL scheme:%@", [url scheme]);//mimo
- MOLogV(@"URL query:%@", [url query]);
- MOLogV(@"URL query:%@", [url path]); //live_boot
-
- if ([url.scheme isEqualToString:@"mimo"]){
- NSString *urlString = url.absoluteString;
-
- NSString *roomId;
- if ([urlString rangeOfString:@"roomId="].location != NSNotFound)
- {
- roomId = [urlString componentsSeparatedByString:@"roomId="].lastObject;
- }
-
- NSString *userId;
- if ([urlString rangeOfString:@"userId="].location != NSNotFound)
- {
- userId = [urlString componentsSeparatedByString:@"userId="].lastObject;
- }
-
- if([urlString containsString:@"jump_native"]){
- //跳转
-
- if([urlString containsString:@"live_room"]){
-
- if(roomId.length == 0){
- return YES;
- }
-
- //直播间
- MOMainTabController *mainTabbar = [MOMainTabController sharedSingleton];
- if ([mainTabbar isInLiveRoom]) {
- return YES;
- }
-
- [MOShowAgoraKitManager shareManager].isFirstShow = YES;
- MOLiveList *model = [[MOLiveList alloc] init];
- model.id = roomId;
- MOShowLivePagesVC *vc = [[MOShowLivePagesVC alloc] init];
- vc.userType = MOShowLiveAudienceType;
- vc.roomList = @[model].mutableCopy;
- vc.focusIndex = 0;
-
- // UINavigationController *newNav = [[UINavigationController alloc] initWithRootViewController:vc];
- // newNav.modalPresentationStyle = UIModalPresentationFullScreen;
- // [nav presentViewController:newNav animated:YES completion:nil];
-
- vc.hidesBottomBarWhenPushed = YES;
- [mainTabbar.selectedViewController pushViewController:vc animated:YES];
-
- }
-
- if([urlString containsString:@"recharge"]){
- //充值
- MOMainTabController *mainTabbar = [MOMainTabController sharedSingleton];
- UINavigationController *nav = mainTabbar.selectedViewController;
-
- if (nav.presentedViewController) {
- if ([nav isKindOfClass:[UINavigationController class]]) {
- UINavigationController *presentingNavigationController = (UINavigationController *)nav.presentedViewController;
- MOTopUpVC *vc = [[MOTopUpVC alloc] init];
- vc.hidesBottomBarWhenPushed = YES;
- [presentingNavigationController pushViewController:vc animated:YES];
- }
- } else {
- MOTopUpVC *vc = [[MOTopUpVC alloc] init];
- vc.hidesBottomBarWhenPushed = YES;
- [nav pushViewController:vc animated:YES];
- }
- }
-
- if([urlString containsString:@"live_half_topup"]){//半屏充值弹窗
- MOTopUpView *view = [MOTopUpView moTopUpView];
- [view showTopUpView];
- }
-
- if([urlString containsString:@"follow"]){
- //关注
-
- if(roomId.length == 0){
- return YES;
- }
-
- MOMainTabController *mainTabbar = [MOMainTabController sharedSingleton];
- UINavigationController *nav = mainTabbar.selectedViewController;
-
- if (nav.presentedViewController) {
- if ([nav isKindOfClass:[UINavigationController class]]) {
- UINavigationController *presentingNavigationController = (UINavigationController *)nav.presentedViewController;
-
- BOOL isHaveLive = NO;
-
- for (UIViewController *vc in presentingNavigationController.viewControllers) {
- if([vc isKindOfClass:[MOShowLivePagesVC class]]){
- isHaveLive = YES;
- break;
- }
- }
-
- if(isHaveLive){
- [MBProgressHUD showTipMessageInWindow:NSLocalString(@"mimo_joined_live_room_tip")];
- return YES;
- }
- }
- }
-
- if ([nav isKindOfClass:[UINavigationController class]]) {
- BOOL isHaveLive = NO;
-
- for (UIViewController *vc in nav.viewControllers) {
- if([vc isKindOfClass:[MOShowLivePagesVC class]]){
- isHaveLive = YES;
- break;
- }
- }
-
- if(isHaveLive){
- [MBProgressHUD showTipMessageInWindow:NSLocalString(@"mimo_joined_live_room_tip")];
- return YES;
- }
- }
-
- [MOShowAgoraKitManager shareManager].isFirstShow = YES;
- MOLiveList *model = [[MOLiveList alloc] init];
- model.id = roomId;
- MOShowLivePagesVC *vc = [[MOShowLivePagesVC alloc] init];
- vc.userType = MOShowLiveAudienceType;
- vc.roomList = @[model].mutableCopy;
- vc.focusIndex = 0;
-
- // UINavigationController *newNav = [[UINavigationController alloc] initWithRootViewController:vc];
- // newNav.modalPresentationStyle = UIModalPresentationFullScreen;
- // [nav presentViewController:newNav animated:YES completion:nil];
-
- vc.hidesBottomBarWhenPushed = YES;
- [nav pushViewController:vc animated:YES];
- }
-
- if([urlString containsString:@"edit"]){
- //编辑
- MOMainTabController *mainTabbar = [MOMainTabController sharedSingleton];
- UINavigationController *nav = mainTabbar.selectedViewController;
-
- if (nav.presentedViewController) {
- if ([nav isKindOfClass:[UINavigationController class]]) {
- UINavigationController *presentingNavigationController = (UINavigationController *)nav.presentedViewController;
- MOMineEditInfoVC *vc = [[MOMineEditInfoVC alloc] init];
- vc.hidesBottomBarWhenPushed = YES;
- [presentingNavigationController pushViewController:vc animated:YES];
- }
- } else {
- MOMineEditInfoVC *vc = [[MOMineEditInfoVC alloc] init];
- vc.hidesBottomBarWhenPushed = YES;
- [nav pushViewController:vc animated:YES];
- }
- }
-
- if([urlString containsString:@"live_boot"]){
- //主播-开播
- //直播间
- MOMainTabController *mainTabbar = [MOMainTabController sharedSingleton];
- UINavigationController *nav = mainTabbar.selectedViewController;
-
- if (nav.presentedViewController) {
- if ([nav isKindOfClass:[UINavigationController class]]) {
- UINavigationController *presentingNavigationController = (UINavigationController *)nav.presentedViewController;
-
- BOOL isHaveLive = NO;
-
- for (UIViewController *vc in presentingNavigationController.viewControllers) {
- if([vc isKindOfClass:[MOShowLivePagesVC class]]){
- isHaveLive = YES;
- break;
- }
- }
-
- if(isHaveLive){
- [MBProgressHUD showTipMessageInWindow:NSLocalString(@"mimo_joined_live_room_tip")];
- return YES;
- }
- }
- }
- SendNotification(@"kNotification_OpenTheLiveRoom");
- }
-
- if([urlString containsString:@"level"]){
- //等级
- MOMainTabController *mainTabbar = [MOMainTabController sharedSingleton];
- UINavigationController *nav = mainTabbar.selectedViewController;
-
- if (nav.presentedViewController) {
- if ([nav isKindOfClass:[UINavigationController class]]) {
- UINavigationController *presentingNavigationController = (UINavigationController *)nav.presentedViewController;
-
- MOWebViewController *vc = [[MOWebViewController alloc] init];
- NSString *urlStr = [NSString stringWithFormat:@"%@/#/userLevel",kNetPath_Web_Base];
- vc.webUrl = [NSURL URLWithString:urlStr];
- vc.hidesBottomBarWhenPushed = YES;
- [presentingNavigationController pushViewController:vc animated:YES];
- }
- } else {
- MOWebViewController *vc = [[MOWebViewController alloc] init];
- NSString *urlStr = [NSString stringWithFormat:@"%@/#/userLevel",kNetPath_Web_Base];
- vc.webUrl = [NSURL URLWithString:urlStr];
- vc.hidesBottomBarWhenPushed = YES;
- [nav pushViewController:vc animated:YES];
- }
- }
-
- if([urlString containsString:@"vip"]){
- //编辑
- MOMainTabController *mainTabbar = [MOMainTabController sharedSingleton];
- UINavigationController *nav = mainTabbar.selectedViewController;
-
- NSURLComponents *components = [NSURLComponents componentsWithString:urlString];
- NSArray<NSURLQueryItem *> *queryItems = components.queryItems;
- NSInteger showType = 0;
- for (NSURLQueryItem *item in queryItems) {
- if ([item.name isEqualToString:@"showType"]) {
- showType = [item.value integerValue];
- break;
- }
- }
-
- if (nav.presentedViewController) {
- if ([nav isKindOfClass:[UINavigationController class]]) {
- UINavigationController *presentingNavigationController = (UINavigationController *)nav.presentedViewController;
- MOVipDetailVC *vc = [[MOVipDetailVC alloc] init];
- vc.showType = showType;
- vc.hidesBottomBarWhenPushed = YES;
- [presentingNavigationController pushViewController:vc animated:YES];
- }
- } else {
- MOVipDetailVC *vc = [[MOVipDetailVC alloc] init];
- vc.showType = showType;
- vc.hidesBottomBarWhenPushed = YES;
- [nav pushViewController:vc animated:YES];
- }
- }
-
- if([urlString containsString:@"shop"]){
- //编辑
- MOMainTabController *mainTabbar = [MOMainTabController sharedSingleton];
- UINavigationController *nav = mainTabbar.selectedViewController;
-
- if (nav.presentedViewController) {
- if ([nav isKindOfClass:[UINavigationController class]]) {
- UINavigationController *presentingNavigationController = (UINavigationController *)nav.presentedViewController;
- MOShopBaseVC *vc = [[MOShopBaseVC alloc] init];
- vc.hidesBottomBarWhenPushed = YES;
- [presentingNavigationController pushViewController:vc animated:YES];
- }
- } else {
- MOShopBaseVC *vc = [[MOShopBaseVC alloc] init];
- vc.hidesBottomBarWhenPushed = YES;
- [nav pushViewController:vc animated:YES];
- }
- }
-
- if([urlString containsString:@"homePage"]){
-
- if(userId.length == 0){
- return YES;
- }
- //个人主页
- MOMainTabController *mainTabbar = [MOMainTabController sharedSingleton];
- UINavigationController *nav = mainTabbar.selectedViewController;
-
- if (nav.presentedViewController) {
- if ([nav isKindOfClass:[UINavigationController class]]) {
- UINavigationController *presentingNavigationController = (UINavigationController *)nav.presentedViewController;
- MOUserHomePageVC *vc = [[MOUserHomePageVC alloc] init];
- vc.userId = userId;
- vc.hidesBottomBarWhenPushed = YES;
- [presentingNavigationController pushViewController:vc animated:YES];
- }
- }
- else{
- MOUserHomePageVC *vc = [[MOUserHomePageVC alloc] init];
- vc.userId = userId;
- vc.hidesBottomBarWhenPushed = YES;
- [nav pushViewController:vc animated:YES];
- }
- }
-
- if([urlString containsString:@"fans_club"]){
- //粉丝团
- MOMainTabController *mainTabbar = [MOMainTabController sharedSingleton];
- UINavigationController *nav = mainTabbar.selectedViewController;
-
- if (nav.presentedViewController) {
- if ([nav isKindOfClass:[UINavigationController class]]) {
- UINavigationController *presentingNavigationController = (UINavigationController *)nav.presentedViewController;
- MOFanClubListVC *vc = [[MOFanClubListVC alloc] init];
- vc.hidesBottomBarWhenPushed = YES;
- [presentingNavigationController pushViewController:vc animated:YES];
- }
- }
- else{
- MOFanClubListVC *vc = [[MOFanClubListVC alloc] init];
- vc.hidesBottomBarWhenPushed = YES;
- [nav pushViewController:vc animated:YES];
- }
- }
-
- if([urlString containsString:@"webview"]){
- NSString *webUrlStr;
- if ([urlString rangeOfString:@"url="].location != NSNotFound)
- {
- webUrlStr = [urlString componentsSeparatedByString:@"url="].lastObject;
- }
-
- NSString *decodedString = [webUrlStr stringByRemovingPercentEncoding];
-
- BOOL isShowTitle = YES;
- if([decodedString containsString:@"FullScreen=1"]){
- isShowTitle = NO;
- }
-
- MOWebViewController *vc = [[MOWebViewController alloc] init];
- vc.webUrl = [NSURL URLWithString:decodedString];
- vc.isShowTitle = isShowTitle;
- vc.hidesBottomBarWhenPushed = YES;
- UIViewController *currentVC = [MOTools currentViewController];
- [currentVC.navigationController pushViewController:vc animated:YES];
- }
-
- if([urlString containsString:[MOTextAESTools toGetHameList]]){
- //中心
- MOMainTabController *mainTabbar = [MOMainTabController sharedSingleton];
- UINavigationController *nav = mainTabbar.selectedViewController;
-
- if (nav.presentedViewController) {
- if ([nav isKindOfClass:[UINavigationController class]]) {
- UINavigationController *presentingNavigationController = (UINavigationController *)nav.presentedViewController;
- MOWameListVC *vc = [[MOWameListVC alloc] init];
- vc.hidesBottomBarWhenPushed = YES;
- [presentingNavigationController pushViewController:vc animated:YES];
- }
- }
- else{
- MOWameListVC *vc = [[MOWameListVC alloc] init];
- vc.hidesBottomBarWhenPushed = YES;
- [nav pushViewController:vc animated:YES];
- }
- }
-
- //钻石夺宝
- if([urlString containsString:@"diamondWinner"]){
- MODiaWinVC *vc = [[MODiaWinVC alloc] init];
- UIViewController *currentVC = [MOTools currentViewController];
- vc.hidesBottomBarWhenPushed = YES;
- [currentVC.navigationController pushViewController:vc animated:YES];
- }
-
- //绑定邮箱
- if([urlString containsString:@"bind_email"]){
- UIViewController *currentVC = [MOTools currentViewController];
- MOBindingEmailVC *vc = [[MOBindingEmailVC alloc] init];
- vc.hidesBottomBarWhenPushed = YES;
- [currentVC.navigationController pushViewController:vc animated:YES];
- }
-
- //绑定手机
- if([urlString containsString:@"bind_phone_number"]){
- UIViewController *currentVC = [MOTools currentViewController];
- MOBingMobileVC *vc = [[MOBingMobileVC alloc] init];
- vc.hidesBottomBarWhenPushed = YES;
- [currentVC.navigationController pushViewController:vc animated:YES];
- }
-
- //设置密码2 - 手机
- if([urlString containsString:@"set_password_phone_number"]){
- [self toSetThePsw2With:1];
- }
-
- //设置密码2 - 邮箱
- if([urlString containsString:@"set_password_email"]){
- [self toSetThePsw2With:2];
- }
-
- //忘记密码2 - 邮箱
- if([urlString containsString:@"forget_email"]){
- [self toSetThePsw2With:4];
- }
-
- //忘记密码2 - 手机号码
- if([urlString containsString:@"forget_phone_number"]){
- [self toSetThePsw2With:3];
- }
-
- //修改密码
- if([urlString containsString:@"change_password"]){
- UIViewController *currentVC = [MOTools currentViewController];
- MOSetPasswordSMS *vc = [[MOSetPasswordSMS alloc] init];
- vc.vcType = MOChangePsw2EnterOldPsw;
- vc.hidesBottomBarWhenPushed = YES;
- [currentVC.navigationController pushViewController:vc animated:YES];
- }
-
- //跳转wame列表
- if([urlString containsString:@"wames"]){
- UIViewController *currentVC = [MOTools currentViewController];
- MOWameListVC *vc = [[MOWameListVC alloc] init];
- vc.hidesBottomBarWhenPushed = YES;
- [currentVC.navigationController pushViewController:vc animated:YES];
- }
-
- //跳转背包列表
- if([urlString containsString:@"user_backpack"]){
- UIViewController *currentVC = [MOTools currentViewController];
- MOPackageViewController *vc = [[MOPackageViewController alloc] init];
- vc.hidesBottomBarWhenPushed = YES;
- [currentVC.navigationController pushViewController:vc animated:YES];
- }
- }
- }
-
- // 允许打开
- return YES;
- }
- //1 为手机 2为邮箱 3手机找回 4邮箱找回
- - (void)toSetThePsw2With:(NSInteger)type{
- WEAKSELF
- [kHttpManager toGetTheUserSecurityInfoWithParams:nil andBlock:^(id _Nonnull data, NSError * _Nonnull error) {
- if(kCode_Success){
- MOLogV(@"%@",[[NSString alloc] initWithData:[NSJSONSerialization dataWithJSONObject:data options:0 error:nil] encoding:NSUTF8StringEncoding]);
- MOSecurityData *baseData = [MOSecurityData modelObjectWithDictionary:data[@"data"]];
-
- UIViewController *currentVC = [MOTools currentViewController];
- MOSetPasswordSMS *vc = [[MOSetPasswordSMS alloc] init];
- if(type == 1){
- //手机
- vc.vcType = MOEnterCodeSetPsw2Type;
- vc.code = baseData.mobileInfo.code;
- vc.num = baseData.mobileInfo.num;
- vc.psw2Type = 1;
- }
- else if (type == 2){
- //邮箱
- vc.vcType = MOEnterCodeSetPsw2Type;
- vc.email = baseData.email;
- vc.psw2Type = 2;
- }
- else if (type == 3){
- vc.vcType = MOEnterCodeSetPsw2Type;
- vc.isForgetPsw2 = YES;
- vc.code = baseData.mobileInfo.code;
- vc.num = baseData.mobileInfo.num;
- vc.psw2Type = 1;
- }
- else if (type == 4){
- vc.vcType = MOEnterCodeSetPsw2Type;
- vc.isForgetPsw2 = YES;
- //邮箱找回
- vc.email = baseData.email;
- vc.psw2Type = 2;
- }
-
- vc.hidesBottomBarWhenPushed = YES;
- [currentVC.navigationController pushViewController:vc animated:YES];
-
- }
- else{
- MOLogV(@"toGetTheUserSecurityInfoWithParams 接口报错了");
- kShowNetError(data)
- }
- }];
- }
- - (void)applicationDidEnterBackground:(UIApplication *)application {
- self.isFromBackground = YES;
- }
- - (BOOL)application:(UIApplication *)application
- openURL:(NSURL *)url
- sourceApplication:(NSString *)sourceApplication
- annotation:(id)annotation {
- #if !TARGET_IPHONE_SIMULATOR
- return [[FBSDKApplicationDelegate sharedInstance] application:application
- openURL:url
- sourceApplication:sourceApplication
- annotation:annotation];
- #else
- return NO;
- #endif
- }
- - (void)applicationDidBecomeActive:(UIApplication *)application {
- MOLogV(@"APP进入活动状态");
-
- NSString *token = [NSString stringWithFormat:@"%@",GetToken];
- if (token != nil && ![token isEqualToString:@"(null)"])
- {
- if(!self.isShowAdView){
- [AppDelegate toJudgeThePastboard];
- }
-
- [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
-
- [self performSelector:@selector(toRecoveryTheLive) withObject:nil afterDelay:1.0];
-
- [self performSelector:@selector(toCheckTheIMStatus) withObject:nil afterDelay:5.0];
-
- //是否从后台切换到前台
- if (self.isFromBackground) {
- self.isFromBackground = NO;
- SendNotification(@"kNotification_FromBackgroundStatus");
- }
- }
- #if !TARGET_IPHONE_SIMULATOR
- [FBSDKAppEvents.shared activateApp];
- #endif
- }
- - (void)toRecoveryTheLive{
- SendNotification(@"kNotification_RecoveryTheLive");//如果在直播间 通知一下服务器
- }
- - (void)toCheckTheIMStatus{
- SendNotification(@"kNotification_CheckTheIMStatus");
- }
- + (void)toJudgeThePastboard{
- if (@available(iOS 14.0, *)) {
- WEAKSELF
- NSSet *patterns = [[NSSet alloc] initWithObjects:UIPasteboardDetectionPatternProbableWebURL, nil];
- [[UIPasteboard generalPasteboard] detectPatternsForPatterns:patterns completionHandler:^(NSSet<UIPasteboardDetectionPattern> * _Nullable result, NSError * _Nullable error) {
- if (result && result.count) {
- // 当前剪切板中存在 URL
- [weakSelf toReadThePasteboard];
- }
- }];
- } else {
- // Fallback on earlier versions
- // 读取剪贴板内容
- [AppDelegate toReadThePasteboard];
- }
- }
- + (void)toReadThePasteboard{
-
- WEAKSELF
- kMainThreadBlock(^{
- UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
- NSString *pasteboardString = pasteboard.string;
- // 检查是否有内容,并且满足特定的 Scheme 格式
- if (pasteboardString.length > 0 && [pasteboardString hasPrefix:@"mimo://"]) {
- // 处理 Scheme 跳转
- NSURL *url = [NSURL URLWithString:pasteboardString];
- if ([[UIApplication sharedApplication] canOpenURL:url]) {
- [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
- }
-
- // 将剪贴板内容清空
- pasteboard.string = @"";
- }
-
- AppDelegate *app = (AppDelegate *) [UIApplication sharedApplication].delegate;
- app.isShowAdView = NO;
- })
- }
- /**
- 内购准备环境(在appDelegateAPP每次启动时调用)
- */
- - (void)parpareIAP {
-
- NSString *productID = MOCurrentIAProductID;
- if(productID.length == 0){
- productID = MODefaultProductID;
- }
-
- [[MOInAppPurchaseManager shareManager] queryByPuoductId:productID productInfoReuslts:^(SKProductsResponse * _Nonnull resp) {
- MOLogV(@"123123");
- }];
- }
- - (void)showFirstLaunchImage{
- MOBannerData *bannerData = (MOBannerData *)[[MODataCache sharedYYCache] objectForKey:kFirstLaunchInfo];
-
- if(bannerData.JumpList.count != 0){
- MOJumpList *jumpData = bannerData.JumpList.firstObject;
- NSString *bannerStr = jumpData.img;
- NSString *jumpStr = jumpData.jump;
-
- if(bannerStr.length != 0){
- [NSObject mo_makeLBLaunchImageAdView:^(MOLaunchImageAdView *imgAdView) {
- //设置广告的类型
- imgAdView.mo_getLBlaunchImageAdViewType(FullScreenAdType);
- //设置本地启动图片
- imgAdView.mo_imgUrl = bannerStr;
- //自定义跳过按钮
- imgAdView.mo_skipBtn.backgroundColor = [MOTools colorWithHexString:@"#000000" alpha:0.5];
- //各种点击事件的回调
- imgAdView.mo_clickBlock = ^(MOClickType type){
- switch (type) {
- case clickAdType:{
- MOLogV(@"点击广告回调");
- jumpData.isFirstAdWeb = YES;
- SendObjNotification(@"MOSquareListVC_H5Jump", jumpData);
- }
- break;
- case skipAdType:{
- MOLogV(@"点击跳过回调");
- SendNotification(@"kNotification_FirstShowNoti");
- [AppDelegate toJudgeThePastboard];
- }
- break;
- case overtimeAdType:{
- MOLogV(@"倒计时完成后的回调");
- SendNotification(@"kNotification_FirstShowNoti");
- [AppDelegate toJudgeThePastboard];
- }
- break;
- default:
- break;
- }
- };
- }];
- }
- else{
- SendNotification(@"kNotification_FirstShowNoti");
- [AppDelegate toJudgeThePastboard];
- }
- }
- else{
- SendNotification(@"kNotification_FirstShowNoti");
- [AppDelegate toJudgeThePastboard];
- }
- }
- #pragma mark - TIMPush
- - (int)businessID {
- //上一步控制台给的证书ID
- int kBusinessID = kTentPushID;
- return kBusinessID;
- }
- - (BOOL)onRemoteNotificationReceived:(NSString *)notice {
- // custom navigate
- return NO;
- }
- - (void)toRegisterTencentPush{
- [TIMPushManager addPushListener:self];
- [TIMPushManager disablePostNotificationInForeground:YES];//关闭 App 在前台时弹出通知栏
- }
- #pragma mark - TIMPushListener
- - (void)onNotificationClicked:(NSString *)ext {
- // 获取 ext 自定义跳转
- MOLogV(@"onNotificationClicked ext - %@",ext);
-
- NSDictionary *dict = [MOTools dictionaryWithJsonString:ext];
- NSString *jumpUrl = [MODataManager objectOrNilForKey:@"jump" fromDictionary:dict];
- [self toOpenTheSchemeUrlWith:jumpUrl];
- }
- - (void)onRecvPushMessage:(TIMPushMessage *)message{
- MOLogV(@"Received TIMPushMessage:");
- MOLogV(@"Title: %@", message.title);
- MOLogV(@"Content: %@", message.desc);
- MOLogV(@"Ext: %@", message.ext);
- MOLogV(@"Message ID: %@", message.messageID);
-
- kMainThreadBlock(^{
-
- MOEasemobEvent *baseModel = [MOEasemobEvent modelWithJSON:message.ext];
- //每日任务
- if([baseModel.event isEqualToString:@"task.dialog"]){
- TaskPublishEvent *publishInfo = [TaskPublishEvent modelWithJSON:baseModel.value];
-
- MOGetGiftView *view = [MOGetGiftView moGetGiftView];
- view.viewModel = publishInfo;
- [view showGetGiftView];
- }
- //钻石大赢家
- else if ([baseModel.event isEqualToString:@"activity.big.winner"]){
-
- UIViewController *currentVC = [MOTools currentViewController];
-
- ActivityBigWinnerPublishEvent *diaWinObject = [ActivityBigWinnerPublishEvent modelWithJSON:baseModel.value];
-
- MODrawOpenVC *vc = [[MODrawOpenVC alloc] init];
- vc.viewModel = diaWinObject;
- UINavigationController *newNav = [[UINavigationController alloc] initWithRootViewController:vc];
- newNav.modalPresentationStyle = UIModalPresentationOverFullScreen;
- [currentVC presentViewController:newNav animated:NO completion:nil];
-
- }
- })
- }
- #if DEBUG
- - (void)setupDoraemonKit {
- [[DoraemonManager shareInstance] install];
- }
- - (void)setupLogger {
- DDOSLogger *consoleLogger = [DDOSLogger sharedInstance];
- consoleLogger.logFormatter = [[MOLogFormatter alloc] init]; // 设置格式器
- [DDLog addLogger:consoleLogger];
-
- DDFileLogger *fileLogger = [[DDFileLogger alloc] init];
- fileLogger.logFormatter = [[MOLogFormatter alloc] init]; // 文件日志也使用相同格式
- fileLogger.rollingFrequency = 60 * 60 * 24; // 1 天轮转
- fileLogger.logFileManager.maximumNumberOfLogFiles = 7;
- fileLogger.maximumFileSize = 5 * 1024 * 1024;
- [DDLog addLogger:fileLogger];
- }
- - (void)setupNetworkMonitor {
- [NSURLProtocol registerClass:[NEHTTPEye class]];
- if ([[NSUserDefaults standardUserDefaults] objectForKey:@"NetworkEyeEnable"] == nil) {
- // 默认开启
- [NEHTTPEye setEnabled:YES];
- }
- }
- #endif
- @end
|