聚橙ADX SDK 文档聚橙ADX SDK 文档
首页
Android SDK
iOS SDK
Flutter SDK
H5接入
服务端API
首页
Android SDK
iOS SDK
Flutter SDK
H5接入
服务端API
  • iOS SDK

    • iOS SDK

iOS SDK

一、SDK接入配置

1. cocoapod引入

在podfile文件中添加:


#核心库,需要指定对应的版本号
pod 'JuChengAds', '5.1.1'

2. Other Linker Flags

在Xcode中选择项目的Targets->Build Settings,配置Other Linker Flags 增加 -ObjC。

3. 添加HTTP权限

  • 工程plist文件设置,点击右边的information Property List后边的 "+" 展开

添加 App Transport Security Settings,先点击左侧展开箭头,再点右侧加号,Allow Arbitrary Loads 选项自动加入,修改值为 YES。 SDK API 已经全部支持HTTPS,但是广告主素材存在非HTTPS情况。

注意:Allow Arbitrary Loads in Web Content key存在时会忽略Allow Arbitrary Loads的设置(iOS10之后)


<key>NSAppTransportSecurity</key>
<dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
</dict>

4. 添加定位权限

该权限非必须,sdk不包含任何请求定位权限的代码,也不会主动请求定位权限。

工程info.plist文件设置,点击右边的information Property List后边的 "+" 展开 添加Privacy - Location When In Use Usage Description。

5. 运行环境配置

  • 支持系统 iOS 11.0 及以上;
  • SDK编译环境 Xcode 12.0 + ;
  • 支持架构:x86-64, armv7, arm64

6. 添加依赖库

工程需要在TARGETS -> Build Phases中找到Link Binary With Libraries,点击“+”,依次添加下列依赖库

  • CoreML.framework
  • libc++abi.tbd
  • StoreKit.framework
  • CFNetwork.framework
  • CoreMedia.framework
  • AdSupport.framework
  • CoreMotion.framework
  • MediaPlayer.framework
  • CoreGraphics.framework
  • AVFoundation.framework
  • CoreLocation.framework
  • CoreTelephony.framework
  • SafariServices.framework
  • MobileCoreServices.framework
  • WebKit.framework
  • SystemConfiguration.framework
  • ImageIO.framework
  • AudioToolbox.framework
  • libc++.tbd
  • libz.tbd
  • libbz2.tbd
  • libsqlite3.tbd

二、SDK初始化说明

1. SDK初始化

JuChengAds 类是整个 SDK 设置的入口和接口。 初始化代码需尽早执行,最好写在APP启动回调里:


    //引入聚合SDK库
	#import <JuChengAds/JuChengAdsSDK.h>
	
	- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
      // SDK初始化接口
    JuChengAds* juChengAds = [JuChengAds shareInstance];
	 // 是否开启调试模式、默认为false,不开启
     [juChengAds enableDebugMode:true];
	 [juChengAds initialize:@"appId"];
    }

2. 启动时预加载广告(非必须)

激励视频、半屏插屏、全屏插屏可以在启动时预加载,加快第一次的展示速度。 参考代码如下:


    [juChengAds preloadAds:@"激励视频广告位id" interstitialId:@"插屏广告位id" fullScreenId:@"全屏广告位id" userId:@"用户id"];

三、开屏广告

1. 主要API

JuChengRequest

属性名类型属性介绍
userIdNSString【可选】,媒体用户ID。
placementIdNSString【必传】,广告位ID。
optionsNSDictionary<NSString *, NSString *>【可选】,服务端激励回传时,扩展参数。

JuChengSplash

方法名方法介绍
- (instancetype)initWithRequest:(JuChengRequest *)request初始化splash ad对象。参数说明:request 广告请求对象。
- (BOOL)isAdReady返回广告是否可展示。
-(void)loadAndShowAd广告发起请求并自动展示。
- (void)loadAd发起拉取广告请求,只拉取不展示。
- (void)showAd:(UIWindow *)window展示广告。

JuChengSplashAdDelegate

方法名方法介绍
-(void) onSplashAdShowed广告曝光回调。
-(void) onSplashAdLoaded:(NSString *) placementId广告加载成功回调。参数说明:placementId 广告为id。
-(void) onSplashAdLoadFailed:(NSString *) placementId error:(NSError *)error广告加载失败回调。参数说明:placementId 广告为id。error 具体错误信息。
-(void) onSplashAdClicked广告点击回调。
-(void) onSplashAdClosed广告关闭回调。
-(void) onSplashAdSkiped广告跳过回调。

