增加换肤功能
This commit is contained in:
100
TUIKit/TUICore/OfflinePushExtInfo.m
Normal file
100
TUIKit/TUICore/OfflinePushExtInfo.m
Normal file
@@ -0,0 +1,100 @@
|
||||
//
|
||||
// OfflinePushExtInfo.m
|
||||
// TUICore
|
||||
//
|
||||
// Created by cologne on 2024/3/19.
|
||||
// Copyright © 2024 Tencent. All rights reserved.
|
||||
|
||||
#import "OfflinePushExtInfo.h"
|
||||
|
||||
@implementation OfflinePushExtInfo
|
||||
|
||||
+ (nonnull OfflinePushExtInfo *)createWithExtString:(nonnull NSString *)ext {
|
||||
if (ext == nil || ![ext isKindOfClass:NSString.class] || ext.length == 0) {
|
||||
return nil;
|
||||
}
|
||||
|
||||
NSDictionary *extDict = nil;
|
||||
BOOL flag = [self.class convertJsonString:ext toObject:&extDict];
|
||||
if (!flag || extDict == nil ||
|
||||
![extDict isKindOfClass:NSDictionary.class] ||
|
||||
![extDict.allKeys containsObject:@"entity"]) {
|
||||
return nil;
|
||||
}
|
||||
|
||||
OfflinePushExtInfo * extInfo = [[OfflinePushExtInfo alloc] init];
|
||||
OfflinePushExtBusinessInfo * entity = extInfo.entity;
|
||||
OfflinePushExtConfigInfo * timPushFeatures = extInfo.timPushFeatures;
|
||||
|
||||
NSDictionary *entityDic = extDict[@"entity"];
|
||||
if (entityDic) {
|
||||
[entity configWithEntityDic:entityDic];
|
||||
}
|
||||
NSDictionary *featuresDic = extDict[@"timPushFeatures"];
|
||||
|
||||
if (featuresDic) {
|
||||
[timPushFeatures configWithTIMPushFeaturesDic:featuresDic];
|
||||
}
|
||||
|
||||
return extInfo;
|
||||
}
|
||||
|
||||
|
||||
- (OfflinePushExtBusinessInfo *)entity {
|
||||
if (!_entity) {
|
||||
_entity = [[OfflinePushExtBusinessInfo alloc] init];
|
||||
}
|
||||
return _entity;
|
||||
}
|
||||
|
||||
|
||||
- (OfflinePushExtConfigInfo *)timPushFeatures {
|
||||
if (!_timPushFeatures) {
|
||||
_timPushFeatures = [[OfflinePushExtConfigInfo alloc] init];
|
||||
}
|
||||
return _timPushFeatures;
|
||||
}
|
||||
|
||||
- (NSDictionary *)toReportData {
|
||||
NSMutableDictionary *extDic = [NSMutableDictionary dictionary];
|
||||
NSDictionary *entityDict = nil;
|
||||
if (_entity) {
|
||||
entityDict = [_entity toReportData];
|
||||
[extDic setValue:entityDict forKey:@"entity"];
|
||||
}
|
||||
|
||||
NSDictionary *timPushFeaturesDict = nil;
|
||||
if (_timPushFeatures) {
|
||||
timPushFeaturesDict = [_timPushFeatures toReportData];
|
||||
[extDic setValue:timPushFeaturesDict forKey:@"timPushFeatures"];
|
||||
}
|
||||
|
||||
if (extDic) {
|
||||
return extDic;
|
||||
}
|
||||
|
||||
return nil;
|
||||
}
|
||||
|
||||
- (NSString *)toReportExtString {
|
||||
NSDictionary * extDic = [self toReportData];
|
||||
NSData *data = [NSJSONSerialization dataWithJSONObject:extDic options:NSJSONWritingPrettyPrinted error:nil];
|
||||
NSString *ext = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
||||
return ext;
|
||||
}
|
||||
|
||||
|
||||
|
||||
+ (BOOL)convertJsonString:(NSString *)jsonString toObject:(NSObject **)object {
|
||||
if (jsonString == nil) {
|
||||
return NO;
|
||||
}
|
||||
NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
|
||||
NSError *err = nil;
|
||||
*object = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&err];
|
||||
if (err) {
|
||||
NSLog(@"json decode failed, error:%@, json:%@", err, jsonString);
|
||||
}
|
||||
return (err == nil);
|
||||
}
|
||||
@end
|
||||
Reference in New Issue
Block a user