appToTVManager.m 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. //
  2. // appToTVManager.m
  3. // 隐私保护
  4. //
  5. // Created by xd h on 2025/3/18.
  6. //
  7. #import "appToTVManager.h"
  8. @interface appToTVManager ()
  9. @property(nonatomic,strong)NSMutableArray *waitingArr;//等待安装的app列表
  10. @property (nonatomic, strong) NSArray *installingArr;//正在安装的APP列表
  11. @property (nonatomic, assign) NSInteger installindex;//正在安装的顺序
  12. @end
  13. @implementation appToTVManager
  14. + (instancetype)shareInstance {
  15. static appToTVManager *_instance;
  16. static dispatch_once_t onceToken;
  17. dispatch_once(&onceToken, ^{
  18. _instance = [[self alloc] init];
  19. });
  20. return _instance;
  21. }
  22. - (void)addAppToTVByList:(NSArray*)list
  23. {
  24. if(!list || list.count==0){
  25. return;
  26. }
  27. //第一次进入 安装中 待安装的都没有
  28. if(!_installingArr && !_waitingArr){
  29. _installingArr = [NSArray arrayWithArray:list];
  30. _installindex = 0;
  31. [self beginToTVFun];
  32. }
  33. else{
  34. NSMutableArray *installList = [NSMutableArray new];
  35. if(!_waitingArr){
  36. _waitingArr = [NSMutableArray array];
  37. }
  38. //排重
  39. for (getInstalledAppModel*model in list) {
  40. BOOL canInstall = YES;
  41. for (getInstalledAppModel*waitingModel in _waitingArr) {
  42. if([model.path isEqualToString:waitingModel.path]){
  43. canInstall = NO;
  44. break;
  45. }
  46. }
  47. if(canInstall){
  48. for (getInstalledAppModel*installModel in _installingArr) {
  49. if([model.path isEqualToString:installModel.path]){
  50. canInstall = NO;
  51. break;
  52. }
  53. }
  54. }
  55. if (canInstall) {
  56. [installList addObject:model];
  57. }
  58. }
  59. [_waitingArr addObjectsFromArray:installList];
  60. }
  61. }
  62. - (void)beginToTVFun
  63. {
  64. if (_installindex >= _installingArr.count) {
  65. _installindex = 0;
  66. if(_waitingArr.count > 0){
  67. _installingArr = [NSArray arrayWithArray:_waitingArr];
  68. [_waitingArr removeAllObjects];
  69. [self beginToTVFun];
  70. }
  71. else {
  72. _installingArr = @[];
  73. }
  74. }
  75. else{
  76. getInstalledAppModel*installModel = _installingArr[_installindex];
  77. NSMutableDictionary*paraDict = [NSMutableDictionary new];
  78. if (installModel.path) {
  79. [paraDict setObject:installModel.path forKey:@"path"];
  80. }
  81. else{
  82. _installindex++;
  83. [self beginToTVFun];
  84. }
  85. KWeakSelf
  86. [[netWorkManager shareInstance] cloudPhoneGETCallBackCode:@"installApkToTv" Parameters:paraDict success:^(id _Nonnull responseObject) {
  87. SuperModel *model = [[SuperModel alloc] initWithDictionary:responseObject error:nil];
  88. if(model && model.status == 0){
  89. }
  90. weakSelf.installindex++;
  91. [weakSelf beginToTVFun];
  92. } failure:^(NSError * _Nonnull error) {
  93. }];
  94. }
  95. }
  96. @end