LUYSDK_iOS使用文档

接入前创建好应用ID和广告位ID

SDK 导入方式

1.cocoapods方式

pod 'LUYSDK'

2.手动方式

1.下载获取[LUYSDK_Loc_版本号]文件后直接将【LUYSDK】(LUYSDK包含的内部文件夹LUYSDK,LUYRelyLib)整个文件夹拖入到工程即可。

*升级SDK的同学必须同时更新framework和bundle文件,否则可能出现部分页面无法展示的问题.

*拖入完请确保Copy Bundle Resources中有BUAdSDK.bundle否则可能出现icon图片加载不出来的情况。

2.导入系统依赖库
需要引入的系统库
找到Link Binary With Libraries,点击“+”,依次添加下列依赖库

系统库名称
StoreKit.framework
MobileCoreServices.framework
WebKit.framework
MediaPlayer.framework
CoreMedia.framework
CoreLocation.framework
AVFoundation.framework
CoreTelephony.framework
SystemConfiguration.framework
AdSupport.framework
CoreMotion.framework
Accelerate.framework
libresolv.9.tbd
libc++.tbd
libz.tbd
libsqlite3.tbd
libbz2.tbd
libxml2.tbd
QuartzCore.framework
Security.framework
Security.framework
libc++abi.tbd
AppTrackingTransparency.framework
DeviceCheck.framework

3.Build设置

项目工程中添加权限

  1. ⼯程plist⽂件设置,点击右边的information Property List后边的 "+" 展开
  2. 添加 App Transport Security Settings,先点击左侧展开箭头,再点右侧加号,Allow Arbitrary Loads 选项⾃动加⼊
<key>NSAppTransportSecurity</key>
  <dict>
     <key>NSAllowsArbitraryLoads</key>
   <true/>
</dict>

关于 iOS 14 AppTrackingTransparency

从iOS 14.5开始,只有在获得用户明确许可的前提下,应用才可以访问用户的IDFA数据并向用户投放定向广告。在应用程序调用 App Tracking Transparency 框架向最终用户提出应用程序跟踪授权请求之前,IDFA将不可用。如果某个应用未提出此请求,则读取到的IDFA将返回全为0的字符串。

1.获取 ATT 权限,请更新您的 Info.plist,添加 NSUserTrackingUsageDescription 字段和自定义文案描述。代码示例:

<key>NSUserTrackingUsageDescription</key>
<string>需要获取您设备的广告标识符,以为您提供更好的广告体验</string>

2.向用户申请权限时,请调用 requestTrackingAuthorizationWithCompletionHandler:方法。我们建议您申请权限后再请求广告,以便广告能准确的获得用户授权状态。

#import <AppTrackingTransparency/AppTrackingTransparency.h>
#import <AdSupport/AdSupport.h>
- (void)requestIDFA {
  [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
    // [self loadAd];
  }];
}

iOS 15.0 中,如果是在启动方法中调用授权,不会弹出授权提示框,可以参考:https://juejin.cn/post/7018126149553225741

SKAdNetwork跟踪转化

支持了 Apple 官方的 SKAdNetwork 框架的渠道,会在获取不到IDFA的时候,正常获取转化。为了实现这个功能,需要在info.plist添加对应的SKAdNetworkItems。
部分常用 SKAdNetworkIdentifier:

SKAdNetworkIdentifier
238da6jt44.skadnetwork
x2jnk7ly8j.skadnetwork
22mmun2rn5.skadnetwor
f7s53z58qe.skadnetwork
r3y5dwb26t.skadnetwork
58922nb4gd.skadnetwork
f7s53z58qe.skadnetwork
27a282f54n.skadnetwork
kbd757ywx3.skadnetwork
mls7yz5dvl.skadnetwork
4fzdc2evr5.skadnetwork
4pfyvq9l8r.skadnetwork
ydx93a7ass.skadnetwork
cg4yq2srnc.skadnetwork
p78axxw29g.skadnetwork

示例:

<key>SKAdNetworkItems</key>
  <array>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>238da6jt44.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>x2jnk7ly8j.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>22mmun2rn5.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>f7s53z58qe.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>r3y5dwb26t.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>58922nb4gd.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>f7s53z58qe.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>27a282f54n.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>kbd757ywx3.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>mls7yz5dvl.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>4fzdc2evr5.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>4pfyvq9l8r.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>ydx93a7ass.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>cg4yq2srnc.skadnetwork</string>
    </dict>
    <dict>
        <key>SKAdNetworkIdentifier</key>
        <string>p78axxw29g.skadnetwork</string>
    </dict>
  </array>

