Подтвердить что ты не робот

Как подготовить обновление пользовательского интерфейса перед тем, как приложение появится на площадке

Я знаю, что обновить интерфейс, когда Apple не рекомендует Apple, особенно для OpenGL.

Однако я только что понял, что iMessenger и Facebook-мессенджер, похоже, способны это сделать. Введите поток сообщений со своим другом, а затем перейдите на задний план, затем получите новое сообщение, пока приложение все еще находится в фоновом режиме, а затем принесите это приложение на передний план (щелкните значок push или значок приложения), вы обнаружите, что новый пузырь сообщения уже там с анимацией расширения приложения из значка.

По моему мнению, это может произойти только потому, что новый пузырь сообщения уже нарисован в фоновом режиме. Затем, когда приложение входит на передний план, оно может появиться в анимации.

Однако из моего результата теста в iOS8 и iOS9 все обновления фонового интерфейса будут отложены после того, как приложение станет активным. Кроме того, iOS добавит неявную транзакцию анимации для этого обновления пользовательского интерфейса.

Я перечислил свой тестовый код, как показано ниже, вы увидите, что новая ячейка будет добавлена ​​в таблицу с очевидной транзакцией анимации, когда приложение выходит на передний план, полностью в отличие от iMessenger. TableView: numberOfRowsInSection: будет выполняться только задержка, когда приложение вводит передний план.

И не только для обновления ячейки таблицы, даже добавление subview в фоновом режиме также инициирует аналогичную задержку транзакции для входа на передний план.

Возможно, я в совершенно неправильном направлении об этом. Может ли кто-нибудь помочь мне понять, как iMessenger и FB messenger могут достичь этого эффекта? Заранее спасибо!

@interface ViewController () <UITableViewDataSource, UITableViewDelegate>

@property (nonatomic) UITableView *tableView;
@property (nonatomic) NSMutableArray *dataTable;

@end

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
  self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds];
  [self.view addSubview:self.tableView];
  self.tableView.delegate = self;
  self.tableView.dataSource = self;
  [self.tableView registerClass:[UITableViewCell class]
         forCellReuseIdentifier:@"kCellId"];

  self.dataTable = [[NSMutableArray alloc] initWithArray:@[@"1", @"2", @"3"]];

  __weak __typeof(self) weakSelf = self;
  [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidEnterBackgroundNotification
                                                    object:nil
                                                     queue:[NSOperationQueue mainQueue]
                                                usingBlock:^(NSNotification * _Nonnull note) {
                                                  dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)),
                                                                 dispatch_get_main_queue(), ^{
                                                    [weakSelf.dataTable addObject:[@(weakSelf.dataTable.count + 1) stringValue]];
                                                    [weakSelf.tableView reloadData];
                                                  });
                                                }];
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
  return self.dataTable.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"kCellId"];
  cell.textLabel.text = self.dataTable[indexPath.row];
  return cell;
}

@end
4b9b3361

Ответ 1

Я могу порекомендовать вам изучить документацию по полезной нагрузке APN для запуска-мага.

launch-image - имя файла изображения в комплекте приложения; он может включать расширение или опустить его. Изображение используется как образ запуска, когда пользователи нажимают кнопку действия или перемещают ползунок действий. Если это свойство не указано, система использует предыдущий снимок, использует изображение, идентифицированное ключом UILaunchImageFile, в файле Info.plist приложений или возвращается к Default.png. Это свойство было добавлено в iOS 4.0.

Ответ 2

Фоновая выборка позволяет системе пробуждать приложение в фоновом режиме

подробнее введите ссылку здесь