抖音广告IOS/Android接入笔记:

2023-11-02

一、抖音广告接入(Android接入)

注意:内容输出对接中已包含广告对接,建议使用广告4.6.0.7版本,如使用其他广告版本建议做好自测


//2600及以上版本,需要使用如下Maven命令
//火山引擎maven仓库地址
maven{url 'https://artifact.bytedance.com/repository/Volcengine/'}
//穿山甲maven仓库地址
maven{url 'https://artifact.bytedance.com/repository/pangle'}
//为保证兼容性 建议使用广告SDK版本
implementation 'com.pangle.cn:ads-sdk-pro:4.6.0.7'
implementation ('com.pangle.cn:pangrowth-sdk:2.9.0.4'){
	exclude group: 'com.pangle.cn', module: 'partner-live-sdk'
	exclude group: 'com.pangle.cn', module: 'pangrowth-novel-sdk'
	exclude group: 'com.pangle.cn', module: 'pangrowth-game-sdk'
	exclude group: 'com.pangle.cn', module: 'pangrowth-luckycat-sdk'
	exclude group: 'com.pangle.cn', module: 'pangrowth-reward-sdk'
	exclude group: 'com.pangle.cn', module: 'partner-luckycat-api-sdk'
	exclude group: 'com.pangle.cn', module: 'pangrowth-luckycat-api'
}

二、抖音广告接入(IOS接入)

(一)静态短视频


source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/volcengine/volcengine-specs.git'
pod 'Ads-CN', '4.6.0.0' #为保证兼容性 建议使用广告SDK版本
pod 'Pangrowth', '3.0.0.0', :subspecs => [ 'media' ]

(二)动态短视频


source 'https://github.com/CocoaPods/Specs.git'
source 'https://github.com/volcengine/volcengine-specs.git'
pod 'Ads-CN', '4.6.0.0' #为保证兼容性 建议使用广告SDK版本
pod 'Pangrowth', '3.0.0.0', :subspecs => [ 'media-dynamic' ]

三、抖音开屏广告****接入新规-2022年11月

(一)Android开屏广告接入

新版开屏广告说明

为提高开发者的收入体验,新版开屏广告降低开发者的接入成本,烦请开发者详读本文档,以避免出现接入错误。

重大变化

旧接口废弃&新增 (直接从4700版本开始接入的新用户无需看此部分,可以直接从老版本升级上来的需要阅读此部分区分新老接口区别)

开屏请求、回调接口变更

目前4700Android 在创建TTAdNative对象以及创建广告请求AdSlot阶段和之前保持一致,在调用loadSplashAd接口时新增了新的加载开屏接口,新老接口对比以及示例:

1.接口规范

/**
 * @param adSlot   请求配置信息
 * @param listener 加载结果回调
 * @param timeOut  加载超时时间
 * 异步加载Splash广告,结果会通过CSJSplashAdListener回调
 */
void loadSplashAd(AdSlot adSlot, CSJSplashAdListener listener, int timeOut);

/**
 * 开屏广告加载监听器
 */
interface CSJSplashAdListener{
    //广告物料、素材加载成功回调
    void onSplashLoadSuccess();

    //广告物料或素材加载失败或超时回调
    void onSplashLoadFail(CSJAdError csjAdError);

    /**
     * 广告渲染回调,接入方可以在这个回调中,调用ad.showSplashView(splashContainerView)进行渲染
     * @param ad 开屏广告接口
     */
    void onSplashRenderSuccess(CSJSplashAd ad);

    //广告渲染失败或超时回调
    void onSplashRenderFail(CSJSplashAd ad, CSJAdError csjAdError);
}

2.代码示例

2.1代码实现

