从零集成腾讯广告SDK_T_TX的博客-程序员秘密

技术标签: ios  xcode  swift  

从零集成腾讯广告SDK

话不多说直接干:
  1. 在我们工程的podfile里新增
pod 'GDTMobSDK'
  1. 在我们的项目里新增一个oc的.h文件用于import 需要用到的文件:
#import "GDTUnifiedInterstitialAd.h"
#import "GDTSplashAd.h"
#import "GDTSDKConfig.h"

在这里插入图片描述
3. 新增文件:GDTAdManager,这里我们用了两种广告类型(1.优量汇插屏, 2.优量汇开屏)复制代码:

import UIKit
//腾讯广告
class AdManagerGDTAdSplash: NSObject {
    private var splashAd: GDTSplashAd!
    var placementId: String?
    var success: (() -> Void)?
    var failure: (() -> Void)?
    
    init(_ placementId: String) {
        GDTSDKConfig.registerAppId("xxxxxxx")//申请的appid
        self.placementId = placementId
    }

    func showSplashAd(success: (() -> Void)? = nil, failure: (() -> Void)? = nil) {
        guard let placementId = self.placementId  else { return }
        self.success = success
        self.failure = failure
        splashAd =  GDTSplashAd.init(placementId: placementId)
        splashAd.delegate = self
        splashAd.fetchDelay = 3
        splashAd.load()
    }
}

extension AdManagerGDTAdSplash: GDTSplashAdDelegate {
//    MARK:GDTSplashAdDelegate
    func splashAdDidLoad(_ splashAd: GDTSplashAd!) {
        var window = UIApplication.shared.keyWindow
        
        if !H.isIOS12AndLow() {
            window = UIApplication.shared.windows.first
        }
        
        if splashAd.isAdValid() {
            splashAd.show(in: window, withBottomView: nil, skip: nil)
        }
    }

