Мне нужно сделать скриншот 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;
}