派金SDK接入文档

一、接入SDK
1、将sdk文件手动导入到目标项目中,如下图所示:
请添加图片描述
2、该SDK需接入其他三方广告,通过pod的方式接入,在Profile中加入如下代码:

  pod 'GDTMobSDK',     '~> 4.14.40'pod 'BaiduMobAdSDK', '~> 5.313'pod 'KSAdSDK',       '~> 3.3.51.1'

3、该SDK所依赖的②中的三方库的版本号与您项目中本身存在的库的版本号不一致,请您适配或联系SDK开发者适配。
4、该SDK不是必须依赖②中的三方库,如您不需要某个广告商的资源,也请您联系开发者开发。

二、代码接入
1、初始化

// 导入项目头文件
#import <MTAd/MTAd.h>
// 初始化方式,token 是指运营方提供的与接入方bundle id 绑定了的token
[MTAdApi initXWAdWithToken:@"token"];
// 获取当前sdk 版本号
NSLog(@"=========%@",[MTAdApi MT_version]);

2、服务端竞价相关数据

// 上报内容的key-value内容如下
typedef NS_ENUM(NSUInteger, BidPriceKey) {/** 代表竞胜方 价格的key */KEY_WIN_EXPECT_COST_PRICE   = 1,/** 代表竞胜的时候 失败放的最大价格的 key */KEY_HIGHEST_LOSS_PRICE      = 2,/** 代表是 竞胜败 方 时候的 竞价原因    它的 valut 值 可以是: 0、其他,1、竞争力不足,2、无广告返回,3、未参与竞价) */KEY_FAILED_REASON           = 3,/** 代表 竞败方 广告厂商  它的值可以是  (0、其他渠道,1、广点通,2、百青藤,3、穿山甲,4、快手,5、京准通,10、Π金引擎) */KEY_ADN_TYPE                = 4,/** 竞胜败⽅渠道名称 */KEY_ADN_NAME                = 5,/*** 竞胜之后调用, 需要在调用广告 show 之前调用** @param params - 必填,其中*               键 KEY_EXPECT_COST_PRICE 对应值为竞胜出价(单位:分),类型为Int,选填;*               键 KEY_HIGHEST_LOSS_PRICE 对应值为最大竞败方出价(单位:分),类型为Int,选填。*/
};
//获取竞价信息后,将会得到一个model 信息如下
@interface PRXServerBidingModel : NSObject/** 京胜 token */
@property (nonatomic,copy) NSString * token;/** 京胜 价格 */
@property (nonatomic,copy) NSString * price;/** 京胜 上报url */
@property (nonatomic,copy) NSString * nurl;/** 竞败 上报url */
@property (nonatomic,copy) NSString * lurl;/**  错误码 */
@property (nonatomic,copy) NSString * errorCode;@end

3、开屏广告接入方式

// 初始化 开屏广告对象
[[MTSplashObject alloc] initWithPlacementId:@"广告位id"];
//遵守 开屏广告对象的代理 代理详情参见 <MTSplashObjectDelegate>
xxx.delegate = self;
// 获取竞价信息  --- 适用服务端竞价
[xxx getBidingInfoResult];
// 获取竞价信息后,媒体方会收到 如下代理(请提前签订delegate)
- (void)mt_splashbidEnd:(MTSplashObject *)splashAd info:(PRXServerBidingModel *)info{NSLog(@"2开屏广告竞价成功----->%s,error = %@ -- info-%@",__func__,splashAd,info);
}
//服务端竞价 加载广告方式
[xxx bidLoadAd];
//普通模式 加载广告方式
[xxx loadAd];
/***  开屏广告素材加载成功*/
- (void)mt_splashAdDidLoad:(MTSplashObject * __nullable)splashAd{    NSLog(@"2开屏广告素材加载成功----->%s,error = %@",__func__,splashAd);
}/***  开屏广告展示失败*/
- (void)mt_splashAdFailToPresent:(MTSplashObject * __nullable)splashAd withError:(NSError *)error{NSLog(@"3开屏广告展示失败----->%s,error = %@",__func__,error);
}
//在广告加载成功之后 才可以展示广告
//支持 开屏广告底部 自定义视图
//支持 开屏广告 自定义跳过按钮
[xxx showAdInWindow:windoww withBottomView:nil skipView:nil];
// 由该sdk提供的广告资源得到竞价结果后请您调用如下代码上报
/**竞价成功的上报*/
- (void)sendBidPriceWin:(NSDictionary *_Nullable)winInfo;/**竞价失败的上报*/
- (void)sendBidPriceLoss:(NSDictionary *_Nullable)lossInfo;

