MobFox-iOS-SDK
新的文档页面
对于以下指南中没有涵盖的任何问题或疑问,请联系[email protected]或打开一个问题。
支持 iOS 9.0+
先决条件
您需要一个MobFox账户。
安装
请确保以下框架包含在您的项目中的框架内:(在您的Xcode项目中,转到通用 - 链接框架和库)
AdSupport.framework
在构建设置中点击始终嵌入Swift标准库
设置为是。
CocoaPods
如果您还没有podfile,
- 在终端,转到您的项目位置,并输入
pod init
创建 podfile。 - 使用
open -a Xcode Podfile
编辑 podfile。
添加到您的 Podfile
pod 'MobFoxSDK','3.5.7'
保存您的 podfile 并输入: pod install
Carthage
添加到您的 Cartfile
github "mobfox/MobFox-iOS-SDK" "3.5.7"
Carthage 仅支持动态库。MobFoxSDKCoreDynamic.framework 必须位于 'Embeded Binaries' 和 'Linked Frameworks and Libraries' 下。
手动安装
-
下载并解压 MobFox-SDK 或克隆此仓库。
-
对于集成静态库:将
MobFoxSDKCore.embeddedframework
从 Finder 中拖到您的项目中。对于动态库:将MobFoxSDKCoreDynamic.embeddedframework
从 Finder 拖到您的项目中。(MobFoxSDKCoreDynamic.framework 必须位于 'Embeded Binaries' 和 'Linked Frameworks and Libraries' 下) -
将
MATMoatMobileAppKit.framework
从 Finder 拖到您的项目中。
ATS
iOS9 的一个更改是默认设置,要求应用程序仅通过 SSL 建立网络连接,这被称为 App Transport Security。MobFox 正在帮助每个需求合作伙伴过渡到支持此更改,以确保他们符合要求。在此期间,希望发布支持 iOS9 的应用程序的开发人员需要禁用 ATS 以确保 MobFox 如预期那样继续工作,并在 iOS10 及更高版本中仅禁用 ATS 以支持媒体和 Web 内容。为此,开发人员应在其 plist
中添加以下内容
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsForMedia</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
</dict>
开发人员还可以通过直接添加字典类型的 NSAppTransportSecurity
键来直接编辑 plist,参数设置为:NSAllowsArbitraryLoads
、NSAllowsArbitraryLoadsForMedia
和 NSAllowsArbitraryLoadsInWebContent
设为 true
。
未来,MobFox 将提供请求安全广告的额外参数。我们将通过 控制面板 通知我们的出版商。
关于此更改的更多信息可以在Apple网站上找到:[前往链接](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)创建工单。
如果您应用已经依赖于NSAllowsArbitraryLoads
来处理某些HTTP请求,请勿修改您的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
文件不应包含以下键或设置为false
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的可见性指标来衡量他们的应用程序库,并且使他们的库存更容易为只对“可见性监控”流量感兴趣的广告商获取。