MobFox-iOS-SDK
新文档页面
对于以下说明未涵盖的问题或疑问,请联系 [email protected] 或打开一个问题。
支持 iOS 9.0+
先决条件
您需要一个 MobFox 账户。
安装
请确保以下内容包含在你的项目的 框架 中:(在你 Xcode 项目中,转到 通用 - 链接框架和库)
AdSupport.framework
在 构建设置 中点击 所有 标签。将 始终嵌入 Swift 标准库
设置为是。
Cupertino Pods
如果没有 podfile,
- 在终端中,转到您的项目位置,并输入
pod init
创建 podfile。 - 使用
open -a Xcode Podfile
修改 podfile。
添加到您的 Podfile
pod 'MobFoxSDK','3.5.7'
保存您的 pod 文件并输入: pod install
卡托
添加到您的 Cartfile
github "mobfox/MobFox-iOS-SDK" "3.5.7"
卡托只支持动态框架。 MobFoxSDKCoreDynamic.framework 必须位于 '嵌入的二进制文件' 和 '链接的框架和库' 下。
手动安装
-
下载并解压缩 MobFox-SDK 或克隆此仓库。
-
对于集成静态库:将
MobFoxSDKCore.embeddedframework
从 Finder 拖入您的项目。对于动态库:将MobFoxSDKCoreDynamic.embeddedframework
从 Finder 拖入您的项目。(MobFoxSDKCoreDynamic.framework 必须位于 '嵌入的二进制文件' 和 '链接的框架和库' 下) -
将
MATMoatMobileAppKit.framework
从 Finder 拖入您的项目。
ATS
iOS9 中的一个变化是默认设置要求应用仅通过 SSL 建立网络连接,这被称为应用传输安全。 MobFox 正在帮助我们的每个需求合作伙伴过渡以支持这一变化,以确保其合规。在此期间,想要发布支持 iOS9 的应用的开发人员,需要禁用 ATS 以确保 MobFox 能够按预期工作,并且在 iOS10 及以后的版本中,仅禁用媒体和 Web 内容的 ATS。为此,开发人员应在 plist
中添加以下内容
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsForMedia</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>
开发人员还可以直接编辑 plist,通过添加字典类型的 NSAppTransportSecurity
键,将参数 NSAllowsArbitraryLoads
、NSAllowsArbitraryLoadsForMedia
和 NSAllowsArbitraryLoadsInWebContent
设置为 true
。
未来,MobFox 将提供用于请求仅安全广告的附加参数。我们将通过 控制台 通知我们的发布商。
关于此更改的更多信息可以在苹果网站上找到:[苹果网站](https://developer.apple.com/library/prerelease/ios/technotes/App-Transport-Security-Technote/index.html#//apple_ref/doc/uid/TP40016240)
如果您对 iOS9 和 ATS 有进一步的问题,请在此处创建工单:[创建工单](https://account.mobfox.com/www/cp/create_ticket.php)
如果您的应用已经依赖某些 HTTP 请求/s上的NSAllowsArbitraryLoads
,请勿修改您的plist
文件。
使用
#import <MobFoxSDKCore/MobFoxSDKCore.h>
或者
//For MobFoxSDKCoreDynamic.embeddedframework use
#import <MobFoxSDKCoreDynamic/MobFoxSDKCoreDynamic.h>
横幅广告
为了确保您要显示时最佳的广告已准备好,请在您的代码中尽快初始化MobFox广告
//define the position and dimensions of your ad
CGRect adRect = CGRectMake(0, 200, 320, 50);
//init your ad
MobFoxAd* mobfoxAd = [[MobFoxAd alloc] init:@"your-publication-hash" withFrame:adRect];
//add it to your view
[self.view addSubview: mobfoxAd];
设置附加参数
在广告对象上设置附加参数可以帮助您获得更好的定向广告或帮助您进行报告
@property (nonatomic, copy) NSString* longitude;
@property (nonatomic, copy) NSString* latitude;
@property (nonatomic, copy) NSString* demo_gender; //"m/f"
@property (nonatomic, copy) NSString* demo_age;
@property (nonatomic, copy) NSString* v_dur_min;
@property (nonatomic, copy) NSString* v_dur_max;
@property (nonatomic, copy) NSString* r_floor;
//set this (in seconds) to make the ad refresh
@property (nonatomic, assign) NSNumber* refresh;
更多信息请参阅:[此处](http://dev.mobfox.com/index.php?title=Ad_Request_API#Request_Parameters)
广告代理
要接收某些广告事件的通知,您可以注册一个代理
//The delegate should implement the following protocol:
@protocol MobFoxAdDelegate <NSObject>
@optional
//called when ad is displayed
- (void)MobFoxAdDidLoad:(MobFoxAd *)banner;
//called when an ad cannot be displayed
- (void)MobFoxAdDidFailToReceiveAdWithError:(NSError *)error;
//called when ad is closed/skipped
- (void)MobFoxAdClosed;
//called when ad is clicked
- (void)MobFoxAdClicked;
//called when if the ad is a video ad and it has finished playing
- (void)MobFoxAdFinished;
//called if the ad request returned custom events
- (void) MobFoxDelegateCustomEvents:(NSArray*) events;
@end
设置代理
mobfoxAd.delegate = delegate;
显示广告
稍后当您想显示广告时
//call to display ad
[mobfoxAd loadAd];
插屏广告
为了确保当您想要显示广告时,最佳的广告已经准备就绪,请在您的代码中尽快初始化MobFox插屏广告
//init the interstitial ad giving it your main/root controller
MobFoxInterstitialAd* mobfoxInterAd = [[MobFoxInterstitialAd alloc] init:@"your-publication-hash" withRootViewController:self];
设置额外参数
在内部广告对象上设置额外参数,这可以帮助您获取更有针对性的广告或帮助您进行报告:例如
mobfoxInterAd.demo_gender = @"f";
可用的属性包括
@property (nonatomic, copy) NSString* longitude;
@property (nonatomic, copy) NSString* latitude;
@property (nonatomic, copy) NSString* demo_gender; //"m/f"
@property (nonatomic, copy) NSString* demo_age;
@property (nonatomic, copy) NSString* s_subid;
@property (nonatomic, copy) NSString* sub_name;
@property (nonatomic, copy) NSString* sub_domain;
@property (nonatomic, copy) NSString* sub_storeurl;
@property (nonatomic, copy) NSString* r_floor;
//set this (in seconds) to make the ad refresh
@property (nonatomic, assign) NSNumber* refresh;
@property (nonatomic, copy) NSNumber* v_dur_min;
@property (nonatomic, copy) NSNumber* v_dur_max;
更多信息请参阅:[此处](http://dev.mobfox.com/index.php?title=Ad_Request_API#Request_Parameters)
插屏广告代理
要接收某些广告事件的通知,您可以注册一个代理
//The delegate should implement the following protocol:
@protocol MobFoxInterstitialAdDelegate <NSObject>
@optional
//called when ad is displayed
- (void)MobFoxInterstitialAdDidLoad:(MobFoxInterstitialAd *)interstitial;
//called when an ad cannot be displayed
- (void)MobFoxInterstitialAdDidFailToReceiveAdWithError:(NSError *)error;
//called when ad is closed/skipped
- (void)MobFoxInterstitialAdClosed;
//called w mobfoxInterAd.delegate = self;hen ad is clicked
- (void)MobFoxInterstitialAdClicked;
//called when if the ad is a video ad and it has finished playing
- (void)MobFoxInterstitialAdFinished;
@end
设置代理并预载广告
mobfoxInterAd.delegate = delegate;
[mobfoxInterAd loadAd];
在广告对象上设置额外参数,这可以帮助您获取更有针对性的广告或帮助您进行报告
@property (nonatomic, copy) NSString* longitude;
@property (nonatomic, copy) NSString* latitude;
@property (nonatomic, copy) NSString* demo_gender; //"m/f"
@property (nonatomic, copy) NSString* demo_age;
@property (nonatomic, copy) NSString* s_subid;
@property (nonatomic, copy) NSString* sub_name;
@property (nonatomic, copy) NSString* sub_domain;
@property (nonatomic, copy) NSString* sub_storeurl;
@property (nonatomic, copy) NSString* v_dur_min;
@property (nonatomic, copy) NSString* v_dur_max;
@property (nonatomic, copy) NSString* r_floor;
更多信息请参阅:[此处](http://dev.mobfox.com/index.php?title=Ad_Request_API#Request_Parameters)
显示插屏广告
稍后当您想显示广告时
//best to show after delegate informs an ad was loaded
- (void)MobFoxInterstitialAdDidLoad:(MobFoxInterstitialAd *)interstitial{
if(mobfoxInterAd.ready){
[mobfoxInterAd show];
}
}
原生广告
这是一种特殊的广告类型,它返回包含广告数据的JSON对象。广告的展示、点击像素和点击URL的调用是发行商的责任。
ATS
请注意,对于原生广告,plist
文件不应该包含以下键或设置为 不。
NSAllowsArbitraryLoadsForMedia
NSAllowsArbitraryLoadsInWebContent
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<!-- <key>NSAllowsArbitraryLoadsForMedia</key>-->
<!-- <false/>-->
<!-- <key>NSAllowsArbitraryLoadsInWebContent</key>-->
<!-- <false/>-->
</dict>
启动 MobFox 原生广告
- (void)viewDidLoad {
[super viewDidLoad];
//where my 'myView' is the view used to display the native ad
self.nativeAd = [[MobFoxNativeAd alloc] init:@"your-publication-hash" nativeView:myView];
}
原生广告代理
//you must define a delegate to get the JSON response
//The delegate should implement the following protocol:
@protocol MobFoxNativeAdDelegate <NSObject>
//called when ad response is returned
- (void)MobFoxNativeAdDidLoad:(MobFoxNativeAd*)ad withAdData:(MobFoxNativeData *)adData;
//called when ad response cannot be returned
- (void)MobFoxNativeAdDidFailToReceiveAdWithError:(NSError *)error;
//called on ad click
- (void)MobFoxNativeAdClicked;
@end
nativeAd.delegate = delegate;
设置附加参数
在广告对象上设置附加参数可以帮助您获得更好的定向广告或帮助您进行报告
@property (nonatomic, copy) NSString* longitude;
@property (nonatomic, copy) NSString* latitude;
@property (nonatomic, copy) NSString* demo_gender; //"m/f"
@property (nonatomic, copy) NSString* demo_age;
@property (nonatomic, copy) NSString* s_subid;
@property (nonatomic, copy) NSString* sub_name;
@property (nonatomic, copy) NSString* sub_domain;
@property (nonatomic, copy) NSString* sub_storeurl;
@property (nonatomic, copy) NSString* v_dur_min;
@property (nonatomic, copy) NSString* v_dur_max;
@property (nonatomic, copy) NSString* r_floor;
更多信息请参阅:http://dev.mobfox.com/index.php?title=Ad_Request_API_-_Native
响应 MobFoxNativeData*
@interface MobFoxNativeData : NSObject
@property (nonatomic, strong) MobFoxNativeImage *icon;
@property (nonatomic, strong) MobFoxNativeImage *main;
@property (nonatomic, copy) NSString *assetHeadline;
@property (nonatomic, copy) NSString *assetDescription;
@property (nonatomic, copy) NSString *callToActionText;
@property (nonatomic, copy) NSString *advertiserName;
@property (nonatomic, copy) NSString *socialContext;
@property (nonatomic, copy) NSNumber *rating;
@property (nonatomic, copy) NSURL *clickURL;
@property (nonatomic, strong) NSMutableArray *trackersArray;
@end
当你决定渲染广告并导航到 click_url
时,必须调用所有 trackers
。
请参考 MobFox Native API 以获取完整文档。
获取原生广告
[nativeAd loadAd];
显示广告资源和触发跟踪像素
原生广告加载时必须触发跟踪像素
- (void)MobFoxNativeAdDidLoad:(MobFoxNativeAd*)ad withAdData:(MobFoxNativeData *)adData {
self.nativeAdTitle.text = adData.assetHeadline;
self.nativeAdDescription.text = adData.assetDescription;
self.nativeAdIcon.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:adData.main.url]];
self.clickURL = [adData.clickURL absoluteURL];
self.mobFoxNativeData = adData;
[ad fireTrackers];
}
自定义事件
此功能允许你在 MobFox 的 SDK 内使用其他广告平台的账户,如 MoPub。
适配器
适配器是自定义事件的相反,它们允许您在其他网络中用MobFox作为自定义事件。目前支持AdMob和MoPub。
插件
Swift演示应用
GDPR
配置
- 设置MobFox属性
@property (nonatomic, assign) BOOL gdpr;
@property (nonatomic, assign) NSString* gdpr_consent;
-AdMob适配器使用"MFAdNetworkExtras"
示例
MFAdNetworkExtras *extras = [[MFAdNetworkExtras alloc] init];
extras.gdpr = YES;
extras.gdpr_consent = @"1";
self.gadBannerView = [[GADBannerView alloc] initWithFrame:CGRectMake(0, SCREEN_HEIGHT-50, 320, 50)];
self.gadBannerView.adUnitID = ADMOB_HASH_GAD_TAG_BANNER;
self.gadBannerView.rootViewController = self;
self.gadBannerView.delegate = self;
[self.view addSubview: self.gadBannerView];
GADRequest *request = [[GADRequest alloc] init];
[request registerAdNetworkExtras:extras];
[self.gadBannerView loadRequest:request];
MoPub适配器
- 更新到最新的MoPub SDK(MoPub SDK 5.0)
- 使用MobFox适配器模块将gdpr & gdpr_consent传递到MobFox
有关GDPR的更多信息
https://www.mobfox.com/gdpr-faq/
位置服务
SDK将查询当前位置并将请求参数中的经度
和纬度
设置为,只要用户允许(在隐私设置中的位置服务)。
内置MOAT可视性测量
这使得发布商能够根据Moat的可视性度量标准测量其应用内的库存,并将他们的库存向仅对‘可视性监控’流量感兴趣的广告商更开放。