mTTAdNative.loadSplashAd(adSlot, new TTAdNative.CSJSplashAdListener() {

    @Override
    public void onSplashLoadSuccess() {

    }

    @Override
    public void onSplashLoadFail(CSJAdError error) {
        showToast(error.getMsg());
        goToMainActivity();
    }

    @Override
    public void onSplashRenderSuccess(CSJSplashAd ad) {
        if (ad == null) {
            return;
        }
        mSplashAd = ad;
        mSplashAd.showSplashView(mSplashContainer);
    }

    @Override
    public void onSplashRenderFail(CSJSplashAd ad, CSJAdError csjAdError) {
        showToast(csjAdError.getMsg());
        goToMainActivity();
    }
}, AD_TIME_OUT);

2.2接口回调代码示例

package com.bytedance.sdk.openadsdk;

import android.app.Activity;
import android.view.View;
import android.view.ViewGroup;
import java.util.Map;

public interface CSJSplashAd extends TTClientBidding {
    /**
     * 获取开屏广告
     *
     * @return
     */

    View getSplashView();

    /**
     * 获取点睛view
     * @return
     */

    View getSplashClickEyeView();

    /**
     * 获取卡片view
     *
     * @return
     */

    View getSplashCardView();

    /**
     * 得到Splash广告的交互类型
     *
     * @return 2在浏览器内打开 (普通类型)3落地页(普通类型),5:拨打电话 -1 未知类型
     */
    int getInteractionType();

    /**
     * 设置开屏广告不开启倒计时功能、不显示跳过按钮
     */
    void hideSkipButton();

    /**
     * 返回广告额外信息
     */
    Map<String, Object> getMediaExtraInfo();

    interface SplashAdListener {

        //开屏展示
        void onSplashAdShow(CSJSplashAd ad);

        //开屏点击
        void onSplashAdClick(CSJSplashAd ad);

        //开屏关闭
        void onSplashAdClose(CSJSplashAd ad, int closeType);
    }

    /**
     * 注册Splash广告的下载回调
     *
     * @param downloadListener 下载回调监听器
     */
    void setDownloadListener(TTAppDownloadListener downloadListener);

    /**
     * 注册开屏阶段回调
     *
     * @param splashAdListener
     */
    void setSplashAdListener(SplashAdListener splashAdListener);

    int[] getSplashClickEyeSizeToDp();

    /**
     * 通知sdk开始点睛动画
     */
    void startClickEye();

    interface SplashClickEyeListener {
        //通知媒体可以展示点睛
        void onSplashClickEyeReadyToShow(CSJSplashAd bean);

        //媒体点睛点击回调
        void onSplashClickEyeClick();

        //点睛关闭回调
        void onSplashClickEyeClose();
    }

    interface SplashCardListener {
        //通知媒体可以展示卡片
        void onSplashCardReadyToShow(CSJSplashAd bean);

        //媒体卡片点击回调
        void onSplashCardClick();

        //卡片关闭回调
        void onSplashCardClose();
    }

    /**
     * 注册点睛阶段回调
     * @param clickEyeListener
     */
    void setSplashClickEyeListener(SplashClickEyeListener clickEyeListener);


    /**
     * 注册卡片阶段回调
     *
     * @param cardListener
     */
    void setSplashCardListener(SplashCardListener cardListener);

    /**
     * 告知sdk展示开屏
     * @param viewGroup
     */
    void showSplashView(ViewGroup viewGroup);

    /**
     * 告知sdk展示点睛
     * @param viewGroup
     */
    void showSplashClickEyeView(ViewGroup viewGroup);

    /**
     * 告知sdk展示卡片
     * @param viewGroup
     */
    void showSplashCardView(ViewGroup viewGroup, Activity activity);

}

2.3交互接口新

interface SplashAdListener {

    //开屏展示
    void onSplashAdShow(CSJSplashAd ad);

    //开屏点击
    void onSplashAdClick(CSJSplashAd ad);

    //开屏关闭(开屏跳过以及倒计时结束统一收敛到该接口)
    void onSplashAdClose(CSJSplashAd ad, int closeType);
}

2.4点晴新接口

