Wkwebview: возможно ли предварительно загрузить несколько URL? -- ios поле с участием swift поле с участием url поле с участием preload поле с участием wkwebview пол Связанный проблема

WKWebView: Is it possible to preload multiple URLs?


2
vote

проблема

русский

Просто мигрировал приложение на <код> WKWebView и был заданным вопросом, есть ли возможным способом «предварительно загрузить несколько URL-адресов, но только отображать один за раз»

У меня есть список 5 URL. Я уже знаю, что я буду показан в какой-то момент времени, и я хочу ускорить опыт, предварительно загрузка их для использования в одном <код> WKWebView .

Английский оригинал

Just migrated an app over to WKWebView and was wondering if there is any possible way to 'preload' multiple URLs, but only display one at a time?

I have a list of 5 URLs. I already know that I will be shown at some point in time, and I want to speed up the experience by pre-loading these for use in a single WKWebView.

</div
              
 
 

Список ответов

4
 
vote
vote
Лучший ответ
 

Я закончил просто использовать NSurlcache и предварительно загрузить все URL-адреса, используя NSURLREQUEST и NSURLCOUNTIC. Затем, когда я загружаю URL в WKWebView, он использует кэшированные запросы на мою политику кэша.

 

I ended up just using NSURLCache and preloading all URLs using NSURLRequest and NSURLConnection. Then whenever I load a url into WKWebView it uses the cached requests per my cache policy.

</div
 
 
 
 
2
 
vote

Относительно прямой способ сделать это - создать пять <Код> sudo6 объектов (Asynchronoulslysly), каждый из которых инициализируется с использованием известных URL-адресов. Когда вам нужно отображать один из них, вы можете преобразовать <код> sudo7 на строку, а затем вызовите <код> sudo8 's <код> sudo9 функция для изменения Отображаемая страница.

 

A relatively straight-forward way to do this is to create five NSData objects (asynchronoulsly), each initialized using the known urls. When you need to display one of them, you can convert the NSData to a string, and then call WKWebView's loadHTMLString function to change the displayed page.

</div
 
 
0
 
vote

Вы также можете предварительно загрузить пять разных <код> gksudo0 экземпляров и поменять их в / выделение, когда вам нужен определенный URL. Это зависит от вашего интерфейса и взаимодействия конечно.

 

You can also preload five different WKWebView instances and swap them in/out when you need a specific URL. This depends on your UI and interaction of course.

</div
 
 
0
 
vote
<Р> Использование NSURLCache

Вот код

<Сильные> Свифт

 <код> // Create URLRequest     var request: URLRequest? = nil     if let url = URL(string: "YOUR_URL") {         request = URLRequest(url: url)     }          // Check the cache.     var cachedResponse: CachedURLResponse? = nil     if let request = request {         cachedResponse = URLCache.shared.cachedResponse(for: request)     }     print(cachedResponse != nil ? "Cached response found!" : "No cached response found.")    // Load the cache     do {         if let request = request {             try NSURLConnection.sendSynchronousRequest(request, returning: nil)         }     } catch {     }   

OBJ-C

 <код> NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"YOUR_URL"]];      // Check the cache.     NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request];     NSLog(cachedResponse ? @"Cached response found!" : @"No cached response found.");     //Load cache     [NSURLConnection sendSynchronousRequest:request returningResponse:NULL error:NULL];   
 

Use NSURLCache

Here is the code

Swift

// Create URLRequest     var request: URLRequest? = nil     if let url = URL(string: "YOUR_URL") {         request = URLRequest(url: url)     }          // Check the cache.     var cachedResponse: CachedURLResponse? = nil     if let request = request {         cachedResponse = URLCache.shared.cachedResponse(for: request)     }     print(cachedResponse != nil ? "Cached response found!" : "No cached response found.")    // Load the cache     do {         if let request = request {             try NSURLConnection.sendSynchronousRequest(request, returning: nil)         }     } catch {     } 

Obj-C

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"YOUR_URL"]];      // Check the cache.     NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request];     NSLog(cachedResponse ? @"Cached response found!" : @"No cached response found.");     //Load cache     [NSURLConnection sendSynchronousRequest:request returningResponse:NULL error:NULL]; 
</div
 
 

Связанный проблема