其他代理方法


/***  应用进入后台时回调*  详解: 当点击下载应用时会调用系统程序打开,应用切换到后台*/
- (void)mt_splashAdApplicationWillEnterBackground:(MTSplashObject * __nullable)splashAd
{NSLog(@"4应用进入后台时回调----->%s",__func__);}/***  开屏广告曝光回调*/
- (void)mt_splashAdExposured:(MTSplashObject * __nullable)splashAd
{NSLog(@"5开屏广告曝光回调----->%s",__func__);}/***  开屏广告点击回调*/
- (void)mt_splashAdClicked:(MTSplashObject * __nullable)splashAd
{NSLog(@"6开屏广告点击回调----->%s",__func__);}/***  开屏广告将要关闭回调*/
- (void)mt_splashAdWillClosed:(MTSplashObject * __nullable)splashAd
{NSLog(@"7开屏广告将要关闭回调----->%s",__func__);}/***  开屏广告关闭回调*/
- (void)mt_splashAdClosed:(MTSplashObject * __nullable)splashAd
{NSLog(@"8开屏广告关闭回调----->%s",__func__);
}- (void)mt_splashAdClickSkip:(MTSplashObject *)splashAd
{NSLog(@"9点击了跳过按钮");
}/***  开屏广告点击以后即将弹出全屏广告页*/
- (void)mt_splashAdWillPresentFullScreenModal:(MTSplashObject * __nullable)splashAd
{NSLog(@"10开屏广告点击以后即将弹出全屏广告页----->%s",__func__);}/***  开屏广告点击以后弹出全屏广告页*/
- (void)mt_splashAdDidPresentFullScreenModal:(MTSplashObject * __nullable)splashAd
{NSLog(@"11开屏广告点击以后弹出全屏广告页----->%s",__func__);}/***  点击以后全屏广告页将要关闭*/
- (void)mt_splashAdWillDismissFullScreenModal:(MTSplashObject * __nullable)splashAd
{NSLog(@"12点击以后全屏广告页将要关闭----->%s",__func__);}/***  点击以后全屏广告页已经关闭*/
- (void)mt_splashAdDidDismissFullScreenModal:(MTSplashObject * __nullable)splashAd
{NSLog(@"13点击以后全屏广告页已经关闭----->%s",__func__);}/*** 开屏广告剩余时间回调*/
- (void)mt_splashAdLifeTime:(NSUInteger)time splashAd:(MTSplashObject * _Nullable)splashAd
{NSLog(@"14开屏广告剩余时间回调----->%s",__func__);}

4、激励视频 接入方式

// 激励视频初始化
xxx = [[MTRewardVideoAd alloc] initWithPlacementId:@"广告位"];
// 签代理   遵守代理 <MTRewardVideoAdDelegate>
xxx.delegate = self;
//服务端竞价 --- 获取竞价信息
[xxx getBidingInfoResult];//收到竞价信息后 
- (void)mt_rewardVideoBidEnd:(MTRewardVideoAd *)rewardedVideoAd info:(PRXServerBidingModel *)info{self.statusLabel.text = @"竞价成功";
}
//服务端竞价方式 -- 加载广告
[xxx bidLoadAd];
//普通模式下 --- 加载广告
[xxx loadAd];/**广告数据加载成功回调@param rewardedVideoAd MTRewardVideoAd 实例*/
- (void)mt_rewardVideoAdDidLoad:(MTRewardVideoAd *)rewardedVideoAd
{self.statusLabel.text = @"广告数据加载成功";
}/**视频广告各种错误信息回调@param rewardedVideoAd MTRewardVideoAd 实例@param error 具体错误信息*/
- (void)mt_rewardVideoAd:(MTRewardVideoAd *)rewardedVideoAd didFailWithError:(NSError *)error
{NSLog(@"%s",__FUNCTION__);if (error.code == 4014) {NSLog(@"请拉取到广告后再调用展示接口");self.statusLabel.text = @"请拉取到广告后再调用展示接口";} else if (error.code == 4016) {NSLog(@"应用方向与广告位支持方向不一致");self.statusLabel.text = @"应用方向与广告位支持方向不一致";} else if (error.code == 5012) {NSLog(@"广告已过期");self.statusLabel.text = @"广告已过期";} else if (error.code == 4015) {NSLog(@"广告已经播放过,请重新拉取");self.statusLabel.text = @"广告已经播放过,请重新拉取";} else if (error.code == 5002) {NSLog(@"视频下载失败");self.statusLabel.text = @"视频下载失败";} else if (error.code == 5003) {NSLog(@"视频播放失败");self.statusLabel.text = @"视频播放失败";} else if (error.code == 5004) {NSLog(@"没有合适的广告");self.statusLabel.text = @"没有合适的广告";} else if (error.code == 5013) {NSLog(@"请求太频繁,请稍后再试");self.statusLabel.text = @"请求太频繁,请稍后再试";} else if (error.code == 3002) {NSLog(@"网络连接超时");self.statusLabel.text = @"网络连接超时";}NSLog(@"ERROR: %@", error);
}
// 视频加载成功后,展示激励视频, 注意 controller 不能为空
[xxx showAdFromRootViewController:controller];

