IOS Wkwebview показывает о: Blank после приложения отказаться от приложения и перезапусканияIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 IOS Wkwebview показывает о: Blank после приложения отказаться от приложения и перезапускания

Сообщение Anonymous »

Я использую WkwebView в моем приложении для iOS для отображения веб -страницы. Он работает нормально, когда приложение работает или фона. Однако, после того, как я покинул приложение (проведите вверх) и перезапускает его, веб -просмотр показывает только о: blank вместо ожидаемого URL.struct WebView: UIViewRepresentable {

var url: URL?

var redirect: ((URL) -> Void)?

func makeUIView(context: Context) -> WKWebView {
let webView = WKWebView()
webView.isInspectable = true
webView.navigationDelegate = context.coordinator
return webView
}

func updateUIView(_ webView: WKWebView, context: Context) {
if let url = url {
webView.load(URLRequest(url: url))
}
}

func makeCoordinator() -> Coordinator {
Coordinator(parent: self)
}

class Coordinator: NSObject, WKNavigationDelegate {

var parent: WebView

init(parent: WebView) {
self.parent = parent
}

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
let javascript = """
if (document.querySelector('meta[name="viewport"]')) {
document.querySelector('meta[name="viewport"]').setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no');
} else {
const meta = document.createElement('meta');
meta.setAttribute('name', 'viewport');
meta.setAttribute('content', 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no');
document.getElementsByTagName('head')[0].appendChild(meta);
}
true;
"""

webView.evaluateJavaScript(javascript) { result, error in
if let error = error {
print("Error injecting JavaScript: \(error)")
} else {
print("JavaScript executed successfully.")
}
}
print("WebView finished loading.")
}

func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
print("WebView failed with error: \(error.localizedDescription)")
}

func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
print("WebView provisional load failed: \(error.localizedDescription)")
}

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if let url = navigationAction.request.url, url.scheme == "oauthapp" {
parent.redirect?(url) // Pass deep link to your SwiftUI view
decisionHandler(.cancel) // Cancel navigation
return
}
decisionHandler(.allow)
}
}

}
< / code>
Comman> ContentView < / true>
URL? {
var components = URLComponents(string: authURL)
components?.queryItems = [
URLQueryItem(name: "response_type", value: "code"),
URLQueryItem(name: "client_id", value: clientID),
URLQueryItem(name: "redirect_uri", value: redirectURI),
URLQueryItem(name: "code_challenge", value: codeChallenge),
URLQueryItem(name: "code_challenge_method", value: "S256"),
URLQueryItem(name: "scope", value: scopes)
]
return components?.url
}

var body: some View {
if accessToken == nil {
WebView(url: buildAuthURL()){ url in
if let components = URLComponents(string: url.absoluteString),
let code = components.queryItems?.first(where: { $0.name == "code" })?.value {
print("Authorization code: \(code)")
authCode = code
requestAccessToken(code: code)
} else {
print("Failed to extract code from URL.")
}
}.ignoresSafeArea()
} else {
Text("Authorization Code: \((authCode ?? "").prefix(15))...")
Text("Access Token: \((accessToken ?? "").prefix(15))...")
}
}
< /code>
Что происходит: < /strong>
после брошения и повторного запуска приложения: < /p>

Появляется веб -просмотр. /> Примечания: < /strong> < /p>

Это происходит только после холодного старта (т.е. приложение было силой). < /li>
Сбой, а все остальное в приложении работает. Убедитесь, что Wkwebview правильно загружает предполагаемый URL вместо того, чтобы показывать о: пусто после холодного запуска?

Подробнее здесь: https://stackoverflow.com/questions/796 ... d-relaunch
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • IOS CreatePdf от WkwebView показывает черный фон для элементов SVG
    Anonymous » » в форуме IOS
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • IOS CreatePdf от WkwebView показывает черный фон для элементов SVG
    Anonymous » » в форуме IOS
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • C ++ Установите "Blank" или Mask Exception Mask of IfStrean (iOS)
    Anonymous » » в форуме C++
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Как отключить перетаскивание iOS 11 и iOS 12 в WKWebView?
    Anonymous » » в форуме IOS
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Открытие PDF-файлов с использованием `target="blank"` не происходит в Android Chrome
    Гость » » в форуме Android
    0 Ответы
    45 Просмотры
    Последнее сообщение Гость

Вернуться в «IOS»