
- Removed YuMi/Library/ (138 MB, not tracked) - Removed YuMi/Resources/ (23 MB, not tracked) - Removed old version assets (566 files, not tracked) - Excluded Pods/, xcuserdata/ and other build artifacts - Clean repository optimized for company server deployment
127 lines
3.5 KiB
Objective-C
127 lines
3.5 KiB
Objective-C
//
|
||
// SocialShareManager.m
|
||
// YuMi
|
||
//
|
||
// Created by P on 2025/3/18.
|
||
//
|
||
|
||
#import "SocialShareManager.h"
|
||
#import "Api.h"
|
||
|
||
|
||
|
||
@implementation ShareItmeInfo
|
||
|
||
|
||
|
||
@end
|
||
|
||
@interface SocialShareManager()
|
||
|
||
@property (strong, nonatomic) NSString *scheme;
|
||
@property (strong, nonatomic) NSString *host;
|
||
@property (strong, nonatomic) NSMutableDictionary *queryParams;
|
||
@property (nonatomic, strong) ShareItmeInfo *shareItem;
|
||
|
||
@end
|
||
|
||
@implementation SocialShareManager
|
||
|
||
+ (instancetype)sharedManager {
|
||
static SocialShareManager *_sharedManager = nil;
|
||
static dispatch_once_t onceToken;
|
||
dispatch_once(&onceToken, ^{
|
||
_sharedManager = [[self alloc] init];
|
||
});
|
||
return _sharedManager;
|
||
}
|
||
|
||
- (void)handleURL:(NSURL *)url {
|
||
// 存储 URL 信息
|
||
self.scheme = url.scheme;
|
||
self.host = url.host;
|
||
self.queryParams = [NSMutableDictionary dictionary];
|
||
|
||
// 解析 query 参数
|
||
if (url.query) {
|
||
NSArray *queryComponents = [url.query componentsSeparatedByString:@"&"];
|
||
for (NSString *component in queryComponents) {
|
||
NSArray *pair = [component componentsSeparatedByString:@"="];
|
||
if (pair.count == 2) {
|
||
NSString *key = [pair[0] stringByRemovingPercentEncoding];
|
||
NSString *value = [pair[1] stringByRemovingPercentEncoding];
|
||
self.queryParams[key] = value;
|
||
}
|
||
}
|
||
}
|
||
|
||
// 获取具体的参数值
|
||
NSString *code = self.queryParams[@"code"];
|
||
if (![NSString isEmpty:code]) {
|
||
[self loadShareItem:code];
|
||
}
|
||
// if (self.tabBarViewController) {
|
||
// // 已登录,调用 API
|
||
// NSString *code = self.queryParams[@"code"];
|
||
// if (code) {
|
||
// [self callAPIWithCode:code];
|
||
// }
|
||
// } else {
|
||
// // 未登录,不做操作
|
||
// NSLog(@"User not logged in, do nothing");
|
||
// }
|
||
}
|
||
|
||
- (void)checkSocialShareItem {
|
||
if (self.shareItem) {
|
||
// 添加类型安全检查
|
||
if (![self.shareItem isKindOfClass:[ShareItmeInfo class]]) {
|
||
NSLog(@"警告:shareItem不是ShareItmeInfo类型,而是%@类型", NSStringFromClass([self.shareItem class]));
|
||
return;
|
||
}
|
||
|
||
if (self.handleJumpToRoom) {
|
||
self.handleJumpToRoom(self.shareItem);
|
||
[self cleanCache];
|
||
}
|
||
}
|
||
}
|
||
|
||
- (void)reset {
|
||
self.shareItem = nil;
|
||
self.handleJumpToRoom = nil;
|
||
}
|
||
|
||
- (void)loadShareItem:(NSString *)shareCode {
|
||
@kWeakify(self);
|
||
[Api shareGetInfo:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
|
||
@kStrongify(self);
|
||
if (code == 200) {
|
||
// 添加类型安全检查
|
||
id jsonData = data.data;
|
||
if ([jsonData isKindOfClass:[NSDictionary class]]) {
|
||
self.shareItem = [ShareItmeInfo modelWithJSON:jsonData];
|
||
|
||
// 确保shareItem是正确的类型
|
||
if (![self.shareItem isKindOfClass:[ShareItmeInfo class]]) {
|
||
NSLog(@"警告:解析后的shareItem不是ShareItmeInfo类型,而是%@类型", NSStringFromClass([self.shareItem class]));
|
||
return;
|
||
}
|
||
|
||
if (self.handleJumpToRoom) {
|
||
self.handleJumpToRoom(self.shareItem);
|
||
[self cleanCache];
|
||
}
|
||
} else {
|
||
NSLog(@"警告:API返回的data.data不是字典类型,而是%@类型", NSStringFromClass([jsonData class]));
|
||
}
|
||
}
|
||
} code:shareCode];
|
||
}
|
||
|
||
- (void)cleanCache {
|
||
self.shareItem = nil;
|
||
}
|
||
|
||
@end
|