相关疑难解决方法(0)

WKWebView在后台,几个奇怪的断言

我想在 iOS 中找出当前浏览器的 userAgent。

所以在 Xcode 创建的默认项目中,我添加了:

#import "ViewController.h"
#import <WebKit/WKWebView.h>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    dispatch_async(dispatch_get_main_queue(), ^{
        WKWebView *obj = [[WKWebView alloc] initWithFrame:CGRectZero];
        [obj evaluateJavaScript: @"navigator.userAgent" completionHandler:^(id _Nullable result, NSError * _Nullable error) {
            NSLog(@"evaluateJavaScript = %@ : %@", result, error);
            NSLog(@"To make sure that webview alive: %@", obj);
        }];
    });
}


@end
Run Code Online (Sandbox Code Playgroud)

它打印出我期望的内容:

评估JavaScript = Mozilla/5.0 (iPad; CPU OS 14_0 like Mac OS …

objective-c ios

13
推荐指数
0
解决办法
6535
查看次数

WKWebView 正在尝试在后台运行,尽管它已关闭并且应该被处理

我在应用程序的 UIViewController 容器中有一个简单的 WKWebView。用户将使用 WKWebView 打开这个 UIViewController 容器,然后最终将使用导航“返回”项关闭它。导航项配置容器和WKWebView。它有效,但在每次关闭时,我都会在日志中看到以下错误:

第一对错误:

[断言] 获取断言时出错:<Error Domain=RBSAssertionErrorDomain Code=3 “目标未运行或缺少所需的目标权利” UserInfo={RBSAssertionAttribute=<RBSDomainAttribute| domain:"com.apple.webkit" name:"Background" sourceEnvironment:"(null)">, NSLocalizedFailureReason=目标未运行或缺少所需的目标权限}>

[ProcessSuspension] 0x7f8f9d404210 - ProcessAssertion:无法获取 PID 为 27176 的进程的 RBS 后台断言“WebProcess 后台断言”,错误:错误域=RBSAssertionErrorDomain 代码=3“目标未运行或缺少所需的目标权利” UserInfo={RBSAssertionAttribute= <RBS域属性| domain:"com.apple.webkit" name:"Background" sourceEnvironment:"(null)">, NSLocalizedFailureReason=目标未运行或缺少所需的目标权限}

第二对错误:

[断言] 获取断言时出错:<Error Domain=RBSAssertionErrorDomain Code=2 "指定的目标进程不存在" UserInfo={NSLocalizedFailureReason=指定的目标进程不存在}>

[ProcessSuspension] 0x7f8f9d005c30 - ProcessAssertion:无法获取 PID 为 27176 的进程的 RBS 后台断言“WebProcess 后台断言”,错误:错误域=RBSAssertionErrorDomain Code=2“指定的目标进程不存在” UserInfo={NSLocalizedFailure targetReason=Specified不存在}

第三对错误:

无法向服务 com.apple.WebKit.WebContent 发出信号:113:找不到指定的服务

无法向服务 com.apple.WebKit.Networking 发出信号:113:找不到指定的服务

WKWebView 是从容器 UIViewController 的viewDidDisappear(也尝试将它移动到viewWillDisappear,这没有区别)以下列方式处理:

webView.stopLoading()
webView.configuration.userContentController.removeScriptMessageHandler(forName: "...")
webView.navigationDelegate = nil
webView.scrollView.delegate …
Run Code Online (Sandbox Code Playgroud)

ios swift wkwebview

9
推荐指数
1
解决办法
1万
查看次数

标签 统计

ios ×2

objective-c ×1

swift ×1

wkwebview ×1