OfflinePushExtInfo.m 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. //
  2. // OfflinePushExtInfo.m
  3. // TUICore
  4. //
  5. // Created by cologne on 2024/3/19.
  6. // Copyright © 2024 Tencent. All rights reserved.
  7. #import "OfflinePushExtInfo.h"
  8. @implementation OfflinePushExtInfo
  9. + (nonnull OfflinePushExtInfo *)createWithExtString:(nonnull NSString *)ext {
  10. if (ext == nil || ![ext isKindOfClass:NSString.class] || ext.length == 0) {
  11. return nil;
  12. }
  13. NSDictionary *extDict = nil;
  14. BOOL flag = [self.class convertJsonString:ext toObject:&extDict];
  15. if (!flag || extDict == nil ||
  16. ![extDict isKindOfClass:NSDictionary.class] ||
  17. ![extDict.allKeys containsObject:@"entity"]) {
  18. return nil;
  19. }
  20. OfflinePushExtInfo * extInfo = [[OfflinePushExtInfo alloc] init];
  21. OfflinePushExtBusinessInfo * entity = extInfo.entity;
  22. OfflinePushExtConfigInfo * timPushFeatures = extInfo.timPushFeatures;
  23. NSDictionary *entityDic = extDict[@"entity"];
  24. if (entityDic) {
  25. [entity configWithEntityDic:entityDic];
  26. }
  27. NSDictionary *featuresDic = extDict[@"timPushFeatures"];
  28. if (featuresDic) {
  29. [timPushFeatures configWithTIMPushFeaturesDic:featuresDic];
  30. }
  31. return extInfo;
  32. }
  33. - (OfflinePushExtBusinessInfo *)entity {
  34. if (!_entity) {
  35. _entity = [[OfflinePushExtBusinessInfo alloc] init];
  36. }
  37. return _entity;
  38. }
  39. - (OfflinePushExtConfigInfo *)timPushFeatures {
  40. if (!_timPushFeatures) {
  41. _timPushFeatures = [[OfflinePushExtConfigInfo alloc] init];
  42. }
  43. return _timPushFeatures;
  44. }
  45. - (NSDictionary *)toReportData {
  46. NSMutableDictionary *extDic = [NSMutableDictionary dictionary];
  47. NSDictionary *entityDict = nil;
  48. if (_entity) {
  49. entityDict = [_entity toReportData];
  50. [extDic setValue:entityDict forKey:@"entity"];
  51. }
  52. NSDictionary *timPushFeaturesDict = nil;
  53. if (_timPushFeatures) {
  54. timPushFeaturesDict = [_timPushFeatures toReportData];
  55. [extDic setValue:timPushFeaturesDict forKey:@"timPushFeatures"];
  56. }
  57. if (extDic) {
  58. return extDic;
  59. }
  60. return nil;
  61. }
  62. - (NSString *)toReportExtString {
  63. NSDictionary * extDic = [self toReportData];
  64. NSData *data = [NSJSONSerialization dataWithJSONObject:extDic options:NSJSONWritingPrettyPrinted error:nil];
  65. NSString *ext = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
  66. return ext;
  67. }
  68. + (BOOL)convertJsonString:(NSString *)jsonString toObject:(NSObject **)object {
  69. if (jsonString == nil) {
  70. return NO;
  71. }
  72. NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
  73. NSError *err = nil;
  74. *object = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&err];
  75. if (err) {
  76. NSLog(@"json decode failed, error:%@, json:%@", err, jsonString);
  77. }
  78. return (err == nil);
  79. }
  80. @end