2. 开屏广告加载并展示


    @property (nonatomic, strong) JuChengSplash *splash;
	 
	 
	 JuChengRequest *request = [JuChengRequest request];
     request.placementId = @"广告位id";
     self.splash = [[JuChengSplash alloc] initWithRequest:request];
     self.splash.delegate = self;
     self.splash.rootViewController = self;
	 
	 [self.splash loadAndShowAd];

四、激励视频广告

1. 主要API

JuChengRequest

属性名类型属性介绍
userIdNSString【可选】,媒体用户ID。
placementIdNSString【必传】,广告位ID。
optionsNSDictionary<NSString *, NSString *>【可选】,服务端激励回传时,扩展参数。

JuChengReward

方法名方法介绍
- (instancetype)initWithRequest:(JuChengRequest *)request初始化reward ad对象。参数说明:request 广告请求对象。
- (BOOL)isAdReady返回广告是否可展示。
- (void)loadAd发起拉取广告请求,只拉取不展示。
- (void)showAd:(UIViewController *)rootViewController options:(NSDictionary<NSString *, NSString *> * _Nullable)options展示广告。参数说明:rootViewController 显示广告的容器。options 激励视频广告获得奖励时,服务器回调的扩展参数。

JuChengRewardAdDelegate

方法名方法介绍
-(void) onRewardAdLoaded:(NSString *) placementId广告加载成功回调。参数说明:placementId 广告位id。
-(void) onRewardAdLoadFailed:(NSString *) placementId error:(NSError *)error广告加载失败回调。参数说明:placementId 广告为id。error 具体错误信息。
-(void) onRewardAdPlayStarted广告曝光回调。
-(void) onRewardAdPlayFinished广告播放完成回调。
-(void) onRewardEarned:(NSString *_Nonnull) transId获得奖励。参数说明:transId 流水号。
-(void) onRewardAdClicked广告点击回调。
-(void) onRewardAdClosed广告关闭回调。
-(void) onRewardAdSkiped广告跳过回调。
-(void) onRewardAdPlayFailed:(NSString *) placementId error:(NSError *)error广告激播放失败回调。参数说明:placementId 广告位id。error 具体错误信息。

2. 广告加载


    @property (nonatomic, strong) JuChengReward *rewardVideoAd;
		
		
		JuChengRequest *request = [JuChengRequest request];
         request.userId = :@"用户id";
         request.placementId = @"广告位id";
         request.options = @{@"key1":@"value1"};
         self.rewardVideoAd = [[JuChengReward alloc] initWithRequest:request];
         self.rewardVideoAd.delegate = self;
         [self.rewardVideoAd loadAd];

3. 广告展示


     // 在激励视频广告加载成功回调里执行showAd,需要先判断广告状态是否ready
	if (self.rewardVideoAd.isAdReady) {
	[self.rewardVideoAd showAd:self options:nil];
	}

五、信息流广告

1. 主要API

JuChengRequest

属性名类型属性介绍
userIdNSString【可选】,媒体用户ID。
placementIdNSString【必传】,广告位ID。
optionsNSDictionary<NSString *, NSString *>【可选】,服务端激励回传时,扩展参数。

JuChengNativeAdManager

方法名方法介绍
- (instancetype)initWithRequest:(JuChengRequest *)request初始化方法。参数说明:request(广告请求对象)。
- (void)loadAdDataWithCount:(NSInteger)count请求广告。参数说明:count (一次请求广告数量,数值区间[1,3])。
- (NSArray<JuChengNativeAd *> * _Nullable)getAllNativeAds广告拉取成功后,获取广告集合。

JuChengNativeAdManagerDelegate

方法名方法介绍
- (void)onNativeAdLoaded:(JuChengNativeAdManager *)nativeAdsManager广告成功加载。
- (void)onNativeAdLoadFailed:(NSError *)error;广告加载失败。参数说明:error(报错信息)。

JuChengNativeAdView

方法名方法介绍
+ (instancetype) initAdView;初始化方法。
- (void)refreshData:(JuChengNativeAd *)nativeAd刷新广告数据
- (UIView *)getView获取View

JuChengNativeAdViewDelegate

方法名方法介绍
- (void)nativeExpressAdViewRenderSuccess:(JuChengNativeAdView *)nativeExpressAdView广告渲染成功
- (void)nativeExpressAdViewRenderFail:(NSError *)error广告渲染失败。
- (void)nativeAdViewDidClick广告点击回调
- (void)dislikeWithReason:(NSString *) reasondislike弹窗选择后的回调,有穿山甲广告源时,必须在该方法里移除广告