由sdk竞价成功或失败 上报方法

/**竞价成功的上报*/
- (void)sendBidPriceWin:(NSDictionary *_Nullable)winInfo;/**竞价失败的上报*/
- (void)sendBidPriceLoss:(NSDictionary *_Nullable)lossInfo;

其他代理方法

/**视频播放页即将展示回调@param rewardedVideoAd MTRewardVideoAd 实例*/
- (void)mt_rewardVideoAdWillVisible:(MTRewardVideoAd *)rewardedVideoAd
{}/**视频广告曝光回调@param rewardedVideoAd MTRewardVideoAd 实例*/
- (void)mt_rewardVideoAdDidExposed:(MTRewardVideoAd *)rewardedVideoAd
{self.statusLabel.text = @"广告已曝光";}/**视频播放页关闭回调@param rewardedVideoAd MTRewardVideoAd 实例*/
- (void)mt_rewardVideoAdDidClose:(MTRewardVideoAd *)rewardedVideoAd
{self.statusLabel.text = @"广告已关闭";}/**视频广告信息点击回调@param rewardedVideoAd MTRewardVideoAd 实例*/
- (void)mt_rewardVideoAdDidClicked:(MTRewardVideoAd *)rewardedVideoAd
{self.statusLabel.text = @"广告已点击";
}/**视频广告播放达到激励条件回调@param rewardedVideoAd MTRewardVideoAd 实例*/
- (void)mt_rewardVideoAdDidRewardEffective:(MTRewardVideoAd *)rewardedVideoAd
{NSLog(@"播放达到激励条件");}/**视频广告视频播放完成@param rewardedVideoAd MTRewardVideoAd 实例*/
- (void)mt_rewardVideoAdDidPlayFinish:(MTRewardVideoAd *)rewardedVideoAd
{NSLog(@"视频播放结束");self.statusLabel.text = @"视频播放结束";}

5、插屏广告 接入方式

// 插屏广告对象初始化方式
xxx = [[MTInterstitialAd alloc] initWithPlacementId:@"代码位"];
// 遵守代理 <MTInterstitialAdDelegate>
xxx.delegate = self;
//服务端竞价 获取竞价信息
[xxx getBidingInfoResult];//获取竞价信息 得到的数据 回调信息
- (void)mt_unifiedInterstitialBidEnd:(MTInterstitialAd *)splashAd info:(PRXServerBidingModel *)info {self.statusLabel.text = @"竞价数据请求成功";
}
//服务端竞价方式 -- 加载广告
[xxx bidLoadAd];
//普通模式下 --- 加载广告
[xxx loadAd]// 加载结果的回调
/***  广告预加载成功回调*  详解:当接收服务器返回的广告数据成功且预加载后调用该函数*/
- (void)mt_unifiedInterstitialSuccessToLoadAd:(MTInterstitialAd *)unifiedInterstitial{self.statusLabel.text = @"广告数据请求成功";
}/***  广告预加载失败回调*  详解:当接收服务器返回的广告数据失败后调用该函数*/
- (void)mt_unifiedInterstitialFailToLoadAd:(MTInterstitialAd *)interstitialAd error:(NSError *)error
{self.statusLabel.text = @"广告数据加载失败";
}
// 广告加载成功后  展示开屏  controller 不能为空
[xxx presentAdFromRootViewController:controller];

竞价结果汇报方法