interface SplashClickEyeListener 
{ 
//通知媒体可以展示点睛 
void onSplashClickEyeReadyToShow(CSJSplashAd bean); 
//媒体点睛点击回调 void onSplashClickEyeClick(); 
//点睛关闭回调 
void onSplashClickEyeClose(); 
}

2.5卡片新接口

interface SplashCardListener {
    //通知媒体可以展示卡片
    void onSplashCardReadyToShow(CSJSplashAd bean);

    //媒体卡片点击回调
    void onSplashCardClick();

    //卡片关闭回调
    void onSplashCardClose();
}

2.6开屏广告接入接口说明

开屏广告: 开屏广告为用户在进入App时展示的全屏广告。开屏广告为一个View,宽高默认为match_parent。注意: 开屏广告view:width =屏幕宽;height需要>=75%屏幕高 ,否则会影响计费。支持的广告尺寸:开屏广告的尺寸为开发者请求广告时设置的尺寸,建议设置的请求尺寸传入与展示区域大小保持一致,避免素材变形。

public interface CSJSplashAd extends TTClientBidding {
    /**
     * 获取开屏广告
     *
     * @return
     */

    View getSplashView();

    /**
     * 获取点睛view
     * @return
     */

    View getSplashClickEyeView();

    /**
     * 获取卡片view
     *
     * @return
     */

    View getSplashCardView();

    /**
     * 得到Splash广告的交互类型
     *
     * @return 2在浏览器内打开 (普通类型)3落地页(普通类型),5:拨打电话 -1 未知类型
     */
    int getInteractionType();

    /**
     * 设置开屏广告不开启倒计时功能、不显示跳过按钮
     */
    void hideSkipButton();

    /**
     * 返回广告额外信息
     */
    Map<String, Object> getMediaExtraInfo();

    interface SplashAdListener {

        //开屏展示
        void onSplashAdShow(CSJSplashAd ad);

        //开屏点击
        void onSplashAdClick(CSJSplashAd ad);

        //开屏关闭
        void onSplashAdClose(CSJSplashAd ad, int closeType);
    }

    /**
     * 注册Splash广告的下载回调
     *
     * @param downloadListener 下载回调监听器
     */
    void setDownloadListener(TTAppDownloadListener downloadListener);

    /**
     * 注册开屏阶段回调
     *
     * @param splashAdListener
     */
    void setSplashAdListener(SplashAdListener splashAdListener);

    int[] getSplashClickEyeSizeToDp();

    /**
     * 通知sdk开始点睛动画
     */
    void startClickEye();

    interface SplashClickEyeListener {
        //通知媒体可以展示点睛
        void onSplashClickEyeReadyToShow(CSJSplashAd bean);

        //媒体点睛点击回调
        void onSplashClickEyeClick();

        //点睛关闭回调
        void onSplashClickEyeClose();
    }

    interface SplashCardListener {
        //通知媒体可以展示卡片
        void onSplashCardReadyToShow(CSJSplashAd bean);

        //媒体卡片点击回调
        void onSplashCardClick();

        //卡片关闭回调
        void onSplashCardClose();
    }

    /**
     * 注册点睛阶段回调
     * @param clickEyeListener
     */
    void setSplashClickEyeListener(SplashClickEyeListener clickEyeListener);


    /**
     * 注册卡片阶段回调
     *
     * @param cardListener
     */
    void setSplashCardListener(SplashCardListener cardListener);

    /**
     * 告知sdk展示开屏
     * @param viewGroup
     */
    void showSplashView(ViewGroup viewGroup);

    /**
     * 告知sdk展示点睛
     * @param viewGroup
     */
    void showSplashClickEyeView(ViewGroup viewGroup);

    /**
     * 告知sdk展示卡片
     * @param viewGroup
     */
    void showSplashCardView(ViewGroup viewGroup, Activity activity);

}

2.7开屏广告请求广告接口说明

