sjmadplugin使用文档

plugin接入说明

测试ID

广告位 ID
测试应用ID sjm_ios123
开屏 SJM_S001 ,SJM_S002,SJM_S003
激励视频 SJM_R001 、SJM_R003 、SJM_R002
banner SJM_B001、SJM_B003、SJM_B002
插屏 SJM_I001、SJM_I101
信息流 SJM_F001、SJM_F002、SJM_F003
全屏视频 SJM_FV001、SJM_FV002
视频流 SJM_V001、SJM_V002、SJM_V003
短视频内容 K90010005

接入调试完成后请联系客服QQ:22770670 VX:Liangaxybz 获取正式的应用ID和广告位ID

手动方式

1.将 ios 文件夹内的所有文件拖入项目的三方管理文件夹中,
2.将 lib 文件夹内的 sjmadplugin 文件拖入项目中,
3.pubspec.yaml 导入该 sjmadplugin 库

dependencies:
  flutter:
    sdk: flutter

  sjmadplugin:
    # 本地导入方式,设置好plugin所在路径
    path: ../

4.终端执行 flutter packages get 和 pod install

Xcode编译选项设置

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

从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

2.注意点
1.注册AppId触发需要较早的时机,所以注册AppId放在了原生的AppDelegate中调用
2.请在 GeneratedPluginRegistrant 文件中注册 Sjmadplugin 插件

一、初始化SDK

1.Objective-C

#import <SJMAdSDK/SJMAdSDK.h>

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  //注册AppId
  [SJMAdSDKManager registerAppId:@"sjm_ios123"];
  
  [GeneratedPluginRegistrant registerWithRegistry:self];
  return [super application:application didFinishLaunchingWithOptions:launchOptions];
}

2.Swift

import SJMAdSDK

override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    //注册AppId
    SJMAdSDKManager.registerAppId("sjm_ios123")

    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }

二、广告接入

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

1、开屏广告接入

第一种方式(推荐使用)

//第一个参数:广告id
//第二个参数:超时时间
SjmAdSdk.showSplashAd(
    "SJM_S002",5,
    onSjmAdLoaded: (String id) {
        print("SplashAd 加载成功");
    },
    onSjmAdShow: (String id) {
        print("SplashAd 展示");
    },
    onSjmAdClicked: (String id) {
        print("SplashAd 点击");
    },
    onSjmAdClosed: (String id) {
        print("SplashAd 关闭");
    },
    onSjmAdError: (String id, int code, String message) {
        print("SplashAd 错误 "+message);
    },
);

第二种方式

//第一个参数:广告id
SplashAdView(
    adId: "SJM_S002",
    width: width,
    height: height,
    onSjmAdLoaded: (String id) {
        print("SplashAd 加载成功");
    },
    onSjmAdShow: (String id) {
        print("SplashAd 开屏展示");
    },
    onSjmAdClicked: (String id) {
        print("SplashAd 开屏点击");
    },
    onSjmAdClosed: (String id) {
        print("SplashAd 开屏关闭");
    },
    onSjmAdError: (String id, int code, String message) {
        print("SplashAd 加载失败");
    }
)

2、激励视频接入

//第一个参数:广告id
//第二个参数:用户ID
SjmAdSdk.showRewardVideoAd(
    "广告位id","用户id",
    onSjmAdTradeId:(String id){
        print("RewardVideoAd onSjmAdTradeId");
    },
    onSjmAdLoaded: (String id) {
        print("RewardVideoAd onSjmAdLoad");
    },
    onSjmAdShow: (String id) {
        print("RewardVideoAd onSjmAdShow");
    },
    onSjmAdReward: (String id) {
        print("RewardVideoAd onReward");
    },
    onSjmAdClicked: (String id) {
        print("RewardVideoAd onSjmAdClick");
    },
    onSjmAdVideoComplete: (String id) {
        print("RewardVideoAd onVideoComplete");
    },
    onSjmAdClosed: (String id) {
        print("RewardVideoAd onSjmAdClose");
    },
    onSjmAdError: (String id, int code, String message) {
        print("RewardVideoAd onSjmAdError");
    },
);

3、插屏广告接入

//第一个参数:广告id
SjmAdSdk.loadInterstitalAd(
    "广告位id",
    onSjmAdLoaded: (String id) {
        print("InterstitalAd onSjmAdLoad");
    },
    onSjmAdShow: (String id) {
        print("InterstitalAd onSjmAdShow");
    },
    onSjmAdClicked: (String id) {
        print("InterstitalAd onSjmAdClick");
    },
    onSjmAdClosed: (String id) {
        print("InterstitalAd onSjmAdClose");
    },
    onSjmAdError: (String id, int code, String message) {
        print("InterstitalAd onSjmAdError");
    },
);

4、模板信息流接入

//adId:广告ID
//width: 期望宽度
//height: 期望高度
NativeExpressAdView(
    adId:  "广告位id",
    width: 350,
    height: 300,
    onSjmAdLoaded: (String id) {
        print("native_express onSjmAdLoad");
    },
    onSjmAdShow: (String id) {
        print("native_express onSjmAdShow");
    },
    onSjmAdClicked: (String id) {
        print("native_express onSjmAdClick");
    },
    onSjmAdClosed: (String id) {
        print("native_express onSjmAdClose");
    },
    onSjmAdError: (String id, int code, String message) {
        print("native_express onError");
    },
)

5、Banner 接入

//adId:广告ID
//width: 期望宽度
//height: 期望高度
BannerAdView(
    adId: "广告位id",
    width: 400,
    height: 60,
    onSjmAdLoaded: (String id) {
        print("BannerAd onSjmAdLoad");
    },
    onSjmAdShow: (String id) {
        print("BannerAd onSjmAdShow");
    },
    onSjmAdClicked: (String id) {
        print("BannerAd onSjmAdClick");
    },
    onSjmAdClosed: (String id) {
        print("BannerAd onSjmAdClose");
    },
    onSjmAdError: (String id, int code, String message) {
        print("BannerAd onError");
    },
)

6、全屏视频接入

//第一个参数:广告id
SjmAdSdk.showFullVideoAd(
    "SJMKS_FV001",
    onSjmAdLoaded: (String id) {
        print("RewardVideoAd onSjmAdLoad");
    },
    onSjmAdShow: (String id) {
        print("RewardVideoAd onSjmAdShow");
    },
    onSjmAdClicked: (String id) {
        print("RewardVideoAd onSjmAdClick");
    },
    onSjmAdVideoComplete: (String id) {
        print("RewardVideoAd onVideoComplete");
    },
    onSjmAdClosed: (String id) {
        print("RewardVideoAd onSjmAdClose");
    },
    onSjmAdError: (String id, int code, String message) {
        print("RewardVideoAd onSjmAdError");
    },
);

常见回调查询

名称 备注
onSjmAdLoaded 广告加载成功
SjmAd_VideoCached 广告视频下载或读取缓存
onSjmAdShow 广告展示
onSjmAdClicked 广告点击回调
onSjmAdClosed 广告关闭回调
onSjmAdError 广告错误和错误信息
onSjmAdReward 触发广告奖励(激励视频)
▶︎
all
running...

二、广告接入