/**竞价成功的上报*/
- (void)sendBidPriceWin:(NSDictionary *_Nullable)winInfo;/**竞价失败的上报*/
- (void)sendBidPriceLoss:(NSDictionary *_Nullable)lossInfo;

其他代理回调方法

/***  广告预加载成功回调*  详解:当接收服务器返回的广告数据成功且预加载后调用该函数*/
- (void)mt_unifiedInterstitialSuccessToLoadAd:(MTInterstitialAd *)unifiedInterstitial{self.statusLabel.text = @"广告数据请求成功";NSLog(@"%s,%@",__func__,self);
}/***  广告预加载失败回调*  详解:当接收服务器返回的广告数据失败后调用该函数*/
- (void)mt_unifiedInterstitialFailToLoadAd:(MTInterstitialAd *)interstitialAd error:(NSError *)error
{self.statusLabel.text = @"广告数据加载失败";NSLog(@"%s,%@",__func__,self);NSLog(@"error==%@",error.description);}/***  插屏广告将要展示回调*  详解: 插屏广告即将展示回调该函数*/
- (void)mt_unifiedInterstitialWillPresentScreen:(MTInterstitialAd *)interstitialAd
{NSLog(@"%s,%@",__func__,self);}/***  插屏广告视图展示成功回调*  详解: 插屏广告展示成功回调该函数*/
- (void)mt_unifiedInterstitialDidPresentScreen:(MTInterstitialAd *)interstitialAd
{NSLog(@"%s,%@",__func__,self);}/***  插屏广告展示结束回调*  详解: 插屏广告展示结束回调该函数*/
- (void)mt_unifiedInterstitialDidDismissScreen:(MTInterstitialAd *)interstitialAd
{self.statusLabel.text = @"插屏广告展示结束回调";NSLog(@"%s,%@",__func__,self);
}/***  详解:当点击应用下载或者广告调用系统程序打开时调用*/
- (void)mt_interstitialApplicationWillEnterBackground:(MTInterstitialAd *)interstitialAd
{NSLog(@"%s,%@",__func__,self);}/***  插屏广告曝光回调*/
- (void)mt_interstitialWillExposure:(MTInterstitialAd *)interstitialAd
{NSLog(@"%s,%@",__func__,self);}/***  插屏广告点击回调*/- (void)mt_unifiedInterstitialClicked:(MTInterstitialAd *)interstitialAd
{NSLog(@"%s,%@",__func__,self);self.statusLabel.text = @"插屏广告点击回调";}/***  点击插屏广告以后即将弹出全屏广告页*/
- (void)mt_unifiedInterstitialAdWillPresentFullScreenModal:(MTInterstitialAd *)interstitialAd
{NSLog(@"%s,%@",__func__,self);}/***  点击插屏广告以后弹出全屏广告页*/
- (void)mt_unifiedInterstitialAdDidPresentFullScreenModal:(MTInterstitialAd *)interstitialAd
{NSLog(@"%s,%@",__func__,self);}/***  全屏广告页将要关闭*/
- (void)mt_unifiedInterstitialAdWillDismissFullScreenModal:(MTInterstitialAd *)interstitialAd
{NSLog(@"%s,%@",__func__,self);}/***  全屏广告页被关闭*/
- (void)mt_unifiedInterstitialAdDidDismissFullScreenModal:(MTInterstitialAd *)interstitialAd
{NSLog(@"%s,%@",__func__,self);self.statusLabel.text = @"全屏广告页被关闭";}
/***  当点击下载应用时会调用系统程序打开其它App或者Appstore时回调*/
- (void)mt_unifiedInterstitialWillLeaveApplication:(MTInterstitialAd *)unifiedInterstitial{NSLog(@"%s,%@",__func__,self);
}/***  插屏广告曝光回调*/
- (void)mt_unifiedInterstitialWillExposure:(MTInterstitialAd *)unifiedInterstitial{NSLog(@"%s,%@",__func__,self);self.statusLabel.text = @"插屏广告曝光回调";}/*** 插屏视频广告 player 播放状态更新回调*/
- (void)mt_unifiedInterstitialAd:(MTInterstitialAd *)unifiedInterstitial playerStatusChanged:(MTMediaPlayerStatus)status{NSLog(@"%s,%@",__func__,self);
}/*** 插屏视频广告详情页 WillPresent 回调*/
- (void)mt_unifiedInterstitialAdViewWillPresentVideoVC:(MTInterstitialAd *)unifiedInterstitial{NSLog(@"%s,%@",__func__,self);
}/*** 插屏视频广告详情页 DidPresent 回调*/
- (void)mt_unifiedInterstitialAdViewDidPresentVideoVC:(MTInterstitialAd *)unifiedInterstitial{NSLog(@"%s,%@",__func__,self);
}/*** 插屏视频广告详情页 WillDismiss 回调*/
- (void)mt_unifiedInterstitialAdViewWillDismissVideoVC:(MTInterstitialAd *)unifiedInterstitial{NSLog(@"%s,%@",__func__,self);
}/*** 插屏视频广告详情页 DidDismiss 回调*/
- (void)mt_unifiedInterstitialAdViewDidDismissVideoVC:(MTInterstitialAd *)unifiedInterstitial{NSLog(@"%s,%@",__func__,self);
}

