101 lines
2.8 KiB
Objective-C
101 lines
2.8 KiB
Objective-C
//
|
|
// 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
|