广告位 | 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
<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 插件
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
第一种方式(推荐使用)
//第一个参数:广告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 加载失败");
}
)
//第一个参数:广告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");
},
);
//第一个参数:广告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");
},
);
//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");
},
)
//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");
},
)
//第一个参数:广告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 | 触发广告奖励(激励视频) |