WKWebView takeSnapshot не работает на iOS 13 - PullRequest
1 голос
/ 07 марта 2020

Мне нужно сделать скриншот WKWebView, пока приложение в фоновом режиме.

Но при iOS13 метод takeSnapshotWithConfiguration:completionHandler: из WKWebView не работает. completionHandler никогда не срабатывает, когда приложение выполняет фоновую задачу.

Это хорошо работает на iOS12. Кроме того, он работает на iOS13, а приложение в foreground.

Воспроизвести: см. Демонстрационный проект для воспроизведения https://github.com/Jnis/WebView-Snapshot. Также смотрите видео там.

Ожидается: takeSnapshotWithConfiguration:completionHandler завершение вызоваHandler с изображением, когда приложение находится в фоновом режиме

Фактический результат:

[self.wkwebView takeSnapshotWithConfiguration:configuration completionHandler:^(UIImage * _Nullable snapshotImage, NSError * _Nullable error) {
   // this never calls on iOS13 while app in the background. But it works well on iOS12.
}];

Итак, что я делаю не так? Или кто-нибудь знает другой способ, как полностью сохранить веб-страницу, используя WKWebView в то время как приложение в фоновом режиме? Спасибо!


ОБНОВЛЕНО: 13.03.2020

Решение: установка свойства WKSnapshotConfiguration afterScreenUpdates в NO

WKSnapshotConfiguration *configuration = [WKSnapshotConfiguration new];
if (@available(iOS 13.0, *)) {
    configuration.afterScreenUpdates = NO;
}
...