2  Мое обновление приложения iOS удаляет постоянные данные из старой версии пользователей  ( My ios app update deletes persistent data from users older version ) 
В моем приложении iOS я разрешу пользователя сохранить свои пресеты пользовательского интерфейса. <код> public interface ITestServiceCallback { [Operati...

1  Доступ к файлу, сохраненному на устройство WriteToFile  ( Accessing file saved to device writetofile ) 
Я экономя свой текст UItextView в файл, test.txt <код> NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSS...

7  Никогда не получайте загрузку данных в Google API для iOS  ( Never getting uploading data progress in google api for ios ) 
Я использую Googledrive API в своем приложении, чтобы загрузить файлы из моего приложения. До сих пор мне удалось найти хорошие результаты для загрузки всех т...

1  Обновление NsmanageObjects на заднем плане  ( Updating nsmanagedobjects in the background ) 
Я пытаюсь обновить NSManagedObject в фоновом режиме на основе свойств из сети сети. Возникли проблемы с обертыванием моей головы вокруг параллелизма. То, что ...

32  В чем разница между ns_enum и ns_options?  ( What is the difference between ns enum and ns options ) 
i предварительно назначил следующий код с помощью clang в xcode5. <код> typedef NS_ENUM(NSInteger, MyStyle) { MyStyleDefault, MyStyleCustom }; type...

0  Падение на хранение текущего пользователя в основных данных  ( Falling to store current user in core data ) 
Что-то действительно странное происходит с моим кодом, и я не знаю, как это исправить. Когда я хочу хранить некоторые пользователи в основных данных, он работ...

2  IOS: Как нарисовать линию между двумя движущимися объектами?  ( Ios how to draw a line between two moving objects ) 
Я в основном имеющую массив объектов UIView, которые находятся на экране. Они перемещаются случайным образом вокруг, и я хотел бы иметь строку, соединяющую ка...

15  Получение новейших уведомлений только тогда, когда приложение работает  ( Receiving newsstand notifications only when app is running ) 
Я не получаю уведомления в газете, когда приложение не работает, вот что я сделал. Приложение имеет правильные клавиши Plist 'uinewsstancstApp = yes and' ui...

46  Как проверить push-уведомление работает в моем приложении  ( How to test push notification is working in my application ) 
В моем приложении я реализую службу Push-уведомления. У меня есть сервер поставщика контента, который содержит некоторые продукты в нем. Я создал сертификат...

0  Realm.io Array Создание  ( Realm io array creation ) 
Какой правильный способ создать rlmobject с массивом других rlmobjects? Документы ничего не упоминают и мои первоначальные попытки (ничего не делайте, предп...

0  Уволить контроллер просмотра, когда он был назван «PerforgeGege»?  ( Dismiss view controller when it was called by performsegue ) 
У меня есть три контроллера просмотра: <код> Main , <код> VC1 , а <код> VC2 . Всякий раз, когда приложение запускает метод делегата определяет, какой VC будет...

-1  Переместите анимированный символ только в то время как кнопка удерживается  ( Move an animated character only while a button is held down ) 
Я пытался сделать накрасочный персонаж двигаться с четырьмя стрелками: вверх, прямо, левый и вниз, как игровая мальчик. Я сделал это: <код> - (IBActio...

0  «NsconcretemutableAttribedString initwithString) :: Nil Value 'при использовании Google рядом с сообщениями  ( Nsconcretemutableattributedstring initwithstring nil value when using google ) 
Я следовал в документации Google для использования API BearmyBymessages. Я использую Swift3. У меня есть следующий код, чтобы настроить приложение для публика...

0  Симулятор iPad показывает черный экран слева?  ( Ipad simulator showing black screen on the left ) 
Привет, я делаю приложение iPhone / iPad. Однако в симуляторе iPad экран показывает черный экран слева без видимых причин. Я запустил приложение с симулято...

1  Есть ли способ использовать координаты для выбора элемента в автоматизации тестирования IOS UI?  ( Is there a way to use coordinates to select an element in ios ui test automation ) 
Я имею дело с <код> UICollectionView , который имеет много элементов. Один из них, это <код> UISuplementaryView , который содержит множество кликабельных ячее...

Связанный проблема

2  Мое обновление приложения iOS удаляет постоянные данные из старой версии пользователей 
1  Доступ к файлу, сохраненному на устройство WriteToFile 
7  Никогда не получайте загрузку данных в Google API для iOS 
1  Обновление NsmanageObjects на заднем плане 
32  В чем разница между ns_enum и ns_options? 
0  Падение на хранение текущего пользователя в основных данных 
2  IOS: Как нарисовать линию между двумя движущимися объектами? 
15  Получение новейших уведомлений только тогда, когда приложение работает 
46  Как проверить push-уведомление работает в моем приложении 
0  Realm.io Array Создание 
0  Уволить контроллер просмотра, когда он был назван «PerforgeGege»? 
-1  Переместите анимированный символ только в то время как кнопка удерживается 
0  «NsconcretemutableAttribedString initwithString) :: Nil Value 'при использовании Google рядом с сообщениями 
0  Симулятор iPad показывает черный экран слева? 
1  Есть ли способ использовать координаты для выбора элемента в автоматизации тестирования IOS UI?