pod 'GDTMobSDK'
#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) {
}
}
init(_ placementId: String) {
GDTSDKConfig.registerAppId("xxxxxxx")//申请的appid
self.placementId = "xxxxxx" // 申请的placementId
}
// 优量汇插屏
let adManagerGDTAdCalc = AdManagerGDTAd.init("7091772179125733")
let adManagerGDTAdDetail = AdManagerGDTAd.init("4011278119295553")
// 优量汇开屏
let adManagerGDTAdSplashCalc = AdManagerGDTAdSplash("6021872260330766")
let adManagerGDTAdSplashDetail = AdManagerGDTAdSplash("2041275240436711")
adManagerGDTAdSplashCalc.showSplashAd {} failure: {}
adManagerGDTAdSplashDetail.showSplashAd() {self.toDetail()} failure: {self.toDetail()}
附上优量汇集成教程的网址:https://doc.tradplusad.com/TencentAds
如果有问题可以24小时联系qq:1094781527
0、 inception结构 利用网络中的计算资源,增加网络的宽度和深度,但保持计算量不变。 1、 本文中,首先创新点在于算法和网络结构; 其次注意了移动端和嵌入式的场景,考虑内存和功耗,所以提出的结构并不是固定的,参数少,计算量少。 因此提出了高效的深度神经网络结构,称为inception,灵感来源于Network in Network。 在该案例中,网络的深
导语:本文是TensorFlow实现流行机器学习算法的教程汇集,目标是让读者可以轻松通过清晰简明的案例深入了解 TensorFlow。这些案例适合那些想要实现一些 TensorFlow 案例的初学者。本教程包含还包含笔记和带有注解的代码。第一步:给TF新手的教程指南 1:tf初学者需要明白的入门准备 机器学习入门笔记: https://github.com/aym...
参考地址:https://www.cnblogs.com/princessd8251/articles/5551651.html点击打开链接
配置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命
作者:陈某某链接:https://www.zhihu.com/question/305023565/answer/549332473来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。用文件重定向的方法(大体意思就是把原来文件夹从原来应该在的位置移走。然后ITunes在访问它的备份文件时还是会按照默认路径找,但是我们可以让系统给ITunes指路,把它指到另一个地方。而另一个地方就是我们把文件夹转移的地方。这样ITunes到了地方之后系统就会自动把它引导到另一个地方.
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数据库中,网上找了好几种方法,最后决定使用oracel sql developer这种工具来实现。Mysql和oracle属于两种不同的数据库,具体使用差异也有很多,不能简单使用sql文件进行导出导入。以下几个示例比较一下Mysql与oracle数据库的差异lSQL基本语法差异MySQL的SQL语句中,要求表名、表的别名必须区分大...
中国邮递员问题是一个和旅行商问题比较相关但又不太相同的一个问题,而且个人感觉理解的难度更大一点,当然,这就是仁者见仁,智者见智了,旅行商问题是不能回头的,一个节点访问过了不能回来了,并不需要走完所有的路,但是中国邮递员问题可以多次访问一个节点,因为中国邮递员问题要求的是要访问所有的街道,即,每条街道必须访问到。在这样的前提下,如果规划路径使得返回邮局时路程最短。 试想...
IC验证面试总结之UART模块本文涵盖了IC验证面试过程中关于UART模块验证的相关问题
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。官网:https://www.docker.com/相关资料:1、Docker入门教程 http://dockone.io/article/1112、Docker_百度百科 http:...
什么是卡诺图卡诺图是真值表的变形,它可以将有n个变量的逻辑函数的2^n个最小项组织在给定的长方形表格中,同时为相邻最小项(相邻与项)运用邻接律化简提供了直观的图形工具。在部分情况下,卡诺图能让你的逻辑变得一目了然,但是如果需要处理的逻辑函数的自变量较多,卡诺图会使图形更加复杂。更多一个简单的例子现有绿、黄、红三颗灯,当满足下面四个条件中任何一个时,需要按下按钮:绿灯、黄灯、红灯...