heat
V2EX  ›  问与答

有用 swift 的朋友么,帮忙看一眼这行给 webview 加 UA 的代码

  •  
  •   heat · Sep 28, 2016 · 3181 views
    This topic created in 3688 days ago, the information mentioned may be changed or developed.
    我的环境是 swift2.3 。需要给 WKwebview 一个 UA ,用如下写法:

    webView.performSelector(Selector("_setApplicationNameForUserAgent:"), withObject: "myua")

    到是可以 work ,但是一直弹一条 warning 有点恶心:
    No method declared with Objective-C selector '_setApplicationNameForUserAgent:'

    GOOGLE搜了好久,大部分都是老版本的写法,或者根本不work,请问下在 swift2.3 里这个语句要如何写呢?
    12 replies  •  2016-09-29 09:15:41 +08:00
    loveuqian
    loveuqian
    Sep 28, 2016 via iPhone
    1
    这个问题点一下 warning 就会帮你修正吧
    happyeveryday
    happyeveryday
    Sep 28, 2016
    2
    好久没用了可能记错, swift 里的 selector 不是用:#selector()这样的写法吗?
    wudb
    wudb
    Sep 28, 2016
    3
    #selector(SettingViewController.onClose)
    Shvier
    Shvier
    Sep 28, 2016
    4
    楼上+1 ,并且 Xcode 应该会提示修改方法。
    heat
    heat
    OP
    Sep 28, 2016
    5
    @loveuqian @happyeveryday @Shvier 这已经是 XCODE 提示并修改后的结果了。


    @wudb webView.performSelector(#selector("_setApplicationNameForUserAgent:"), withObject: "myua") 这样会直接 failed
    loveuqian
    loveuqian
    Sep 28, 2016
    6
    webView 好像有个 customUserAgent 属性,可以用嘛
    Shvier
    Shvier
    Sep 28, 2016
    7
    刚刚手动 check 了一下,声明了一个叫做 test 的方法, webView?.perform(#selector(DHNewsDetailView.test)); 会出现警告'Unmanaged<AnyObject>?' is unused ,这是因为 performSelector 方法会返回一个这个类型的值,但是没有使用,所以会 warning ,如果你用 wkWebView loadRequest 的时候应该也会出现类似的警告,我不知道正确的解决方式,我的写法是 let _去接收这个变量。
    sunhr
    sunhr
    Sep 28, 2016
    8
    iOS8 or before :

    UserDefaults.standard.register(defaults: ["UserAgent": "myua"])

    iOS9 or later :

    webView.configuration.applicationNameForUserAgent = "myua"

    这样就行了,建议尽量别去调用私有 API
    sunhr
    sunhr
    Sep 28, 2016
    9
    补充一下, UserDefaults 那个方法需要自己把 UA 拼好哟,我的做法是新建个空白 WebView 然后调用 JS 取默认的 UA ,在结尾插入自定义的字段
    Paladinfeng
    Paladinfeng
    Sep 28, 2016
    10
    你调这方法设置 UserAgent 不怕被拒吗?
    heat
    heat
    OP
    Sep 28, 2016
    11
    @Paladinfeng 这。。。怎么说?
    wudb
    wudb
    Sep 29, 2016
    12
    @heat 你没看清楚哦,括号内是类名.func 的,没有双引号
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1569 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 23:29 · PVG 07:29 · LAX 15:29 · JFK 18:29
    ♥ Do have faith in what you're doing.