美文网首页
踩坑WKWebView设置自定义UserAgent

踩坑WKWebView设置自定义UserAgent

作者: 也嘉 | 来源:发表于2019-12-20 16:05 被阅读0次

    先附上结论:

    1. WKWebView的customUserAgent会覆盖webview本身的userAgent;
    2. configuration.applicationNameForUserAgent设置的userAgent是拼接在webview本身的userAgent后面的。
    正确设置自定义userAgent
    WKWebViewConfiguration *configuration = [WKWebViewConfiguration new];
    configuration.applicationNameForUserAgent = "iOS";
    _webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:configuration];
    

    最近我的项目h5网页接入第三方视频直播(m3u8格式)和flash视频,出现不能播放的情况。

    于是排查问题,怀疑两个地方:

    1. 由于h5网页需要注入对象,引入了XWebView;
    2. 又由于需要显示网页中的webp图片,对WKWebView进行了请求拦截.

    出现这个问题我首先想到的,是不是拦截请求无法处理直播流,先注释掉请求拦截的代码,测试还是不能播。

    再想想会不会是注入对象时交换了一些函数引起的,于是又注释掉注入对象的代码,测试还是不能播。

    咋办呢?直播链接用safari、微信、qq都能打开,为啥我的app就打不开呢?

    灵光一现,会不会是userAgent的关系?

    先不设置userAgent试试看能播不,嘿!能播,还真是这里的问题。

    测试

    WKWebViewConfiguration *configuration = [WKWebViewConfiguration new];
    configuration.applicationNameForUserAgent = "iOS_App";
    _webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:configuration];
    

    如上设置userAgent抓包得到的内容是:

    Mozilla/5.0 (iPhone; CPU iPhone OS 13_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) iOS_App

    _webView.customUserAgent = "iOS_App";
    

    这种方式设置userAgent抓包后就只有iOS_App

    到这里一切就明了!

    相关文章

      网友评论

          本文标题:踩坑WKWebView设置自定义UserAgent

          本文链接:https://www.haomeiwen.com/subject/chrinctx.html