增加换肤功能
20
QXLive/Other/AppDelegate+Login.h
Normal file
@@ -0,0 +1,20 @@
|
||||
//
|
||||
// AppDelegate+Login.h
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/5/8.
|
||||
//
|
||||
|
||||
#import "AppDelegate.h"
|
||||
#import "QXLocationManager.h"
|
||||
#import <AuthenticationServices/AuthenticationServices.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface AppDelegate (Login)<QXLocationManagerDelegate,ASAuthorizationControllerDelegate, ASAuthorizationControllerPresentationContextProviding,V2TIMSDKListener>
|
||||
-(void)configThirdPartLogin;
|
||||
-(void)tencentLogin;
|
||||
-(void)authorizationAppleID;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
272
QXLive/Other/AppDelegate+Login.m
Normal file
@@ -0,0 +1,272 @@
|
||||
//
|
||||
// AppDelegate+Login.m
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/5/8.
|
||||
//
|
||||
|
||||
#import "AppDelegate+Login.h"
|
||||
#import "ATAuthSDK/TXCommonHandler.h"
|
||||
#import "ATAuthSDK/PNSReturnCode.h"
|
||||
#import "TUILogin.h"
|
||||
//#import <RTCRoomEngine/TUIRoomEngine.h>
|
||||
#import <WXApi.h>
|
||||
#import "QXLoginNetwork.h"
|
||||
#import "QXMineNetwork.h"
|
||||
#import "QXMessageServices.h"
|
||||
#import "QXManagerMqtt.h"
|
||||
#import "OpenUDID.h"
|
||||
|
||||
@implementation AppDelegate (Login)
|
||||
-(void)configThirdPartLogin{
|
||||
BOOL result = [WXApi registerApp:WechatAppId universalLink:WechatUniversalLink];
|
||||
if (result) {
|
||||
NSLog(@"微信注册成功");
|
||||
}else{
|
||||
NSLog(@"微信注册失败");
|
||||
}
|
||||
[self ATAuthSDK];
|
||||
[self tencentLogin];
|
||||
}
|
||||
|
||||
- (void)ATAuthSDK {
|
||||
//设置SDK参数,app生命周期内调用一次即可
|
||||
[[TXCommonHandler sharedInstance] setAuthSDKInfo:AuthSDKKey complete:^(NSDictionary * _Nonnull resultDic) {
|
||||
if ([PNSCodeSuccess isEqualToString:[resultDic objectForKey:@"resultCode"]]) {
|
||||
//success
|
||||
[QXGlobal shareGlobal].canOneLogin = YES;
|
||||
}else{
|
||||
[QXGlobal shareGlobal].canOneLogin = NO;
|
||||
}
|
||||
}];
|
||||
}
|
||||
-(void)tencentLogin{
|
||||
if (![QXGlobal shareGlobal].isLogin) {
|
||||
return;
|
||||
}
|
||||
|
||||
NSString *userId = [QXGlobal shareGlobal].loginModel.user_id;
|
||||
NSString *tencent_im = [QXGlobal shareGlobal].loginModel.tencent_im;
|
||||
MJWeakSelf
|
||||
[TUILogin login:TencentIMID userID:[NSString stringWithFormat:@"u%@",userId] userSig:tencent_im succ:^{
|
||||
QXLOG(@"腾讯IM登录成功");
|
||||
[weakSelf getUnReadMessage];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:noticeTencentLogin object:nil];
|
||||
[TIMPushManager addPushListener:self];
|
||||
[[V2TIMManager sharedInstance] addConversationListener:self];
|
||||
[self configAppPush];
|
||||
[self getHomeMessage];
|
||||
[V2TIMManager.sharedInstance addIMSDKListener:self];
|
||||
} fail:^(int code, NSString *msg) {
|
||||
QXLOG(@"腾讯IM登录失败-code-%d--msg-%@",code,msg);
|
||||
}];
|
||||
// [TUIRoomEngine loginWithSDKAppId:TencentIMID userId:userId userSig:tencent_im onSuccess:^{
|
||||
// QXLOG(@"腾讯语音登录成功");
|
||||
// } onError:^(TUIError code, NSString * _Nonnull message) {
|
||||
// QXLOG(@"腾讯语音登录失败");
|
||||
// }];
|
||||
[[QXLocationManager shareManager] startLoction];
|
||||
[QXLocationManager shareManager].delegate = self;
|
||||
[self getUserInfo];
|
||||
NSString *clientId = [OpenUDID value];
|
||||
[[QXManagerMqtt sharedInstance] bindWithUserName:@"public" password:@"" cliendId:clientId isSSL:NO];
|
||||
}
|
||||
|
||||
-(void)onKickedOffline{
|
||||
MJWeakSelf
|
||||
QXBaseNavigationController *na = (QXBaseNavigationController *)KEYWINDOW.rootViewController;;
|
||||
UIAlertController *al = [UIAlertController alertControllerWithTitle:@"您的账号已在别处登录,请确认密码是否已经泄露" message:@"" preferredStyle:(UIAlertControllerStyleAlert)];
|
||||
[al addAction:[UIAlertAction actionWithTitle:@"好的" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction * _Nonnull action) {
|
||||
[weakSelf takeOff];
|
||||
}]];
|
||||
[na presentViewController:al animated:YES completion:nil];
|
||||
|
||||
}
|
||||
-(void)takeOff{
|
||||
if(QXGlobal.shareGlobal.roomId.length > 0){
|
||||
[[QXGlobal shareGlobal] quitRoomWithRoomId:QXGlobal.shareGlobal.roomId];
|
||||
}
|
||||
self.tabbarVC.selectedIndex = 3;
|
||||
QXBaseNavigationController *tabbarNa = (QXBaseNavigationController *)self.tabbarVC.selectedViewController;
|
||||
[tabbarNa popToRootViewControllerAnimated:NO];
|
||||
|
||||
QXBaseNavigationController *na = (QXBaseNavigationController *)KEYWINDOW.rootViewController;;
|
||||
[na popToRootViewControllerAnimated:YES];
|
||||
MJWeakSelf
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
[[QXGlobal shareGlobal] logOut];
|
||||
});
|
||||
}
|
||||
-(void)getUnReadMessage{
|
||||
MJWeakSelf
|
||||
[[V2TIMManager sharedInstance] getTotalUnreadMessageCount:^(UInt64 totalCount) {
|
||||
// 获取成功,totalCount 为所有会话的未读消息总数
|
||||
// 更新 UI 上的未读数
|
||||
weakSelf.tabbarVC.messageUnReadNumber = totalCount;
|
||||
} fail:^(int code, NSString *desc) {
|
||||
// 获取失败
|
||||
}];
|
||||
}
|
||||
-(void)getHomeMessage{
|
||||
MJWeakSelf
|
||||
[QXMessageServices getHomeMessageSuccessBlock:^(QXMessageModel * _Nonnull model) {
|
||||
weakSelf.tabbarVC.systemUnreadNumber = model.system_no_read_count.integerValue + model.announcement_read_count.integerValue;
|
||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||
|
||||
}];
|
||||
}
|
||||
-(void)configAppPush{
|
||||
// const int sdkAppId = 您的 sdkAppId;
|
||||
// static const NSString *appKey = @"客户端密钥";
|
||||
|
||||
[TIMPushManager registerPush:TencentIMID appKey:TencentIMSecret succ:^(NSData * _Nonnull deviceToken) {
|
||||
QXLOG(@"注册push成功");
|
||||
} fail:^(int code, NSString * _Nonnull desc) {
|
||||
QXLOG(@"注册push失败--%d--%@",code,desc);
|
||||
}];
|
||||
}
|
||||
-(void)getUserInfo{
|
||||
[QXMineNetwork getMineInfoSuccessBlock:^(QXUserModel * _Nonnull userModel) {
|
||||
|
||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||
|
||||
}];
|
||||
}
|
||||
-(void)locationSuccessWithCity:(NSString *)city province:(NSString *)province area:(NSString *)area address:(NSString *)address{
|
||||
[[QXLocationManager shareManager] stopLoction];
|
||||
NSString *ip = [NSString stringWithFormat:@"%@,%@,%@",province,city,area];
|
||||
[QXLoginNetwork updateUserIp:ip successBlock:^(id _Nonnull responseObject) {
|
||||
|
||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||
|
||||
}];
|
||||
}
|
||||
- (void)onTotalUnreadMessageCountChanged:(UInt64)totalUnreadCount {
|
||||
self.tabbarVC.messageUnReadNumber = totalUnreadCount;
|
||||
UInt64 unread = self.tabbarVC.systemUnreadNumber + totalUnreadCount;
|
||||
self.tabbarVC.unReadNumber = unread;
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:noticeUnreadNumberDidChanged object:[NSNumber numberWithLong:totalUnreadCount]];
|
||||
}
|
||||
|
||||
#pragma mark - 授权苹果ID
|
||||
|
||||
- (void)authorizationAppleID {
|
||||
|
||||
if (@available(iOS 13.0, *)) {
|
||||
|
||||
// 基于用户的Apple ID授权用户,生成用户授权请求的一种机制
|
||||
|
||||
ASAuthorizationAppleIDProvider * appleIDProvider = [[ASAuthorizationAppleIDProvider alloc] init];
|
||||
|
||||
// 创建新的AppleID 授权请求
|
||||
|
||||
ASAuthorizationAppleIDRequest * authAppleIDRequest = [appleIDProvider createRequest];
|
||||
|
||||
NSMutableArray <ASAuthorizationRequest *> * array = [NSMutableArray arrayWithCapacity:2];
|
||||
|
||||
if (authAppleIDRequest) {
|
||||
|
||||
[array addObject:authAppleIDRequest];
|
||||
|
||||
}
|
||||
|
||||
NSArray <ASAuthorizationRequest *> * requests = [array copy];
|
||||
|
||||
|
||||
|
||||
// 由ASAuthorizationAppleIDProvider创建的授权请求 管理授权请求的控制器
|
||||
|
||||
ASAuthorizationController * authorizationController = [[ASAuthorizationController alloc] initWithAuthorizationRequests:requests];
|
||||
|
||||
// 设置授权控制器通知授权请求的成功与失败的代理
|
||||
|
||||
authorizationController.delegate = self;
|
||||
|
||||
// 设置提供 展示上下文的代理,在这个上下文中 系统可以展示授权界面给用户
|
||||
|
||||
authorizationController.presentationContextProvider = self;
|
||||
|
||||
// 在控制器初始化期间启动授权流
|
||||
|
||||
[authorizationController performRequests];
|
||||
|
||||
} else {
|
||||
|
||||
// 处理不支持系统版本
|
||||
|
||||
NSLog(@"系统不支持Apple登录");
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
#pragma mark - ASAuthorizationControllerDelegate
|
||||
|
||||
// 授权成功
|
||||
|
||||
- (void)authorizationController:(ASAuthorizationController *)controller didCompleteWithAuthorization:(ASAuthorization *)authorization API_AVAILABLE(ios(13.0)) {
|
||||
|
||||
if ([authorization.credential isKindOfClass:[ASAuthorizationAppleIDCredential class]]) {
|
||||
|
||||
|
||||
|
||||
ASAuthorizationAppleIDCredential * credential = (ASAuthorizationAppleIDCredential *)authorization.credential;
|
||||
|
||||
// 苹果用户唯一标识符,该值在同一个开发者账号下的所有 App下是一样的,开发者可以用该唯一标识符与自己后台系统的账号体系绑定起来。
|
||||
|
||||
NSString * userID = credential.user;
|
||||
|
||||
// // 苹果用户信息 如果授权过,可能无法再次获取该信息
|
||||
|
||||
// NSPersonNameComponents * fullName = credential.fullName;
|
||||
|
||||
NSString * email = credential.email;
|
||||
|
||||
// // 服务器验证需要使用的参数
|
||||
// NSString * authorizationCode = [[NSString alloc] initWithData:credential.authorizationCode encoding:NSUTF8StringEncoding];
|
||||
|
||||
// NSString * identityToken = [[NSString alloc] initWithData:credential.identityToken encoding:NSUTF8StringEncoding];
|
||||
|
||||
|
||||
|
||||
NSString *tokenStr = [@"ios" stringByAppendingString:userID];
|
||||
QXLOG(@"apple-tokenStr%@",tokenStr);
|
||||
// [self rquestThirdLogin:tokenStr withEmail:email];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:noticeAppleLogin object:tokenStr];
|
||||
|
||||
} else if ([authorization.credential isKindOfClass:[ASPasswordCredential class]]) {
|
||||
|
||||
// 这个获取的是iCloud记录的账号密码,需要输入框支持iOS 12 记录账号密码的新特性,如果不支持,可以忽略
|
||||
|
||||
// 用户登录使用现有的密码凭证
|
||||
|
||||
ASPasswordCredential * passwordCredential = (ASPasswordCredential *)authorization.credential;
|
||||
|
||||
// 密码凭证对象的用户标识 用户的唯一标识
|
||||
|
||||
NSString * user = passwordCredential.user;
|
||||
|
||||
//把用户的唯一标识 传给后台 判断该用户是否绑定手机号,如果绑定了直接登录,如果没绑定跳绑定手机号页面
|
||||
|
||||
// 密码凭证对象的密码
|
||||
|
||||
NSString * password = passwordCredential.password;
|
||||
|
||||
NSLog(@"userID: %@", user);
|
||||
|
||||
NSLog(@"password: %@", password);
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#pragma mark - ASAuthorizationControllerPresentationContextProviding
|
||||
|
||||
- (ASPresentationAnchor)presentationAnchorForAuthorizationController:(ASAuthorizationController *)controller API_AVAILABLE(ios(13.0)) {
|
||||
|
||||
return self.window;
|
||||
|
||||
}
|
||||
|
||||
@end
|
||||
19
QXLive/Other/AppDelegate.h
Normal file
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// AppDelegate.h
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/4/24.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "QXTabbarController.h"
|
||||
#import <TIMPush/TIMPushManager.h>
|
||||
#import <ImSDK_Plus/ImSDK_Plus.h>
|
||||
@interface AppDelegate : UIResponder <UIApplicationDelegate,TIMPushListener,V2TIMConversationListener>
|
||||
|
||||
@property (nonatomic,strong)UIWindow *window;
|
||||
@property (nonatomic,assign)NSInteger allowRotate;
|
||||
@property (nonatomic,strong)QXTabbarController *tabbarVC;
|
||||
-(void)changeRootViewControllerIsTabbar;
|
||||
@end
|
||||
|
||||
239
QXLive/Other/AppDelegate.m
Normal file
@@ -0,0 +1,239 @@
|
||||
//
|
||||
// AppDelegate.m
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/4/24.
|
||||
//
|
||||
|
||||
#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"
|
||||
#if DEBUG
|
||||
#import <LLDebugTool.h>
|
||||
#endif
|
||||
@interface AppDelegate ()<WXApiDelegate>
|
||||
|
||||
@end
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
|
||||
// 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:@"38d154fc5f"];
|
||||
SDImageWebPCoder *webPCoder = [SDImageWebPCoder sharedCoder];
|
||||
[[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{
|
||||
if ([QXGlobal shareGlobal].isLogin && [[QXGlobal shareGlobal].loginModel.sex isEqualToString:@"0"]) {
|
||||
QXFillUserInfoViewController *vc = [[QXFillUserInfoViewController alloc] init];
|
||||
self.window.rootViewController = vc;
|
||||
}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:@"wxapiPaySuccess" object:nil userInfo: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];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// 设备转向
|
||||
- (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
|
||||
116
QXLive/Other/Assets.xcassets/AppIcon.appiconset/Contents.json
Normal file
@@ -0,0 +1,116 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "iPhoneNotification_20pt@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "iPhoneNotification_20pt@3x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "iPhoneSpootlight5_29pt@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "iPhoneSpootlight5_29pt@3x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "iPhoneSpootlight7_40pt@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "iPhoneSpootlight7_40pt@3x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "iPhoneApp_60pt@2x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "2x",
|
||||
"size" : "60x60"
|
||||
},
|
||||
{
|
||||
"filename" : "iPhoneApp_60pt@3x.png",
|
||||
"idiom" : "iphone",
|
||||
"scale" : "3x",
|
||||
"size" : "60x60"
|
||||
},
|
||||
{
|
||||
"filename" : "iPadNotification_20pt.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "iPadNotification_20pt@2x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "20x20"
|
||||
},
|
||||
{
|
||||
"filename" : "iPadSpootlight5_29pt.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "iPadSpootlight5_29pt@2x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "29x29"
|
||||
},
|
||||
{
|
||||
"filename" : "iPadSpootlight7_40pt.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "iPadSpootlight7_40pt@2x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "40x40"
|
||||
},
|
||||
{
|
||||
"filename" : "iPadApp_76pt.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "1x",
|
||||
"size" : "76x76"
|
||||
},
|
||||
{
|
||||
"filename" : "iPadApp_76pt@2x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "76x76"
|
||||
},
|
||||
{
|
||||
"filename" : "iPadProApp_83.5pt@2x.png",
|
||||
"idiom" : "ipad",
|
||||
"scale" : "2x",
|
||||
"size" : "83.5x83.5"
|
||||
},
|
||||
{
|
||||
"filename" : "store_1024pt.png",
|
||||
"idiom" : "ios-marketing",
|
||||
"scale" : "1x",
|
||||
"size" : "1024x1024"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/AppIcon.appiconset/iPadApp_76pt.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 991 B |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 9.5 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 5.9 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 9.5 KiB |
|
After Width: | Height: | Size: 19 KiB |
BIN
QXLive/Other/Assets.xcassets/AppIcon.appiconset/store_1024pt.png
Normal file
|
After Width: | Height: | Size: 520 KiB |
6
QXLive/Other/Assets.xcassets/Contents.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
21
QXLive/Other/Assets.xcassets/app_bg.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Group 7242@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/app_bg.imageset/Group 7242@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 169 KiB |
6
QXLive/Other/Assets.xcassets/dynamic/Contents.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/dynamic/arrow_bottom.imageset/Arrow Right@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 316 B |
BIN
QXLive/Other/Assets.xcassets/dynamic/arrow_bottom.imageset/Arrow Right@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 637 B |
22
QXLive/Other/Assets.xcassets/dynamic/arrow_bottom.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Arrow Right@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "Arrow Right@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
22
QXLive/Other/Assets.xcassets/dynamic/dynamic_comment.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Frame 1325@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "Frame 1325@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/dynamic/dynamic_comment.imageset/Frame 1325@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
QXLive/Other/Assets.xcassets/dynamic/dynamic_comment.imageset/Frame 1325@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
22
QXLive/Other/Assets.xcassets/dynamic/dynamic_copy_link.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Group 6931@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "Group 6931@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/dynamic/dynamic_copy_link.imageset/Group 6931@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
QXLive/Other/Assets.xcassets/dynamic/dynamic_copy_link.imageset/Group 6931@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 6.0 KiB |
22
QXLive/Other/Assets.xcassets/dynamic/dynamic_delete.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Frame 1321316080@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "Frame 1321316080@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/dynamic/dynamic_delete.imageset/Frame 1321316080@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
QXLive/Other/Assets.xcassets/dynamic/dynamic_delete.imageset/Frame 1321316080@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 5.1 KiB |
22
QXLive/Other/Assets.xcassets/dynamic/dynamic_follow.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Frame 895@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "Frame 895@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/dynamic/dynamic_follow.imageset/Frame 895@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
QXLive/Other/Assets.xcassets/dynamic/dynamic_follow.imageset/Frame 895@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 6.1 KiB |
22
QXLive/Other/Assets.xcassets/dynamic/dynamic_give.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Frame@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "Frame@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/dynamic/dynamic_give.imageset/Frame@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
QXLive/Other/Assets.xcassets/dynamic/dynamic_give.imageset/Frame@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
22
QXLive/Other/Assets.xcassets/dynamic/dynamic_like.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Love@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "Love@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/dynamic/dynamic_like.imageset/Love@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
QXLive/Other/Assets.xcassets/dynamic/dynamic_like.imageset/Love@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
22
QXLive/Other/Assets.xcassets/dynamic/dynamic_like_sel.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Love@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "Love@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/dynamic/dynamic_like_sel.imageset/Love@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 966 B |
BIN
QXLive/Other/Assets.xcassets/dynamic/dynamic_like_sel.imageset/Love@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
22
QXLive/Other/Assets.xcassets/dynamic/dynamic_more.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "More Horizontal@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "More Horizontal@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/dynamic/dynamic_more.imageset/More Horizontal@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 486 B |
BIN
QXLive/Other/Assets.xcassets/dynamic/dynamic_more.imageset/More Horizontal@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 870 B |
22
QXLive/Other/Assets.xcassets/dynamic/dynamic_notic.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Notification@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "Notification@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/dynamic/dynamic_notic.imageset/Notification@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
QXLive/Other/Assets.xcassets/dynamic/dynamic_notic.imageset/Notification@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
22
QXLive/Other/Assets.xcassets/dynamic/dynamic_report.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Group 115@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "Group 115@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/dynamic/dynamic_report.imageset/Group 115@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
QXLive/Other/Assets.xcassets/dynamic/dynamic_report.imageset/Group 115@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 5.9 KiB |
22
QXLive/Other/Assets.xcassets/dynamic/dynamic_topic_tag.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Group 6930@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "Group 6930@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/dynamic/dynamic_topic_tag.imageset/Group 6930@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
QXLive/Other/Assets.xcassets/dynamic/dynamic_topic_tag.imageset/Group 6930@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
21
QXLive/Other/Assets.xcassets/dynamic/expansion_bg.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Group 7831 (1).png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/dynamic/expansion_bg.imageset/Group 7831 (1).png
vendored
Normal file
|
After Width: | Height: | Size: 280 KiB |
22
QXLive/Other/Assets.xcassets/dynamic/expansion_call.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Group 7235@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "Group 7235@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/dynamic/expansion_call.imageset/Group 7235@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
QXLive/Other/Assets.xcassets/dynamic/expansion_call.imageset/Group 7235@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 23 KiB |
22
QXLive/Other/Assets.xcassets/dynamic/expansion_follow.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Group 7236@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "Group 7236@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/dynamic/expansion_follow.imageset/Group 7236@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
QXLive/Other/Assets.xcassets/dynamic/expansion_follow.imageset/Group 7236@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 22 KiB |
21
QXLive/Other/Assets.xcassets/dynamic/fengche.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "fengche@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/dynamic/fengche.imageset/fengche@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
22
QXLive/Other/Assets.xcassets/dynamic/publish_icon.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Frame@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "Frame@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/dynamic/publish_icon.imageset/Frame@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
QXLive/Other/Assets.xcassets/dynamic/publish_icon.imageset/Frame@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
22
QXLive/Other/Assets.xcassets/dynamic/ranking_first.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Mask group@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "Mask group@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/dynamic/ranking_first.imageset/Mask group@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
QXLive/Other/Assets.xcassets/dynamic/ranking_first.imageset/Mask group@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
22
QXLive/Other/Assets.xcassets/dynamic/ranking_second.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Mask group@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "Mask group@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/dynamic/ranking_second.imageset/Mask group@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
QXLive/Other/Assets.xcassets/dynamic/ranking_second.imageset/Mask group@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
22
QXLive/Other/Assets.xcassets/dynamic/ranking_third.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Mask group@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "Mask group@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/dynamic/ranking_third.imageset/Mask group@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
QXLive/Other/Assets.xcassets/dynamic/ranking_third.imageset/Mask group@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
6
QXLive/Other/Assets.xcassets/home/Contents.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/home/app_star.imageset/2321@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 30 KiB |
21
QXLive/Other/Assets.xcassets/home/app_star.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "2321@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
22
QXLive/Other/Assets.xcassets/home/first_recharge_icon.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "first_recharge_icon@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "first_recharge_icon@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/home/first_recharge_icon.imageset/first_recharge_icon@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
QXLive/Other/Assets.xcassets/home/first_recharge_icon.imageset/first_recharge_icon@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 49 KiB |
22
QXLive/Other/Assets.xcassets/home/home_goto_room.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Frame 12@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "Frame 12@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/home/home_goto_room.imageset/Frame 12@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
BIN
QXLive/Other/Assets.xcassets/home/home_goto_room.imageset/Frame 12@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 7.2 KiB |
22
QXLive/Other/Assets.xcassets/home/home_notice.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Group 28@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "Group 28@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/home/home_notice.imageset/Group 28@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
QXLive/Other/Assets.xcassets/home/home_notice.imageset/Group 28@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
22
QXLive/Other/Assets.xcassets/home/home_ranking.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "Group 6871@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "Group 6871@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/home/home_ranking.imageset/Group 6871@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
QXLive/Other/Assets.xcassets/home/home_ranking.imageset/Group 6871@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 2.9 KiB |