6、信息流广告接入方式

// 信息流对象初始化方式 -- 服务端竞价方式必须使用这种方式初始化
xxx = [[MTUnifiedNativeAd alloc] initWithPlacementId:@"广告位"];[self.unifiedNativeAd getBidingInfoResultWithCount:1];
// 信息流代理 遵守 <MTUnifiedNativeAdDelegate,MTUnifiedNativeAdViewDelegate,MTMediaViewDelegate>
xxx.delegate = self;
// 获取竞价信息  -- 传入期待的信息流数量
[xxx getBidingInfoResultWithCount:1];- (void)mt_unifiedNativeBid:(MTUnifiedNativeAd *)object bidInfo:(PRXServerBidingModel *)info {NSLog(@"信息流竞价成功");
}
// 正常模式下,加载广告方式
[self.unifiedNativeAd loadAdWithAdCount:1];
//服务端竞价方式, 加载广告
[xxx bidLoadAd];// 得到加载成功后 广告资源,或者 失败后的信息
- (void)mt_unifiedNativeAdLoaded:(NSArray<MTUnifiedNativeAdObject *> *)unifiedNativeAdDataObjects error:(NSError *)error
{if (unifiedNativeAdDataObjects.count > 0) {   }NSLog(@"error = %@",error);
}
// 由该sdk提供的广告资源得到竞价结果后请您调用如下代码上报
/**竞价成功的上报*/
- (void)sendBidPriceWin:(NSDictionary *_Nullable)winInfo;/**竞价失败的上报*/
- (void)sendBidPriceLoss:(NSDictionary *_Nullable)lossInfo;

其他代理方法

