Веб -страница iOS 26 со сценарием прекращена на пользовательскую схему WkurlschemehandlerIOS

Программируем под IOS
Ответить
Anonymous
 Веб -страница iOS 26 со сценарием прекращена на пользовательскую схему Wkurlschemehandler

Сообщение Anonymous »

Update (06.08.2025): Fixed in iOS beta 5
Something has changed in iOS 26 (tested on beta 4) and now if custom scheme is used and web page contains script element then WebKit is terminated with following log:

Код: Выделить всё

0x1130bc170 - [PID=47858] WebProcessProxy::didClose: (web process 0 crash)
0x1130bc170 - [PID=47858] WebProcessProxy::processDidTerminateOrFailedToLaunch: reason=Crash
< /code>
Шаги по воспроизведению: < /p>

 Создать WkWebView с помощью пользовательской конфигурации и пользовательской схемы схемы URL < /li>
 загружать html с элементом скрипта, который ссылается на другой файл < /li>
< /ol>
 wked reblect />  Фактический результат: wkwebview завершен < /p>
Пример кода: < /p>
final class CustomSchemeViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()

let sampleConfiguration = WKWebViewConfiguration()
sampleConfiguration.setURLSchemeHandler(
SampleURLSchemeHandler(),
forURLScheme: "sample"
)

let webView = WKWebView(frame: view.bounds, configuration: sampleConfiguration)
webView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
view.addSubview(webView)

webView.navigationDelegate = self

webView.load(URLRequest(url: URL(string: "sample://pages/sample.html")!))
}
}

extension CustomSchemeViewController: WKNavigationDelegate {
func webViewWebContentProcessDidTerminate(_ webView: WKWebView) {
print("webViewWebContentProcessDidTerminate")
}
}

final class SampleURLSchemeHandler: NSObject, WKURLSchemeHandler {
private func post(_ body: String, mimeType: String, urlSchemeTask: WKURLSchemeTask) {
let body = Data(body.utf8)

let response = URLResponse(
url: urlSchemeTask.request.url!,
mimeType: mimeType,
expectedContentLength: body.count,
textEncodingName: nil
)

urlSchemeTask.didReceive(response)
urlSchemeTask.didReceive(body)
urlSchemeTask.didFinish()
}

func webView(_ webView: WKWebView, start urlSchemeTask: WKURLSchemeTask) {
switch urlSchemeTask.request.url?.lastPathComponent {
case "sample.html":
post("""





Sample


""",
mimeType: "application/xhtml+xml",
urlSchemeTask: urlSchemeTask
)
case "sample.js":
post("console.log('Hello from JS File')",
mimeType: "text/javascript",
urlSchemeTask: urlSchemeTask
)
default:
assertionFailure()
}
}

func webView(_ webView: WKWebView, stop urlSchemeTask: WKURLSchemeTask) {
print("webView(_ webView: WKWebView, stop urlSchemeTask: WKURLSchemeTask)")
}
}

он работает нормально с файлом CSS внутри, без тега скрипта или с атрибутом Async
Код образца проекта https://github.com/igor-palaguta/ios26u ... ermination

Подробнее здесь: https://stackoverflow.com/questions/797 ... emehandler
Ответить

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

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

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

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

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