一、广告SDK的初始化

1.Objective-C

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [LUYSDKConfig registerAppId:@"sjm_ios123"];
  return YES;
}

2.Swift

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    LUYSDKConfig.registerAppId("sjm_ios123")
    return true
}

二、相关广告接入方式说明

广告接入具体示范可以参照 LUYSDKAdDemo

开屏广告

/// 开屏广告加载成功
- (void)luy_splashAdDidLoad:(LUYSplashAd *)splashAd;

///开屏广告展示
- (void)luy_splashAdDidShow:(LUYSplashAd *)splashAd;

///开屏广告点击回调
- (void)luy_splashAdClicked:(LUYSplashAd *)splashAd;

///开屏广告关闭回调
- (void)luy_splashAdClosed:(LUYSplashAd *)splashAd;

///开屏广告倒记时结束
- (void)luy_splashAdCountdownToZero:(LUYSplashAd*)splashAd;

///开屏广告错误
- (void)luy_splashAdLoadFail:(LUYSplashAd *)splashAd error:(NSError *)error;

广告加载

-(void)loadAdWithAdId:(NSString *)adId{
    _splashAd = [[LUYSplashAd alloc]initWithSlotID:adId];
    _splashAd.delegate = self;
    //广告超时时间设置
    _splashAd.tolerateTimeout = 5;
    //自定义底部视图,可以通过 customBottomView 赋值处理
    UIView *bottomView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, ScreenWidth, 50)];
    bottomView.backgroundColor = [UIColor redColor];
    _splashAd.customBottomView = bottomView;
    [_splashAd loadAd];
}

广告展示

// 展示广告需在广告加载成功后处理
- (void)luy_splashAdDidLoad:(LUYSplashAd *)splashAd {
    [_splashAd showAdInWindow:[UIApplication sharedApplication].keyWindow];
}

激励视频

///激励视频广告加载成功
- (void)luy_rewardVideoAdDidLoad:(LUYRewardVideoAd *)rewardedVideoAd;
///激励视频广告下载成功
- (void)luy_rewardVideoAdVideoDidLoad:(LUYRewardVideoAd *)rewardedVideoAd;
///激励视频广告展示
- (void)luy_rewardVideoAdDidShow:(LUYRewardVideoAd *)rewardedVideoAd;
///激励视频广告关闭
- (void)luy_rewardVideoAdClosed:(LUYRewardVideoAd *)rewardedVideoAd;
///激励视频广告点击
- (void)luy_rewardVideoAdDidClick:(LUYRewardVideoAd *)rewardedVideoAd;
///激励视频广告触发奖励
- (void)luy_rewardVideoAdDidRewardEffective:(LUYRewardVideoAd *)rewardedVideoAd;
///激励视频广告播放完成
- (void)luy_rewardVideoAdDidPlayFinish:(LUYRewardVideoAd *)rewardedVideoAd;
///激励视频广告错误
- (void)luy_rewardVideoAdFail:(LUYRewardVideoAd *)rewardedVideoAd
                        error:(NSError *)error;

广告加载

-(void)loadAdWithAdId:(NSString *)adId{
    self.rewardVideoAd = [[LUYRewardVideoAd alloc] initWithSlotID:adId userId:@"userID"];
    self.rewardVideoAd.delegate = self;
    [self.rewardVideoAd loadAd];
}

广告展示

/**展示广告需在广告视频加载成功后的处理
 * 注意:是 luy_rewardVideoAdVideoDidLoad: 回调中
 */
- (void)luy_rewardVideoAdVideoDidLoad:(nonnull LUYRewardVideoAd *)rewardedVideoAd {
    [self addNormalLogWithText:[NSString stringWithFormat:@"%s",__func__]];
    [self.rewardVideoAd showAdInViewController:self];
}

插屏广告

///插屏广告加载成功
- (void)luy_interstitialAdDidLoad:(LUYInterstitialAd *)interstitialAd;
///插屏广告加载失败
- (void)luy_interstitialAdLoadFail:(LUYInterstitialAd *)interstitialAd
                               error:(NSError * __nullable)error;