2. 广告加载


    JuChengRequest *request = [JuChengRequest request];
    request.placementId = @"广告位id";
    request.userId = @"用户id"
    if (self.nativeAdManager == nil) {
    self.nativeAdManager = [[JuChengNativeAdManager alloc] initWithRequest:request];
    }
    self.nativeAdManager.delegate = self;
    self.nativeAdManager.adSize = CGSizeMake(320, 150);
    [self.nativeAdManager loadAdDataWithCount:1];

3. 广告展示


    self.adView = [JuChengNativeAdView initAdView];
	UIViewController *rootViewController = [JuChengUtil getCurrentController];
    [adContainer addSubview:self.adView.getView];
	// 调整广告view的frame
    self.adView.frame = adContainer.bounds;
    self.adView.delegate = self;
    self.adView.viewController = rootViewController;
    [self.adView refreshData:self.nativeAd];

4. 注意事项

穿山甲信息流关闭时,需要在- (void)dislikeWithReason:(NSString *) reason回调方法里,主动remove掉广告,否则有些广告会无法关闭,影响收益。

六、Banner广告

1. 主要API

JuChengRequest

属性名类型属性介绍
userIdNSString【可选】,媒体用户ID。
placementIdNSString【必传】,广告位ID。
optionsNSDictionary<NSString *, NSString *>【可选】,服务端激励回传时,扩展参数。

JuChengBanner

方法名方法介绍
- (instancetype)initWithRequest:(JuChengRequest *)request构造方法。参数说明:request(广告请求对象)
- (instancetype)initWithRequest:(JuChengRequest *)request expectSize:(CGSize)expectSize构造方法。参数说明:request(广告请求对象), expectSize banner尺寸
- (void)loadAd加载广告
- (BOOL)isAdReady广告是否有效
- (UIView *)getView获取广告view

JuChengBannerDelegate

方法名方法介绍
- (void)onBannerAdLoaded:(JuChengBanner *)bannerAdView广告成功加载。参数说明:bannerAdView(banner对象)。
- (void)onBannerAdLoadFailed:(NSError *)error广告加载失败。参数说明:error(报错信息)
- (void)onBannerAdClicked广告点击回调

2. 广告加载


     JuChengRequest *request = [JuChengRequest request];
	request.placementId = @"广告位id";
	JuChengBanner *bannerView = [[JuChengBanner alloc] initWithRequest:request];
	bannerView.delegate = self;
	bannerView.viewController = self;
	[bannerView loadAd];

3. 广告展示


    //在加载成功的回调方法(onBannerAdLoaded)里可以设置广告view的frame
	CGSize adSize = bannerAdView.adSize;
	 self.bannerView.getView.frame = CGRectMake(0, 0, adSize.width, adSize.height);
	
	// 在显示的时候把广告view添加到显示的容器中
    [self.view addSubview: self.bannerView.getView];

七、插屏广告

1. 主要API

JuChengRequest

属性名类型属性介绍
userIdNSString【可选】,媒体用户ID。
placementIdNSString【必传】,广告位ID。
optionsNSDictionary<NSString *, NSString *>【可选】,服务端激励回传时,扩展参数。

JuChengInterstitial

方法名方法介绍
- (instancetype)initWithRequest:(JuChengRequest *)request;初始化 ad对象。参数说明:request 广告请求对象。
- (BOOL)isAdReady返回广告是否可展示。
- (void)loadAd发起拉取广告请求,只拉取不展示。
- (void)showAd:(UIViewController *)rootViewController展示广告。

JuChengInterstitialAdDelegate

方法名方法介绍
-(void) onInterstitialAdLoaded:(NSString *) placementId广告加载成功回调。参数说明:placementId 广告为id。
-(void) onInterstitialAdLoadFailed:(NSString *) placementId error:(NSError *)error广告加载失败回调。参数说明:placementId 广告为id。error 具体错误信息。
-(void) onInterstitialAdPlayStarted广告曝光回调。
-(void) onInterstitialAdPlayFinished广告播放完成回调。
-(void) onInterstitialAdClicked广告点击回调。
-(void) onInterstitialAdClosed广告关闭回调。
-(void) onInterstitialAdSkiped广告跳过回调。

2. 广告加载


    @property (nonatomic, strong) JuChengInterstitial *intersititialAd;
	 
	 JuChengRequest *request = [JuChengRequest request];
	 request.placementId = @"广告位id";
     self.intersititialAd = [[JuChengInterstitial alloc] initWithRequest:request];
     self.intersititialAd.delegate = self;
	 // 加载广告
      [self.intersititialAd loadAd];

3. 广告展示


    // 在插屏广告加载成功回调里执行showAd,需要先判断广告状态是否ready
	if (self.intersititialAd.isAdReady) {
	[self.intersititialAd showAd:self];
	}