Files
real-e-party-iOS/YuMi/Tools/Share/SocialShareManager.m
edwinQQQ a35a711be6 chore: Initial clean commit
- 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
2025-10-09 16:19:14 +08:00

127 lines
3.5 KiB
Objective-C
Raw Permalink 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.

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