V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
abellee000
V2EX  ›  程序员

app 接入网站广告的思路

  •  
  •   abellee000 · 2020-02-24 20:39:30 +08:00 via Android · 3652 次点击
    这是一个创建于 1739 天前的主题,其中的信息可能已经有所发展或是发生改变。
    需要在 app 内接入网站广告,我的想法是用 webview 来打开带有广告 js 的静态页面,然后用户点击就跳转到对应广告内容页,这样可行么
    13 条回复    2020-02-25 17:43:25 +08:00
    abellee000
        1
    abellee000  
    OP
       2020-02-24 20:40:05 +08:00 via Android
    😂😂😂第一次做这种东西,查了半天没找到相关的资料
    clf
        2
    clf  
       2020-02-24 20:47:25 +08:00
    不需要这么麻烦,你去了解一下 APP 广告联盟,有专门的不同类型的广告 SDK 文档的。
    pkxutao
        3
    pkxutao  
       2020-02-24 21:59:30 +08:00
    先说一下应用场景吧
    PDX
        4
    PDX  
       2020-02-24 22:48:51 +08:00 via iPhone
    同问,如果是 flutter 该怎么接呢
    lc7029
        5
    lc7029  
       2020-02-25 00:05:53 +08:00
    google adsense,有 SDK
    TimeRain
        6
    TimeRain  
       2020-02-25 08:36:26 +08:00 via Android
    admob
    abellee000
        7
    abellee000  
    OP
       2020-02-25 09:55:09 +08:00 via Android
    @lychs1998 我去查了你说的方式,那种只支持一部分广告平台,像 admob 中介适配器只支持一部分…
    abellee000
        8
    abellee000  
    OP
       2020-02-25 09:57:19 +08:00 via Android
    @PDX 我就是在用 flutter,因为某些原因无法使用 admob 这种已经集成好的 sdk,目前通过 webview_flutter 插件做的 cpm,但点击广告后跳转无法实现(广告在 iframe 内)
    abellee000
        9
    abellee000  
    OP
       2020-02-25 11:33:41 +08:00
    mark 一下,android 下的解决方案,需要修改 flutter_webview 的 android sdk
    打开 webview_flutter 的缓存位置,找到
    `.\android\src\main\java\io\flutter\plugins\webviewflutter\FlutterWebView.java`
    在 FlutterWebView 的构造函数 FlutterWebView 的
    ```
    // Allow local storage.
    webView.getSettings().setDomStorageEnabled(true);
    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    ```
    下方添加上允许加载打开多页面(因为我使用的广告代码中使用了`<a target="_blank">`)
    ```
    // todo:fix _target="_blank" in iframe tag
    webView.getSettings().setSupportMultipleWindows(true);//代表支持多窗口打开
    webView.setWebChromeClient(new WebChromeClient() {
    @Override
    public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
    WebView newWebView = new WebView(view.getContext());
    newWebView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
    // 在此处进行跳转 URL 的处理, 一般情况下_black 需要重新打开一个页面, 这里我直接让当前的 webview 重新 load 了 url
    webView.loadUrl(url);
    /* 或使用默认浏览器打开
    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    startActivity(browserIntent);
    */
    return true;
    }

    });
    WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
    transport.setWebView(newWebView);
    resultMsg.sendToTarget();
    return true;
    }
    });
    ```
    两处注释分别是直接在原 webview 页面 t 中跳转到广告或使用默认浏览器打开广告,各有利弊,使用时酌情选择,ios 端不会改。
    abellee000
        10
    abellee000  
    OP
       2020-02-25 11:34:34 +08:00
    为啥 markdown 不能用呢
    spark40
        11
    spark40  
       2020-02-25 13:13:28 +08:00
    admob 了解一下?
    abellee000
        12
    abellee000  
    OP
       2020-02-25 15:36:53 +08:00 via Android
    @spark40 是因为 admob 用不了才自己做的
    spark40
        13
    spark40  
       2020-02-25 17:43:25 +08:00
    @abellee000 日活很多了?需要商业化了?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1044 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 22:12 · PVG 06:12 · LAX 14:12 · JFK 17:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.