mTTAdNative.loadSplashAd(adSlot, new TTAdNative.CSJSplashAdListener() {

    //开屏素材加载成功
    @Override
    public void onSplashLoadSuccess() {

    }

    //加载开屏素材失败
    @Override
    public void onSplashLoadFail(CSJAdError error) {
        //开发者处理跳转到APP主页面逻辑
    }

    //开屏渲染成功,可以展示开屏
    @Override
    public void onSplashRenderSuccess(CSJSplashAd ad) {
    
      if (ad == null) {
            return;
        }
        if (mSplashContainer != null && !SplashActivity.this.isFinishing()) {
            mSplashContainer.removeAllViews();
            //把SplashView 添加到ViewGroup中,注意开屏广告view:width =屏幕宽;height >=75%屏幕高
             ad.showSplashView(mSplashContainer);
            //设置不开启开屏广告倒计时功能以及不显示跳过按钮,如果这么设置,您需要自定义倒计时逻辑
            //ad.setNotAllowSdkCountdown();
        }else {
            //开发者处理跳转到APP主页面逻辑
        }
        if (ad == null) {
            return;
        }
      
    }

    @Override
    public void onSplashRenderFail(CSJSplashAd ad, CSJAdError csjAdError) {
       //开发者处理跳转到APP主页面逻辑
    }
}, AD_TIME_OUT);

2.8广告交互监听器

interface SplashAdListener {

    //开屏展示
    void onSplashAdShow(CSJSplashAd ad);

    //开屏点击
    void onSplashAdClick(CSJSplashAd ad);

    //开屏关闭
    void onSplashAdClose(CSJSplashAd ad, int closeType);
}

2.9移除广告

可在Activity跳转到其他Activity时把广告控件上的广告视图remove掉

mSplashContainer.removeAllViews();

3.0开屏广告衔接注意

1、模板渲染的开屏请求方法需设置setExpressViewAcceptedSize参数 单位dp。非模板渲染开屏请求方法需设置setImageAcceptedSize参数 单位px 。切记不可使用错误

2、开屏广告加载超时时间建议大于3500ms,最大程度的保证广告的展示率可开屏体验,示例设置了3500ms

3、为了收益最大化所有开屏广告均要实时请求,不可缓存。

4、开发者要在onSplashLoadFail()、onSplashRenderFail()、onSplashAdClose()回调及CSJSplashAd广告为null时开发者做跳转主页面的处理,跳转之后开屏控件上的view移除。

5、需要开发者在开屏Activity中onStop()中做一个标记 在onResume()中做跳转主页面的逻辑处理,跳转之后开屏控件上的view移除。

@Override
protected void onResume() {
    //判断是否该跳转到主页面
    if (mForceGoMain) {
        goToMainActivity();
    }
    super.onResume();
}

@Override
protected void onStop() {
    super.onStop();
    mForceGoMain = true;
}

6、如果要在底部添加自身logo,需要缩小的开屏广告的展示区域,此时请求的时候宽和高填写裁剪后宽和高即可,即请求尺寸为屏幕宽*(屏幕高-logo高)

(二)iOS新版开屏广告接入

新版开屏广告使用BUSplashAd对象管理开屏广告所有业务。开屏广告所有视图的展示和移除将由SDK统一管理,开发者无需关心。 接入方式上,使用BUSplashAd对象调用loadAdData方法请求广告,调用show方法展示广告,通过设置BUSplashAdDelegate代理,获取广告加载、 渲染、点击、关闭、跳转等回调。

1.服务范围

创建广告位对象、请求广告、展示广告

2.传入广告位ID

_splashAd = [[BUSplashAd alloc] initWithSlotID:slotID adSize:size];
// 设置开屏广告代理
_splashAd.delegate = self;
// 加载广告
[_splashAd loadAdData];

3.广告物料、素材加载成功后,会回调splashAdLoadSuccess:方法,在这里调用show方法展示广告:

