appToTVManager.m 4.0 KB

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