Как отобразить скриншоты WKWebView в виджетах рабочего стола iOS?

#ios #swiftui #widget #ios14 #widgetkit

#iOS #swiftui #виджет #ios14 #widgetkit

Вопрос:

Как я могу сделать снимок экрана динамического веб-сайта и поместить снимок экрана в виджет рабочего стола iOS? Я хочу создать панель управления виджетами, которая показывает обновление веб-сайта каждый час или около того.

Для контекста я знаю, как решить аналогичную проблему с картами вместо веб-просмотров — вы используете MKMapSnapshotter в функции временной шкалы виджета, чтобы получить снимок экрана карты.

 func getMapSnapshot(completionHandler: @escaping (Image) -> Void) {
    let coordinate = self.locationManager.location?.coordinate ?? self.defaultCoordinate
    let options = MKMapSnapshotter.Options()
    options.region = MKCoordinateRegion(center: coordinate, span: self.span)
    let snapshot = MKMapSnapshotter(options: options)
    snapshot.start { (snapshot, error) in
        let image = Image(uiImage: snapshot?.image ?? UIImage(named: "map-placeholder")!)
        completionHandler(image)
    }
}
  

Я пытаюсь применить тот же принцип к WKWebViews, но как вы можете сделать снимок экрана WKWebView, если представление не открыто на устройстве. К сожалению, вы не можете использовать WKWebViews в виджетах, поэтому нет способа получить WKWebView на экране виджета, сделать снимок экрана, а затем отобразить снимок экрана. Другие приложения в App Store, похоже, поняли это, так чего же мне не хватает?

Комментарии:

1. Вы что-то узнали? Было бы любопытно, как это сделали другие приложения в магазине.