Files
midi_ios/QXLive/Other/AppDelegate.m
2025-09-24 09:38:47 +08:00

301 lines
11 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// AppDelegate.m
// QXLive
//
// Created by 启星 on 2025/4/24.
//
/**
APP准备启动
*
* _oo0oo_
* o8888888o
* 88" . "88
* (| -_- |)
* 0\ = /0
* ___/`---'\___
* .' \\| |// '.
* / \\||| : |||// \
* / _||||| -卍-|||||- \
* | | \\\ - /// | |
* | \_| ''\---/'' |_/ |
* \ .-\__ '-' ___/-. /
* ___'. .' /--.--\ `. .'___
* ."" '< `.___\_<|>_/___.' >' "".
* | | : `- \`.;`\ _ /`;.`/ - ` : | |
* \ \ `_. \_ __\ /__ _/ .-` / /
*=====`-.____`.___ \_____/___.-`___.-'=====
* `=---='
*
* 佛祖保佑 永无BUG
* 佛曰:
* 写字楼里写字间,写字间里程序员;
* 程序人员写程序,又拿程序换酒钱。
* 酒醒只在网上坐,酒醉还来网下眠;
* 酒醉酒醒日复日,网上网下年复年。
* 但愿老死电脑间,不愿鞠躬老板前;
* 奔驰宝马贵者趣,公交自行程序员。
* 别人笑我忒疯癫,我笑自己命太贱;
* 不见满街漂亮妹,哪个归得程序员?
*/
#import "AppDelegate.h"
#import "AppDelegate+Login.h"
#import "QXFillUserInfoViewController.h"
#import "AvoidCrash.h"
#import <WXApi.h>
#import <Bugly/Bugly.h>
#import <AlipaySDK/AlipaySDK.h>
#import <TIMPush/TIMPushManager.h>
#import <SDWebImageWebPCoder/SDWebImageWebPCoder.h>
#import "QXAppStartViewController.h"
#import "QXGiftPlayerManager.h"
#import "IQKeyboardManager.h"
#import "QXChirldViewController.h"
#if DEBUG
#import <LLDebugTool.h>
#endif
@interface AppDelegate ()<WXApiDelegate>
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSArray *array = [UIFont familyNames];
for (NSString * familyname in array) {
NSLog(@"Family:%@" ,familyname);
// NSArray *fontnames = [UIFont fontNamesForFamilyName:familyname];
// for (NSString *name in fontnames) {
// NSLog(@"Font Name:%@" ,name);
// }
}
// Override point for customization after application launch.
[QXConfig defaultConfig];
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor whiteColor];
QXAppStartViewController *startVC = [[QXAppStartViewController alloc] init];
self.window.rootViewController = startVC;
[Bugly startWithAppId:@"65efebcd8f"];
SDImageWebPCoder *webPCoder = [SDImageWebPCoder sharedCoder];
[IQKeyboardManager sharedManager].enable = NO;
[[SDImageCodersManager sharedManager] addCoder:webPCoder];
[self configThirdPartLogin];
#if DEBUG
[[LLDebugTool sharedTool] startWorking];
#endif
[self crash];
[self.window makeKeyAndVisible];
return YES;
}
-(void)crash{
NSArray *noneSelClassStrings = @[
@"NSNull",
@"NSNumber",
@"NSString",
@"NSDictionary",
@"NSArray"
];
[AvoidCrash setupNoneSelClassStringsArr:noneSelClassStrings];
[AvoidCrash becomeEffective];
}
-(void)changeRootViewControllerIsTabbar{
NSString *localPassword = [[NSUserDefaults standardUserDefaults] objectForKey:kChirldLocalPassword];
if ([QXGlobal shareGlobal].isLogin && [[QXGlobal shareGlobal].loginModel.sex isEqualToString:@"0"]) {
QXFillUserInfoViewController *vc = [[QXFillUserInfoViewController alloc] init];
self.window.rootViewController = vc;
}else if([localPassword isExist]){
QXChirldViewController*vc = [[QXChirldViewController alloc] init];
vc.isRoot = YES;
QXBaseNavigationController *na = [[QXBaseNavigationController alloc] initWithRootViewController:vc];
self.window.rootViewController = na;
}else{
self.tabbarVC = [[QXTabbarController alloc] init];
QXBaseNavigationController *na = [[QXBaseNavigationController alloc] initWithRootViewController:self.tabbarVC];
na.navigationBarHidden = YES;
self.window.rootViewController = na;
}
}
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler{
BOOL result =[WXApi handleOpenUniversalLink:userActivity delegate:self];
return result;
}
// NOTE: 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options{
if ([url.host isEqualToString:@"safepay"]) {
// 支付跳转支付宝钱包进行支付,处理支付结果
[[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
NSLog(@"result = %@",resultDic);
NSString *result = [NSString stringWithFormat:@"%@",resultDic[@"memo"]];
NSString *resultStatus = [NSString stringWithFormat:@"%@",resultDic[@"resultStatus"]];
if (resultStatus.intValue == 9000) {
showToast(@"支付成功");
[[NSNotificationCenter defaultCenter] postNotificationName:noticeAlipayResult object:nil];
}else{
showToast(result);
}
}];
// // 授权跳转支付宝钱包进行支付,处理支付结果
// [[AlipaySDK defaultService] processAuthResult:url standbyCallback:^(NSDictionary *resultDic) {
// NSLog(@"result = %@",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(@"授权结果 authCode = %@", authCode?:@"");
// [[NSNotificationCenter defaultCenter]postNotificationName:@"RELOADBLANCE" object:nil];
// }];
[[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic) {
QXLOG(@"auth = %@",resultDic);
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(@"授权结果 authCode = %@", authCode?:@"");
}];
}else if ([url.host isEqualToString:@"pay"]){
return [WXApi handleOpenURL:url delegate:self];
}else if ([url.host isEqualToString:@"oauth"]){
return [WXApi handleOpenURL:url delegate:self];
}else{
return [WXApi handleOpenURL:url delegate:self];
}
return YES;
}
//- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
//{
// if ([url.host isEqualToString:@"safepay"]) {
// // 支付跳转支付宝钱包进行支付,处理支付结果
// [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
// NSLog(@"result = %@",resultDic);
// }];
//
// // 授权跳转支付宝钱包进行支付,处理支付结果
// [[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic) {
// NSLog(@"result = %@",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(@"授权结果 authCode = %@", authCode?:@"");
// }];
// }
// return YES;
//}
-(void)onResp:(BaseResp *)resp
{
if ([resp isKindOfClass:[PayResp class]])
{
PayResp *response = (PayResp *)resp;
switch (response.errCode)
{
case WXSuccess:
//服务器端查询支付通知或查询API返回的结果再提示成功
NSLog(@"支付成功");
showToast(QXText(@"支付成功"));
[[NSNotificationCenter defaultCenter] postNotificationName:noticeAlipayResult object:nil];
break;
case WXErrCodeUserCancel:
//服务器端查询支付通知或查询API返回的结果再提示成功
//交易取消
showToast(QXText(@"取消支付"));
break;
default:
NSLog(@"支付失败, retcode=%d",resp.errCode);
showToast(QXText(@"支付失败"));
break;
}
}else if([resp isKindOfClass:[SendAuthResp class]]){
SendAuthResp *response = (SendAuthResp *)resp;
[[NSNotificationCenter defaultCenter] postNotificationName:noticeWeChatLogin object:response];
}
}
-(void)applicationDidEnterBackground:(UIApplication *)application{
if ([QXGlobal.shareGlobal.roomId isExist]) {
[[QXGiftPlayerManager shareManager] stopPlay];
}
}
-(void)applicationWillEnterForeground:(UIApplication *)application{
if ([QXGlobal.shareGlobal.roomId isExist] && (QXGlobal.shareGlobal.miniView==nil)) {
[[QXGiftPlayerManager shareManager] startPlay];
}
}
/// 设备转向
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
// ZFInterfaceOrientationMask orientationMask = [ZFLandscapeRotationManager supportedInterfaceOrientationsForWindow:window];
// if (orientationMask != ZFInterfaceOrientationMaskUnknow) {
// return (UIInterfaceOrientationMask)orientationMask;
// }
/// 这里是非播放器VC支持的方向
if (_allowRotate == 1) {
return UIInterfaceOrientationMaskLandscapeRight;
}else{
return UIInterfaceOrientationMaskPortrait;
}
}
// 返回是否支持设备自动旋转
- (BOOL)shouldAutorotate
{
if (_allowRotate == 1) {
return YES;
}
return NO;
}
#pragma mark - TIMPush
#pragma mark - TIMPush
- (int)businessID {
//上一步控制台给的证书ID如 1234567
return AppPushId;
}
//- (NSString *)applicationGroupID {
// //AppGroup ID
// return kTIMPushAppGroupKey;
//}
- (BOOL)onRemoteNotificationReceived:(NSString *)notice {
// custom navigate
return NO;
}
#pragma mark - TIMPushListener
- (void)onNotificationClicked:(NSString *)ext {
// 获取 ext 自定义跳转
}
@end