TUIAIDenoiseSignatureManager.m 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. // Created by Tencent on 2023/06/09.
  2. // Copyright © 2023 Tencent. All rights reserved.
  3. //
  4. // TUIAIDenoiseSignatureManager.m
  5. // TUIChat
  6. //
  7. #import "TUIAIDenoiseSignatureManager.h"
  8. #import <ImSDK_Plus/ImSDK_Plus.h>
  9. static TUIAIDenoiseSignatureManager *gSharedInstance = nil;
  10. static NSString *const kAPIKey = @"getAIDenoiseSignature";
  11. static NSString *const kSignatureKey = @"signature";
  12. static NSString *const kExpiredTimeKey = @"expired_time";
  13. @interface TUIAIDenoiseSignatureManager ()
  14. @property(nonatomic, copy, readwrite) NSString *signature;
  15. @property(nonatomic, assign) NSTimeInterval expiredTime;
  16. @end
  17. @implementation TUIAIDenoiseSignatureManager
  18. + (instancetype)sharedInstance {
  19. static dispatch_once_t once_token;
  20. dispatch_once(&once_token, ^{
  21. gSharedInstance = [[TUIAIDenoiseSignatureManager alloc] init];
  22. });
  23. return gSharedInstance;
  24. }
  25. - (void)updateSignature {
  26. NSTimeInterval currentTime = [[NSDate date] timeIntervalSince1970];
  27. if (currentTime < self.expiredTime) {
  28. return;
  29. }
  30. [[V2TIMManager sharedInstance] callExperimentalAPI:kAPIKey
  31. param:nil
  32. succ:^(NSObject *result) {
  33. if (result == nil || ![result isKindOfClass:NSDictionary.class]) {
  34. return;
  35. }
  36. NSDictionary *dict = (NSDictionary *)result;
  37. if (dict[kSignatureKey] != nil && [dict[kSignatureKey] isKindOfClass:NSString.class]) {
  38. self.signature = dict[kSignatureKey];
  39. }
  40. if (dict[kExpiredTimeKey] != nil && [dict[kExpiredTimeKey] isKindOfClass:NSNumber.class]) {
  41. self.expiredTime = [dict[kExpiredTimeKey] doubleValue];
  42. }
  43. }
  44. fail:^(int code, NSString *desc) {
  45. NSLog(@"getAIDenoiseSignature failed, code: %d, desc: %@", code, desc);
  46. }];
  47. }
  48. - (NSString *)signature {
  49. [self updateSignature];
  50. return _signature;
  51. }
  52. @end