///插屏广告展示成功
- (void)luy_interstitialAdDidShow:(LUYInterstitialAd *)interstitialAd;
///插屏广告点击
- (void)luy_interstitialAdDidClick:(LUYInterstitialAd *)interstitialAd;
///插屏广告关闭
- (void)luy_interstitialAdClosed:(LUYInterstitialAd *)interstitialAd;
///插屏广告详情页即将打开
- (void)luy_interstitialAdWillPresentFullScreen:(LUYInterstitialAd *)interstitialAd;
///插屏广告详情页即将关闭
- (void)luy_interstitialAdWillDismissFullScreen:(LUYInterstitialAd *)interstitialAd;
///插屏广告错误
- (void)luy_interstitialAdFail:(LUYInterstitialAd *)interstitialAd
                           error:(NSError * __nullable)error;

广告加载

-(void)loadAdWithAdId:(NSString *)adId{
    self.interstitialAd = [[LUYInterstitialAd alloc]initWithSlotID:adId];
    self.interstitialAd.delegate = self;
    [self.interstitialAd loadAd];
}

广告展示

//插屏广告加载成功后展示
- (void)luy_interstitialAdDidLoad:(LUYInterstitialAd *)interstitialAd {
    [self.interstitialAd showAdInViewController:self];
}

模板信息流

信息流广告代理分两个部分,分别是广告管理和广告
广告管理 :LUYNativeExpressAdManager

//信息流广告加载成功
- (void)luy_nativeExpressAdDidLoad:(LUYNativeExpressAdManager *)nativeExpressAd
                nativeExpressAds:(NSArray<LUYNativeExpressAd *> *_Nullable)nativeExpressAds;

///信息流广告加载失败
- (void)luy_nativeExpressAdLoadFail:(LUYNativeExpressAdManager *)nativeExpressAd
                              error:(NSError *_Nullable)error;

广告 :LUYNativeExpressAd

/// 广告渲染成功
- (void)luy_nativeExpressAdRenderSuccess:(LUYNativeExpressAd *)expressAd;

/// 广告渲染失败
- (void)luy_nativeExpressAdRenderFail:(LUYNativeExpressAd *)expressAd;

/// 广告即将展示
- (void)luy_nativeExpressAdWillShow:(LUYNativeExpressAd *)expressAd;

///广告点击
- (void)luy_nativeExpressAdDidClick:(LUYNativeExpressAd *)expressAd;

///关闭该广告
- (void)luy_nativeExpressAdDislike:(LUYNativeExpressAd *)expressAd;

///展示广告详情页
- (void)luy_nativeExpressAdDidPresentFullScreen:(LUYNativeExpressAd *)expressAd;

///关闭广告详情页
- (void)luy_nativeExpressAdDidDismissFullScreen:(LUYNativeExpressAd *)expressAd;

广告加载

//使用 LUYNativeExpressAdManager 获取要展示的广告视图
-(void)loadAd{
    _feedAd = [[LUYNativeExpressAdManager alloc] initWithSlotID:self.slotID adSize:CGSizeMake(self.tableView.frame.size.width, 0)];
    _feedAd.delegate = self;
    [_feedAd loadAdWithCount:3];
}

//在广告请求成功后将广告处理后放入数组管理
- (void)luy_nativeExpressAdDidLoad:(LUYNativeExpressAdManager *)nativeExpressAd
                  nativeExpressAds:(NSArray<LUYNativeExpressAd *> *_Nullable)nativeExpressAds {
    NSMutableArray *adArray = [NSMutableArray array];
    for (int i = 0; i<nativeExpressAds.count; i++) {
        LUYNativeExpressAd *feedAd = nativeExpressAds[i];
        feedAd.delegate = self;
        //处理广告的 ViewController
        feedAd.rootViewController = self;
        //广告渲染
        [feedAd render];
        [adArray addObject:feedAd];
    }
    self.adArray = adArray;
}


广告展示

//将广告视图添加到需要展示的广告容器中
- (void)refreshWithAd:(LUYNativeExpressAd *)expressAd {
   //为了防止重复添加可以先移除下
  [self.contentView removeAllSubViews];
  //添加广告
  [self.contentView addSubview:expressAd.nativeExpressAdView];
  //处理约束
  [expressAd.nativeExpressAdView mas_remakeConstraints:^(MASConstraintMaker *make) {
      make.edges.equalTo(@0);
  }];
}

