增加换肤功能

This commit is contained in:
启星
2025-08-14 10:07:49 +08:00
parent f6964c1e89
commit 4f9318d98e
8789 changed files with 978530 additions and 2 deletions

View 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

View 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 {
//SDKapp
[[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]]) {
// iCloudiOS 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

View 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
View 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

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 991 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 520 KiB

View File

@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

View File

@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

View 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
}
}

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 966 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 486 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 870 B

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View 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
}
}

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View 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
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Some files were not shown because too many files have changed in this diff Show More