    func splashAdSuccessPresentScreen(_ splashAd: GDTSplashAd!) {
        print(#function)
    }
    
    func splashAdFail(toPresent splashAd: GDTSplashAd!, withError error: Error!) {
        print(#function,error ?? "")
        self.splashAd = nil
        self.failure?()
    }
    
    func splashAdExposured(_ splashAd: GDTSplashAd!) {
        print(#function)
    }
    
    func splashAdClicked(_ splashAd: GDTSplashAd!) {
        print(#function)
    }
    
    func splashAdApplicationWillEnterBackground(_ splashAd: GDTSplashAd!) {
        print(#function)
    }
    
    func splashAdWillClosed(_ splashAd: GDTSplashAd!) {
        print(#function)
    }
    
    func splashAdClosed(_ splashAd: GDTSplashAd!) {
        print(#function)
        self.splashAd = nil
        self.success?()
    }
    
    func splashAdDidPresentFullScreenModal(_ splashAd: GDTSplashAd!) {
        print(#function)
    }
    
    func splashAdWillDismissFullScreenModal(_ splashAd: GDTSplashAd!) {
        print(#function)
    }
    
    func splashAdDidDismissFullScreenModal(_ splashAd: GDTSplashAd!) {
        print(#function)
    }
}

class AdManagerGDTAd: NSObject {
    private var interstitial: GDTUnifiedInterstitialAd!
    var placementId: String?
    var success: (() -> Void)?
    var failure: (() -> Void)?

    init(_ placementId: String) {
        GDTSDKConfig.registerAppId("1111398218")
        self.placementId = placementId
    }
    
    func showInterstital(success: @escaping(() -> Void), failure: @escaping(() -> Void)) -> GDTUnifiedInterstitialAd {
        guard let placementId = self.placementId else { return self.interstitial }
        self.success = success
        
        if ((self.interstitial) != nil) {
            self.interstitial.delegate = nil
        }
        self.interstitial = GDTUnifiedInterstitialAd.init(placementId: placementId)
        self.interstitial.delegate = self
        self.interstitial.videoMuted = true // 设置视频是否Mute
        self.interstitial.loadFullScreenAd()// 加载插屏全屏视频广告
        return self.interstitial
    }
}

extension AdManagerGDTAd: GDTUnifiedInterstitialAdDelegate {
    func unifiedInterstitialSuccess(toLoad unifiedInterstitial: GDTUnifiedInterstitialAd) {
        
    }
    
    func unifiedInterstitialClicked(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
        
    }
    func unifiedInterstitialWillExposure(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
        
    }
    func unifiedInterstitialDidPresentScreen(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
        
    }
    func unifiedInterstitialDidDismissScreen(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
        self.success?()
    }
    func unifiedInterstitialAdDidPresentFullScreenModal(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
    }
    func unifiedInterstitialWillPresentScreen(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
        
    }
    func unifiedInterstitialWillLeaveApplication(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
        
    }
    func unifiedInterstitialFail(toLoad unifiedInterstitial: GDTUnifiedInterstitialAd, error: Error) {
        print("xxxxx=toload",error)
    }
    func unifiedInterstitialFail(toPresent unifiedInterstitial: GDTUnifiedInterstitialAd, error: Error) {
        print("xxxxx=topresent",error)
    }
    func unifiedInterstitialAdDidDismissFullScreenModal(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
        
    }
    func unifiedInterstitialAdWillPresentFullScreenModal(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
        
    }
    func unifiedInterstitialAdWillDismissFullScreenModal(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
       
    }
    func unifiedInterstitialAdViewDidPresentVideoVC(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
        
    }
    func unifiedInterstitialAdViewDidDismissVideoVC(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
        
    }
    func unifiedInterstitialAdViewWillPresentVideoVC(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
        
    }
    func unifiedInterstitialAdViewWillDismissVideoVC(_ unifiedInterstitial: GDTUnifiedInterstitialAd) {
        
    }
    func unifiedInterstitialAd(_ unifiedInterstitial: GDTUnifiedInterstitialAd, playerStatusChanged status: GDTMediaPlayerStatus) {
    }
}
  1. 如果是只集成了一种类型的广告,比如开屏,那我们就可以不用初始化AdManagerGDTAd,直接让上面的代码的placementId等于你申请的placementId例如"7091772179125733"
 init(_ placementId: String) {
       GDTSDKConfig.registerAppId("xxxxxxx")//申请的appid
       self.placementId = "xxxxxx" // 申请的placementId
   }
  1. 如果是不同类型的话,或者调用多次需要不同广告的话,我们需要在controller里初始化的时候输入一下代码:
// 优量汇插屏
   let adManagerGDTAdCalc = AdManagerGDTAd.init("7091772179125733")
   let adManagerGDTAdDetail = AdManagerGDTAd.init("4011278119295553")
   // 优量汇开屏
   let adManagerGDTAdSplashCalc = AdManagerGDTAdSplash("6021872260330766")
   let adManagerGDTAdSplashDetail = AdManagerGDTAdSplash("2041275240436711")
  1. 在你想让他点击某一个按钮的时候或者启动页面的时候展示广告,输入一下代码调用广告(这里我们判断广告是否成功,所以用了callback,成功或者失败):
adManagerGDTAdSplashCalc.showSplashAd {} failure: {}
adManagerGDTAdSplashDetail.showSplashAd() {self.toDetail()} failure: {self.toDetail()}

大功告成看看效果:

在这里插入图片描述

附上优量汇集成教程的网址:https://doc.tradplusad.com/TencentAds
如果有问题可以24小时联系qq:1094781527

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36411120/article/details/116205475

智能推荐

googlenet 论文_fffupeng的博客-程序员秘密

0、 inception结构 利用网络中的计算资源,增加网络的宽度和深度,但保持计算量不变。   1、 本文中,首先创新点在于算法和网络结构; 其次注意了移动端和嵌入式的场景,考虑内存和功耗,所以提出的结构并不是固定的,参数少,计算量少。 因此提出了高效的深度神经网络结构,称为inception,灵感来源于Network in Network。 在该案例中,网络的深

TensorFlow学习笔记(十)—— 实践项目总结_tiankong19999的博客-程序员秘密

导语:本文是TensorFlow实现流行机器学习算法的教程汇集,目标是让读者可以轻松通过清晰简明的案例深入了解 TensorFlow。这些案例适合那些想要实现一些 TensorFlow 案例的初学者。本教程包含还包含笔记和带有注解的代码。第一步:给TF新手的教程指南 1:tf初学者需要明白的入门准备  机器学习入门笔记: https://github.com/aym...

mysql多表关联数据删除_python pymysql 删除多个表的数据_喜倾一诺的博客-程序员秘密

参考地址:https://www.cnblogs.com/princessd8251/articles/5551651.html点击打开链接

配置VLAN的相关命令作用以及Trunk的命令作用_kele_baba的博客-程序员秘密

配置VLAN的相关命令作用以及Trunk的命令作用1.静态路由结合vlan及trunk2.配置操作1.静态路由结合vlan及trunk2.配置操作首先进入系统模式 system然后敲更改名字命令sys R1关闭提示信息 undo info-center enable1.配置IP地址之前需要进入网口 int g0/0/02.然后配置相应端口IP地址 ip address IP地址+子网掩码3.利用dis this命令查看IP是否配置成功4.注意配置结束后一定要用undo shutdown命

itunes备份电脑C盘内存不够怎么办?_itunes备份了一半c盘满了怎么办_oangeli的博客-程序员秘密

作者:陈某某链接:https://www.zhihu.com/question/305023565/answer/549332473来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。用文件重定向的方法(大体意思就是把原来文件夹从原来应该在的位置移走。然后ITunes在访问它的备份文件时还是会按照默认路径找,但是我们可以让系统给ITunes指路,把它指到另一个地方。而另一个地方就是我们把文件夹转移的地方。这样ITunes到了地方之后系统就会自动把它引导到另一个地方.

Kia's Calculation_kia's calculate_hang__19的博客-程序员秘密

Doctor Ghee is teaching Kia how to calculate the sum of two integers. But Kia is so careless and alway forget to carry a number when the sum of two digits exceeds 99. For example, when she calculate

随便推点

mysql转oracle_MYSQL数据库迁移到ORACLE数据库_一土水丰色今口的博客-程序员秘密

一、概述现在有个需求,想把mysql数据库中的数据转移到oracle数据库中,网上找了好几种方法,最后决定使用oracel sql developer这种工具来实现。Mysql和oracle属于两种不同的数据库,具体使用差异也有很多,不能简单使用sql文件进行导出导入。以下几个示例比较一下Mysql与oracle数据库的差异lSQL基本语法差异MySQL的SQL语句中,要求表名、表的别名必须区分大...

中国邮递员问题+代码实现(cpp)_邮递员问题最短路径编程_Raintin_coder的博客-程序员秘密

中国邮递员问题是一个和旅行商问题比较相关但又不太相同的一个问题,而且个人感觉理解的难度更大一点,当然,这就是仁者见仁,智者见智了,旅行商问题是不能回头的,一个节点访问过了不能回来了,并不需要走完所有的路,但是中国邮递员问题可以多次访问一个节点,因为中国邮递员问题要求的是要访问所有的街道,即,每条街道必须访问到。在这样的前提下,如果规划路径使得返回邮局时路程最短。 试想...

UART模块验证-面试总结_apb_env.act_agt.apb_mon.apb_mon_port.connect_kobetriumph的博客-程序员秘密

IC验证面试总结之UART模块本文涵盖了IC验证面试过程中关于UART模块验证的相关问题

Docker 笔记总结_python小陈的博客-程序员秘密

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。官网:https://www.docker.com/相关资料:1、Docker入门教程 http://dockone.io/article/1112、Docker_百度百科 http:...

使用卡诺图简化你的逻辑判断_dengou1592的博客-程序员秘密

什么是卡诺图卡诺图是真值表的变形,它可以将有n个变量的逻辑函数的2^n个最小项组织在给定的长方形表格中,同时为相邻最小项(相邻与项)运用邻接律化简提供了直观的图形工具。在部分情况下,卡诺图能让你的逻辑变得一目了然,但是如果需要处理的逻辑函数的自变量较多,卡诺图会使图形更加复杂。更多一个简单的例子现有绿、黄、红三颗灯,当满足下面四个条件中任何一个时,需要按下按钮:绿灯、黄灯、红灯...

推荐文章

热门文章

相关标签