/// 在广告渲染成功的回调中添加广告
- (void)luy_nativeExpressAdRenderSuccess:(LUYNativeExpressAd *)expressAd {
  //1.[self.tableView reloadData];//如:将广告放在tableView 的 cell 中

  //2.[self refreshWithAd:expressAd]; //如:直接添加到视图中
}

///banner 广告加载成功
- (void)luy_bannerAdDidLoad:(LUYBannerView *)bannerView;
///banner 广告加载失败
- (void)luy_bannerAdLoadFail:(LUYBannerView *)bannerView
                   error:(NSError *_Nullable)error;
///banner 广告展示成功
- (void)luy_bannerAdWillExpose:(LUYBannerView *)bannerView;

///banner 广告关闭回调
- (void)luy_bannerAdWillClose:(LUYBannerView *)bannerView;

///banner 广告点击回调
- (void)luy_bannerAdDidClick:(LUYBannerView *)bannerView;

///banner广告即将关闭详情页
- (void)luy_bannerAdWillDismissFullScreen:(LUYBannerView *)bannerView;
 

广告加载

-(void)loadAdWithAdId:(NSString *)adId{
    if (_bannerView) {
        [_bannerView removeFromSuperview];
        _bannerView = nil;
    }
    CGFloat width = self.view.frame.size.width;
    self.bannerView = [[LUYBannerView alloc] initWithSlotID:adId viewController:self adSize:CGSizeMake(width, 200) autoInterval:0];
    self.bannerView.delegate = self;
    [self.bannerView loadAdAndShow];
    
}

广告展示

///banner 广告加载成功后展示处理
- (void)luy_bannerAdDidLoad:(LUYBannerView *)bannerView {
    if(bannerView && ![self.view.subviews containsObject:bannerView]){
        CGFloat y = self.view.frame.size.height -200-SafeBottomMargin-50;
        CGRect frame = CGRectMake(0, y, self.view.frame.size.width, 200);
        self.bannerView.frame = frame;
        [self.view addSubview:self.bannerView];
    }
}

全屏视频广告

///全屏视频广告加载成功
- (void)luy_fullScreenVideoAdDidLoad:(LUYFullScreenVideoAd *)fullScreenVideoAd;
///全屏视频广告加载失败
- (void)luy_fullScreenVideoAdLoadFail:(LUYFullScreenVideoAd *)fullScreenVideoAd
                                error:(NSError * __nullable)error;
///全屏视频广告展示成功
- (void)luy_fullScreenVideoAdDidShow:(LUYFullScreenVideoAd *)fullScreenVideoAd;
///全屏视频广告点击
- (void)luy_fullScreenVideoAdDidClick:(LUYFullScreenVideoAd *)fullScreenVideoAd;
///全屏视频广告关闭
- (void)luy_fullScreenVideoAdClosed:(LUYFullScreenVideoAd *)fullScreenVideoAd;
///全屏视频广告详情页即将打开
- (void)luy_fullScreenVideoAdWillPresentFullScreen:(LUYFullScreenVideoAd *)fullScreenVideoAd;
///全屏视频广告详情页即将关闭
- (void)luy_fullScreenVideoAdWillDismissFullScreen:(LUYFullScreenVideoAd *)fullScreenVideoAd;
///全屏视频广告错误
- (void)luy_fullScreenVideoAdFail:(LUYFullScreenVideoAd *)fullScreenVideoAd
                            error:(NSError * __nullable)error;

广告加载

-(void)loadAdWithAdId:(NSString *)adId{
    self.fullScreenVideoAd = [[LUYFullScreenVideoAd alloc]initWithSlotID:adId];
    self.fullScreenVideoAd.delegate = self;
    [self.fullScreenVideoAd loadAd];
}

广告展示

///全屏视频广告加载成功
- (void)luy_fullScreenVideoAdDidLoad:(LUYFullScreenVideoAd *)fullScreenVideoAd {
    [self.fullScreenVideoAd showAdInViewController:self];
}

视频流广告

/**
 * 广告加载成功
 */
-(void)luy_feedVideoManagerLoadSuccess:(LUYFeedVideoManager *)manager
                                 views:(NSArray<__kindof LUYFeedVideoAdView *> *)views;

/**
* 广告加载失败
*/
-(void)luy_feedVideoManagerLoadFail:(LUYFeedVideoManager *)manager
                              error:(NSError *_Nullable)error;