/**广告曝光回调@param unifiedNativeAdView MTUnifiedNativeAdView 实例*/
- (void)mt_unifiedNativeAdViewWillExpose:(MTUnifiedNativeAdView *)unifiedNativeAdView
{NSLog(@"XW曝光回调");}/**广告点击回调@param unifiedNativeAdView MTUnifiedNativeAdView 实例*/
- (void)mt_unifiedNativeAdViewDidClick:(MTUnifiedNativeAdView *)unifiedNativeAdView
{NSLog(@"XW点击回调");}/**广告详情页关闭回调@param unifiedNativeAdView MTUnifiedNativeAdView 实例*/
- (void)mt_unifiedNativeAdDetailViewClosed:(MTUnifiedNativeAdView *)unifiedNativeAdView
{NSLog(@"XW广告详情页关闭回调");}/**当点击应用下载或者广告调用系统程序打开时调用@param unifiedNativeAdView MTUnifiedNativeAdView 实例*/
- (void)mt_unifiedNativeAdViewApplicationWillEnterBackground:(MTUnifiedNativeAdView *)unifiedNativeAdView
{NSLog(@"XW");}/**广告详情页面即将展示回调@param unifiedNativeAdView MTUnifiedNativeAdView 实例*/
- (void)mt_unifiedNativeAdDetailViewWillPresentScreen:(MTUnifiedNativeAdView *)unifiedNativeAdView
{NSLog(@"XW广告详情页面即将展示回调");}/**视频广告播放状态更改回调@param unifiedNativeAdView 实例@param status 视频广告播放状态@param userInfo 视频广告信息*/
- (void)mt_unifiedNativeAdView:(MTUnifiedNativeAdView *)unifiedNativeAdView playerStatusChanged:(MTMediaPlayerStatus)status userInfo:(NSDictionary *)userInfo
{NSLog(@"");NSLog(@"视频广告状态变更");switch (status) {case MTMediaPlayerStatusError:NSLog(@"视频播放出错");//开发者可以在这里添加逻辑default:break;}}- (void)mt_mediaViewDidTapped:(MTMediaView *)mediaView{NSLog(@"mt_mediaViewDidTapped");
}/**播放完成回调@param mediaView 播放器实例*/
- (void)mt_mediaViewDidPlayFinished:(MTMediaView *)mediaView{NSLog(@"mt_mediaViewDidPlayFinished");
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/136045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

猫罐头怎么选?千万别错过这5款好吃放心的猫罐头推荐!

猫罐头不仅美味可口&#xff0c;而且营养丰富&#xff0c;是专为猫咪打造的美食。那么&#xff0c;猫罐头怎么选&#xff1f;作为一位经营宠物店7年的店长&#xff0c;我对猫猫的饮食都非常重视&#xff0c;也见证了很多猫咪品尝各种猫罐头的瞬间&#xff0c;现在我对各个品牌的…

0基础学习VR全景平台篇第119篇:利用蒙版航拍补天 - PS教程

上课&#xff01;全体起立~ 大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 嗨&#xff0c;大家好。欢迎收看蛙色VR系列教程之PS利用蒙版航拍补天。 我们之前已经教过大家如何进行航拍调色&#xff0c;不知道大家学的怎么样呢&#xff1f; 会不会发现&…

VS Code+DevChat助力非专业开发也能玩转代码编程

一、前言 偶然间网上瞎逛&#xff0c;看到DevChat 发布了一款 VS Code 插件&#xff0c;可提供类似chatgpt一样的“一站式 AI 辅助编程”体验。据说&#xff0c; DevChat 直接对接 GPT-4 还让免费用&#xff0c;目前免费注册收邮件即可获取key&#xff0c;再也不用麻烦的外部手…

Flink(二)【Flink 部署模式】

前言 今天是Flink学习的第二天&#xff0c;我的心情异常的复杂哈哈哈&#xff08;苦笑&#xff09;&#xff0c;学习上还是比较顺利的&#xff0c;感情上我并不擅长&#xff0c;所以心情波动大在所难免。害&#xff0c;至少还有学习让我不被各种糟糕琐碎的日常生活里的人和事所…

Python(四)字符串

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一波电子书籍资料&#xff0c;包含《Effective Java中文版 第2版》《深入JAVA虚拟机》&#xff0c;《重构改善既有代码设计》&#xff0c;《MySQL高性能-第3版》&…

Vue3指令

Vue 指令&#xff08;Directives&#xff09;是 Vue.js 的一项核心功能&#xff0c;它们可以在 HTML 模板中以 v- 开头的特殊属性形式使用&#xff0c;用于将响应式数据绑定到 DOM 元素上或在 DOM 元素上进行一些操作。 Vue 指令是带有前缀 v- 的特殊 HTML 属性&#xff0c;它赋…

c语言练习第10周(1~5)

根据公式求和 输入样例20输出样例 534.188884 #include<stdio.h> #include<math.h> int main() {int i,n;scanf("%d", &n);double s 0,t0;for (i 1; i < n; i) {t t sqrt(i);s s t;}printf("%.6lf", s);return 0; } 第一行输入…

获取AAC音频的ADTS固定头部信息

文章目录 前言一、AAC音频中的ADTS二、解析ADTS信息1.标准文档中介绍2.解析3.采样率索引和值4.下载AAC标准文档 前言 调试嵌入式设备中播放aac音频的过程中&#xff0c;了解了aac音频格式&#xff0c;记录在此&#xff0c;防止遗忘。 一、AAC音频中的ADTS ADTS&#xff08;Audi…

深度学习 opencv python 实现中国交通标志识别 计算机竞赛

文章目录 0 前言1 yolov5实现中国交通标志检测2.算法原理2.1 算法简介2.2网络架构2.3 关键代码 3 数据集处理3.1 VOC格式介绍3.2 将中国交通标志检测数据集CCTSDB数据转换成VOC数据格式3.3 手动标注数据集 4 模型训练5 实现效果5.1 视频效果 6 最后 0 前言 &#x1f525; 优质…

思谋科技进博首秀:工业多模态大模型IndustryGPT V1.0正式发布

大模型技术正在引领新一轮工业革命&#xff0c;但将其应用于工业制造&#xff0c;仍面临许多挑战&#xff0c;专业知识的缺乏是关键难点。11月5日&#xff0c;香港中文大学终身教授、思谋科技创始人兼董事长贾佳亚受邀参加第六届中国国际进口博览会暨虹桥国际经济论坛开幕式。虹…

物联网水表电子阀工作原理是怎样的?

随着科技的不断发展&#xff0c;物联网技术逐渐深入到我们的生活之中。作为智能家居的重要组成部分&#xff0c;物联网水表电子阀凭借其智能化、节能环保等优势&#xff0c;受到了越来越多用户的青睐。接下来&#xff0c;合众小编将来为大家介绍下物联网水表电子阀工作原理。 一…

2023云栖大会,Salesforce终敲开中国CRM市场

2015年被视为中国CRM SaaS元年&#xff0c;众多CRM SaaS创业公司和厂商在Salesforce的榜样作用下涌入了CRM SaaS赛道。在全球市场&#xff0c;Salesforce是CRM SaaS领域的领导厂商&#xff0c;连续多年占据了全球CRM SaaS第一大厂商地位。然而&#xff0c;Salesforce作为业务类…

leetcode刷题日记:100.Same Tree(相同的树)和101.Symmetric Tree(对称二叉树)

100.Same Tree(相同的树) 题目给了我们两棵树要我们判断这两颗树是否相同&#xff0c;我首先想到的就是前序序列与中序序列可以唯一确定一棵树&#xff0c;如果我能分别确定这两棵树的前序序列与中序序列&#xff0c;然后再分别比较它们的前序序列与中序序列就能得到这两棵树是…

3D可视化字母出现频率_vtkLinearExtrusionFilter

开发环境&#xff1a; Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example参考代码目的&#xff1a;学习与总结 demo解决问题&#xff1a;统计输入文本中字母出现的频率&#xff0c;不区分大小写&#xff0c;使用3D可是化方式进行显示&…

Figma转Sketch文件教程,超简单!

相信大家做设计的都多多少少听过一点Figma和Sktech&#xff0c;这2个设计软件是目前市场上很受欢迎的专业UI设计软件&#xff0c;在全球各地都有很多粉丝用户。但是相对来说&#xff0c;Figma与Sketch只支持iOS系统有所不同&#xff0c;Figma是一个在线设计软件&#xff0c;不限…

【网络协议】聊聊HTTPDNS如何工作的

传统 DNS 存在哪些问题&#xff1f; 域名缓存问题 我们知道CND会进行域名解析&#xff0c;但是由于本地会进行缓存对应的域名-ip地址&#xff0c;所以可能出现过期数据的情况。 域名转发问题 出口 NAT 问题 域名更新问题 解析延迟问题 因为在解析DNS的时候&#xff0c;需要进行…

【单片机基础小知识-如何通过指针来读写寄存器】

寄存器的本质就是内存&#xff0c;RAM&#xff0c;而指针是可以对内存进行操作的&#xff0c;因此可以通过指针来读写寄存器。 如何读取以下一片地址&#xff1a; 步骤1、首地址 结构体&#xff0c;它所占用的内存空间大小与它内部成员有关。 构造一个28字节的类型 type…

数据结构-单链表-力扣题

移除链表元素 题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;和前面学的单链表的中间删除数据一样&#xff0c;使要被删除节点的前一个节点指向下要被删除节点的下一个节点&#xff0c;然后把要被删除的节点free掉。 具体实现过程&#xff1a;先…

0成本LLM微调上手项目,⚡️一步一步使用colab训练法律LLM,基于microsoft/phi-1_5,包含lora微调,全参微调

项目地址 &#xff1a;https://github.com/billvsme/train_law_llm ✏️LLM微调上手项目 一步一步使用Colab训练法律LLM&#xff0c;基于microsoft/phi-1_5 。通过本项目你可以0成本手动了解微调LLM。 nameColabDatasets自我认知lora-SFT微调train_self_cognition.ipynbsel…

Spring Boot自动配置原理、实战、手撕自动装配源码

Spring Boot自动配置原理 相比较于传统的 Spring 应用&#xff0c;搭建一个 SpringBoot 应用&#xff0c;我们只需要引入一个注解 SpringBootApplication&#xff0c;就可以成功运行。 前面四个不用说&#xff0c;是定义一个注解所必须的&#xff0c;关键就在于后面三个注解&a…