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