///广告渲染成功
-(void)luy_feedVideoAdViewRenderSuccess:(LUYFeedVideoAdView *)adView;

///广告渲染失败
-(void)luy_feedVideoAdViewRenderFail:(LUYFeedVideoAdView *)adView
                               error:(NSError *_Nullable)error;

///广告曝光回调
-(void)luy_feedVideoAdViewWillShow:(LUYFeedVideoAdView *)adView;

///视频广告播放状态更改回调
-(void)luy_feedVideoAdViewStateDidChanged:(LUYFeedVideoAdView *)adView
                              playerState:(LUYMediaPlayerStatus)playerState;

///视频广告播放完毕
-(void)luy_feedVideoAdViewPlayerDidPlayFinish:(LUYFeedVideoAdView *)adView;

/// 广告点击回调
-(void)luy_feedVideoAdViewDidClick:(LUYFeedVideoAdView *)adView;

///广告详情页面即将展示回调
-(void)luy_feedVideoAdViewDetailViewWillPresentScreen:(LUYFeedVideoAdView*)adView;

///广告详情页关闭回调
-(void)luy_feedVideoAdViewDetailViewClosed:(LUYFeedVideoAdView*)adView;

广告加载

- (void)loadAdData {
    self.adProvider = [[LUYFeedVideoManager alloc] initWithSlotID:self.slotId];
    self.adProvider.delegate = self;
    self.adProvider.adSize = self.tableView.bounds.size;
    [self.adProvider loadAdWithCount:4];
}


//在广告请求成功后将广告处理后放入数组管理
-(void)luy_feedVideoManagerLoadSuccess:(LUYFeedVideoManager *)manager
                                 views:(NSArray<__kindof LUYFeedVideoAdView *> *)views {
    if (views.count) {
        NSMutableArray *adArray = [NSMutableArray array];
        for (LUYFeedVideoAdView *adView in views) {
            adView.rootViewController = self;
            // important: 此处会进行WKWebview的渲染,建议一次最多预加载三个广告,如果超过3个会很大概率导致WKWebview渲染失败。
            [adView render];
            [adArray addObject:adView];
        }
        self.adArray = adArray;   
    }
}


广告展示

//将广告视图添加到需要展示的广告容器中
- (void)refreshWithAd:(LUYFeedVideoAdView *)adView {
   //为了防止重复添加可以先移除下
  [self.contentView removeAllSubViews];
  //添加广告
  [self.contentView addSubview:adView];
  //处理约束
  [adView mas_remakeConstraints:^(MASConstraintMaker *make) {
      make.edges.equalTo(@0);
  }];
}


视频内容

1.内容展示状态代理 - LUYContentStateDelegate

/**
* 内容展示状态代理
*/
@protocol LUYContentStateDelegate <NSObject>
/**
* 视频内容加载错误
* @param error     错误原因
*/
- (void)luy_contentLoadFailed:(LUYContentVideo *)content error:(NSError *)error;

///内容展示
- (void)luy_contentDidFullDisplay:(LUYContentVideo *)content;

/// 内容隐藏
- (void)luy_contentDidEndDisplay:(LUYContentVideo *)content;

///内容暂停显示,ViewController disappear或者Application resign active
- (void)luy_contentDidPause:(LUYContentVideo *)content;

///内容恢复显示,ViewController appear或者Application become active
- (void)luy_contentDidResume:(LUYContentVideo *)content;

@end

2.视频播放状态代理 - LUYVideoStateDelegate

/**
 * 视频播放状态代理
 */
@protocol LUYVideoStateDelegate <NSObject>
///视频开始播放
- (void)luy_videoDidStartPlay:(LUYContentVideo *)videoContent;

///视频暂停播放
- (void)luy_videoDidPause:(LUYContentVideo *)videoContent;

/// 视频恢复播放
- (void)luy_videoDidResume:(LUYContentVideo *)videoContent;

/**
* 视频停止播放
* @param finished     是否播放完成
*/
- (void)luy_videoDidEndPlay:(LUYContentVideo *)videoContent
                 isFinished:(BOOL)finished;
/**
* 视频播放失败
* @param error        失败原因
*/
- (void)luy_videoDidFailedToPlay:(LUYContentVideo *)videoContent
                       withError:(NSError *)error;