- (void)splashAdLoadSuccess:(BUSplashAd *)splashAd {
    // 使用应用keyWindow的rootViewController(接入简单,推荐)
    UIWindow *keyWindow = [[[UIApplication sharedApplication] delegate] window];   
    [splashAd showSplashViewInRootViewController:keyWindow.rootViewController];
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

抖音广告IOS/Android接入笔记: 的相关文章

  • 在 Java 中停止线程? [复制]

    这个问题在这里已经有答案了 我正在编写一段代码 该代码连接到服务器 使用该连接生成一堆线程并执行一堆 东西 在某些情况下 连接会失败 我需要停止一切并从头开始使用新对象 我想在对象之后进行清理 但在线程上调用 thread stop 但此方
  • 无法将库添加到我的 Android 项目

    我正在创建一个新应用程序 我想使用一些像这样的库 https github com JakeWharton Android ViewPagerIndicator https github com JakeWharton Android Vi
  • Java GUI,根据actionListener更改面板

    我在两个不同的面板中添加了两个按钮 如果单击第一个按钮 则需要转到下一个面板 其中包含第二个按钮 但是当我单击第一个按钮时 该按钮没有被替换 Java GUI import java awt event ActionEvent import
  • Android studio 导入模块按钮缺失

    我已经使用 Eclipse 很长时间了 但我想尝试一下 Android Studio 所以我创建了新项目 现在我想向其中添加 SlidingMenu 库 我发现一些教程说要转到项目结构 单击加号按钮并选择导入模块 但是没有导入模块选项 当我
  • 使用 Gradle 构建 Kotlin + Java 9 项目

    我对 Gradle 老实说 还有 Java 9 相当陌生 我正在尝试使用 Gradle 构建一个混合了 Java 9 和 Kotlin 的简单库项目 更详细地说 Java中有一个接口 Kotlin中有一个实现 我会用 Kotlin 做所有事
  • @android的含义

    我想问一下是什么意思 android as in android id android id list 我在不同的 android 示例和教程中看到过它 我也用谷歌搜索过它 我发现的唯一解释是 列表和空 ID 是由 Android 平台为我
  • 没有字符串参数构造函数/工厂方法可以从字符串值 ('') 反序列化

    我在使用时遇到了 json 解析问题ObjectMapper类来自com fasterxml jackson databind包 我得到的错误是 com fasterxml jackson databind JsonMappingExcep
  • TextView 中缩进项目符号列表

    我有一个 TextView 我用 strings xml 中的字符串资源中的文本填充它 字符串资源包含 元素 用于在 TextView 内创建项目符号列表 我的问题是我想控制项目符号列表中跨越多行的行的缩进 默认情况下 文本不会缩进超过项目
  • Java 会话变量

    我听说有些人认为在会话中将信息存储在服务器上是一个坏主意 因为它不安全 因此 在多页面业务流程功能中 应用程序将数据写入数据库 然后在需要时检索信息 在会话中存储私人信息是否一定不安全 只要会话本身安全 在会话中存储属性就不存在安全风险劫持
  • 如何更改使用 Google ReCaptcha 版本 2 时的错误消息?

    当为 Google ReCaptcha 版本 2 选择多张照片时 会显示以下错误消息 需要多个正确的解决方案 请解决更多 如何将错误消息更改为我网站上的自定义消息 这是图像 我认为不可能在服务器端 在谷歌 进行 这可以在客户端通过利用 js
  • HttpMediaTypeNotAcceptableException / HttpMediaTypeNotAcceptableException:找不到可接受的表示

    我有一个客户端正在尝试连接的 API 但是它会抛出错误 2015 09 22 04 21 44 297 org springframework web servlet mvc method annotation HttpEntityMeth
  • SpannableString 中的 URLSpan

    我正在使用这个例子SpannableString http developer android com resources samples ApiDemos src com example android apis text Link ht
  • java代码的等效vb代码

    谁能告诉我这段Java代码到底做了什么 SecureRandom random SecureRandom getInstance SHA1PRNG byte bytes new byte 20 synchronized random ran
  • Maven 依赖冲突:org.w3c.dom.ElementTraversal

    我有一个 Java 代码库 它使用 Maven 进行依赖项解析并在 CI 上运行测试 经过最近的一批开发 大到足以很难识别重大更改 我的一些测试现在在通过 Maven 运行时失败了NoClassDefFoundError for org w
  • Android 中 Admob 的 XML 或 Java 关键字

    我似乎找不到任何有关通过 XML 或 Java 设置 adMob 广告关键字的可靠文档 我已经尝试过中看到的方法this https stackoverflow com questions 5066129 android admob api
  • 应返回带有 html 代码的字符串的支持 bean 属性返回空字符串

    我的支持 bean 中有一个返回 html 代码的属性 public String getHtmlPrevisualizar return Hello world 我想要做的是在 iframe 中显示这个 html 代码 我用 JavaSc
  • 从 Spring 启动运行 Java 类

    我使用的是Java8和Spring4 3 1 我有一个 Java Spring 应用程序托管由浏览器和移动应用程序客户端访问的 RESTfult 服务 其次 我编写了一个侦听事件的聊天服务器 socket io 来自客户 该聊天服务器正在从
  • 我可以在“com.android.vending.BILLING”中使用“uses-feature”而不是“uses-permission”吗?

    在我的应用程序的 AndroidManifest xml 中 我目前有
  • 无法读取使用 DataOutputStream 发送的号码

    这是我的客户端代码 Random rand new Random int n rand nextInt 50 1 DataInputStream dis new DataInputStream socket getInputStream D
  • StableArrayAdapter 与 ArrayAdapter

    我正在看这个ListView教程 列表视图教程 http www vogella com tutorials AndroidListView article html 我想知道创建自己的更好ArrayAdapter 而不仅仅是使用和Arra

随机推荐

  • MySQL 8.0 隐藏索引

    隐式索引 最明显的一个作用类似 索引回收站 例如数据库长时间运行后 会积累很多索引 做数据库优化时 想清理掉没什么用的多余的索引 但可能删除某个索引后 数据库性能下降了 发现这个索引是有用的 就要重新建立 对于较大的表来说 删除 重建索引的
  • python筑基——基础知识作业汇总,学习笔记

    作业一 语法 变量 输 输出 基本运算 基本数据类型 字符串 类型转换 1 计算整型50乘以10再除以5的商并使用print输出 result 50 10 5 print result 2 判断整型8是否大于10的结果并使用print输出
  • codeforces 825 E Minimal Labels

    Problem codeforces com contest 825 problem E Reference 看第 5 条评论 Meaning 给出一个n个结点的DAG 找一个给结点编号的序列 且满足3个条件 编号为 1 n 每个编号出现且
  • 第三章:Linux环境基础开发工具使用

    系列文章目录 文章目录 系列文章目录 前言 一 yum 1 三板斧 2 扩展 3 软件包名称 二 vim 1 vim基本模式 2 vim基本操作 插入模式 命令模式 底行模式 注释 三 gcc g 1 预处理 2 编译 3 汇编 4 链接
  • Python opencv 机器学习 2.knn k近邻 ocr识别数字 使用digits.png(opencv自带)

    import cv2 import numpy as np from matplotlib import pyplot as plt 识别数字OCR img cv2 imread digits png gray cv2 cvtColor i
  • 见习网工之综合实验

    需求一 信息中心配置Eth trunk实现链路冗余 SW1 interface Eth Trunk1 mode lacp static least active linknumber 1 trunkport GigabitEthernet
  • 【每日一练】在JSX中使用条件渲染

    条件渲染 技术方案 三元表达式 逻辑 运算 1 三元表达式 满足条件才渲染一个span标签 const flag true function App return div flag div h1 span 我是JackWoot span h
  • 自动化测试如何做?接口自动化测试如何才能做好?

    前言 接口自动化测试常用框架 Python requests pytest yaml alluer Jenkins 接口自动化测试的目的 自动化测试的主要目的是用来回归测试的 当代码有变化时 有可能影响不应该变化的逻辑 这个时候为了确认这种
  • There was a problem importing one of the Python modules required to run yum

    为什么80 的码农都做不了架构师 gt gt gt 最近从python 2 6 升级到python2 7 导致 yum 不可用 原因主要是yum 不支持python27 因此需要更改yum的可用路径 which yum 查看下yum的安装路
  • js拖拽实现

  • 强化学习的A3C算法应用(训练Atari游戏)

    A3C算法的全称是Asynchronous Advantage Actor Critic 异步优势执行者 评论者算法 这个算法和优势执行者 评论者算法的区别在于 在执行过程中不是每一步都更新参数 而是在回合结束后用整个轨迹进行更新 因此可以
  • 多个git合并,并保留log历史记录

    面临的需求是 将多个git仓库作为一个单独目录 整合到一个新的git仓库中 并且保留历史记录 1 新建一个summary仓库 新建一个summary仓库 用于整合一系列git仓库 git clone
  • openwrt编译x86固件

    x86 openwrt固件编译 2017年十月四日我在珠海 中秋之际写下这篇文章 祝各位看官花好月圆 有情人终成眷属 最近一直在玩Openwrt 以前上学的时候接触一丁丁 但是只限于烧写别人编译好的固件 这次要真刀实干了 学习了一周各种百度
  • 专访用自己姓氏命名编译器YC++的创始人

    在CSDN的论坛里看到了这样的一条帖子 请使用中国人开发的C C 编译器 网页浏览器内核 并提供了该软件的下载地址 从大家的跟帖来看很多人 是很有兴趣的 但是作者并没有留下太多的介绍说明类的文字 为了一探究竟 我拨通了作者留下的电话并完成了
  • Ubuntu 16.04设置root用户登录图形界面

    Ubuntu默认的是root用户不能登录图形界面的 只能以其他用户登录图形界面 这样就很麻烦 因为权限的问题 不能随意复制删除文件 用gedit编辑文件时经常不能保存 只能用vim去编辑 下面以Ubuntu 16 04版为例说明 1 打开终
  • STM32实战项目:HAL_RCC_OscConfig中程序卡死问题解决办法

    STM32实战项目经验 HAL RCC OscConfig中程序卡死问题解决办法 工程环境 STM32CUBEIDE STM32F405VG 现象复现 项目中一个是IAP程序 另一个是APP程序 两个程序都是使用STM32CubeIDE生成
  • 搜索题目综合

    BFS 1 小X学游泳 题解 枚举每一个点作为连通块的起点 求得连通块大小 然后打擂台求最值即可 参考代码 include
  • element-ui和element-plus的自定义列表格用法

    前言 element plus 这个 UI 组件库 虽说基本和 vue2 element ui 差不多 但还是有点区别 以至于按emenent ui的写法来写会发现报错 下面我将讲解一下element ui和element plus的自定义
  • 一文彻底讲清Linux tty子系统架构及编程实例

    摘要 本文详细解读了linux系统下的tty子系统的深层次原理和架构 并参考了LDD3中的代码实例讲述了无硬件下实现一个简单的tty设备驱动模块的编写 对了解tty子系统及下部串口驱动模块的学习有较好的参考价值 1 tty设备简介 tty一
  • 抖音广告IOS/Android接入笔记:

    一 抖音广告接入 Android接入 注意 内容输出对接中已包含广告对接 建议使用广告4 6 0 7版本 如使用其他广告版本建议做好自测 2600及以上版本 需要使用如下Maven命令 火山引擎maven仓库地址 maven url htt