@end
- (void)viewDidLoad {
    [super viewDidLoad];
    //创建视频内容对象
    self.contentVideo = [[LUYContentVideo alloc]initWithSlotID:LUYContentVideoId];
    self.contentVideo.stateDelegate = self;
    self.contentVideo.videoStateDelegate = self;
    //处理视频内容对象中的 viewController 
    [self addChildViewController:self.contentVideo.viewController];
    [self.view addSubview:self.contentVideo.viewController.view];
    
}


三、Scheme 白名单配置(推荐)

1.背景:

优化广告填充及提升媒体收益,需要开发者根据如下说明文档配置 Scheme 白名单

2.步骤:

LSApplicationQueriesSchemes   Array
scheme 名称
tbopen 淘宝
openapp.jdmobile 京东
pddopen 拼多多
imeituan 美团
meituanwaimai 美团外卖
sinaweibo 微博
vipshop 唯品会
kwai 快手
ksnebula 快手极速版
snssdk1128 抖音
dewuapp 得物
ctrip 携程旅行
iqiyi 爱奇艺
freereader 七猫
eleme 饿了么 app
tmall 天猫商城
taobaoliveshare 淘宝直播
youku 优酷视频
iting 喜马拉雅
quark 夸克
snssdk141 今日头条
taobaotravel 飞猪
alipays 支付宝
ucbrowser UC
OneTravel 滴滴
dianping 大众点评
orpheuswidget 网易云音乐
baiduboxapp 百度
xhsdiscover 小红书
bilibili B 站
soul soul
zhihu 知乎
lianjiabeike 贝壳
fleamarket 闲鱼
tctravel 同程旅行
qunariphone 去哪儿旅行
amapuri 高德地图
txvideo 腾讯视频
weixin 微信
tianyancha 天眼查
wbmain 58 同城
bitauto.yicheapp 易车
autohome 汽车之家
sohuvideo 搜狐视频
bosszp Boss 直聘
openanjuke 安居客
momochat 陌陌
jdmobile 京东金融
kaola 考拉海购
yymobile YY

3.Scheme 配置快捷复制

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>tbopen</string>
    <string>openapp.jdmobile</string>
    <string>pddopen</string>
    <string>imeituan</string>
    <string>meituanwaimai</string>
    <string>sinaweibo</string>
    <string>vipshop</string>
    <string>kwai</string>
    <string>ksnebula</string>
    <string>snssdk1128</string>
    <string>dewuapp</string>
    <string>ctrip</string>
    <string>iqiyi</string>
    <string>freereader</string>
    <string>eleme</string>
    <string>tmall</string>
    <string>taobaoliveshare</string>
    <string>youku</string>
    <string>iting</string>
    <string>quark</string>
    <string>snssdk141</string>
    <string>taobaotravel</string>
    <string>alipays</string>
    <string>ucbrowser</string>
    <string>OneTravel</string>
    <string>dianping</string>
    <string>orpheuswidget</string>
    <string>baiduboxapp</string>
    <string>xhsdiscover</string>
    <string>bilibili</string>
    <string>soul</string>
    <string>zhihu</string>
    <string>lianjiabeike</string>
    <string>fleamarket</string>
    <string>tctravel</string>
    <string>qunariphone</string>
    <string>amapuri</string>
    <string>txvideo</string>
    <string>weixin</string>
    <string>tianyancha</string>
    <string>wbmain</string>
    <string>bitauto.yicheapp</string>
    <string>autohome</string>
    <string>sohuvideo</string>
    <string>bosszp</string>
    <string>openanjuke</string>
    <string>momochat</string>
    <string>jdmobile</string>
    <string>kaola</string>
    <string>yymobile</string>
</array>

四、测试 ID

*测试ID偶尔会存在填充不足的情况,可以尝试更换测试ID进行调试。

APPID:sjm_ios123

广告位 ID
开屏 SJM_S001
SJM_S002
SJM_S003
激励视频 SJM_R001
SJM_R002
SJM_R003
插屏 SJM_I101
SJM_I001
Banner SJM_B001
SJM_B002
SJM_B003
信息流 SJM_F001
SJM_F002
SJM_F003
全屏视频 SJM_FV001
SJM_FV002
SJMKS_FV001

SDK 导入方式

关于 iOS 14 AppTrackingTransparency

二、相关广告接入方式说明

三、Scheme 白名单配置(推荐)