IOS開發植入廣告的話,常用廣告架構來實現,一般常用的有蘋果官方的:iAd以及三方的像:InMobi等
以下分別介紹:
iAd架構
iOS 4.0引入了iAd架構(iAd.framework)支援程式中顯示banner廣告。廣告由標準的view構成,你可以把它們插入到你的使用者介面中,恰當的時候顯示。View本身和蘋果的廣告服務通訊,處理一切載入和展現廣告內容以及響應點擊等工作。
更多關於在程式中使用iAd的資訊,參見iAd編程指南以及iAd架構參考手冊。
一、iAD架構 簡介
IAD是蘋果推出的廣告平台,它可以協助開發人員從應用程式中擷取收入。 執行個體步驟
1. 建立一個簡單的View based application
2. 選擇專案檔,然後選擇目標,然後選擇架構並添加 iAd.framework。
3. 更新 ViewController.h 如下所示
#import <UIKit/UIKit.h>#import <iAd/iAd.h>@interface ViewController : UIViewController<ADBannerViewDelegate>{ ADBannerView *bannerView;}@end
4. 更新ViewController.m ,如下所示
#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad]; bannerView = [[ADBannerView alloc]initWithFrame: CGRectMake(0, 0, 320, 50)]; // Optional to set background color to clear color [bannerView setBackgroundColor:[UIColor clearColor]]; [self.view addSubview: bannerView];}- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}#pragma mark - AdViewDelegates-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{ NSLog(@"Error loading");}-(void)bannerViewDidLoadAd:(ADBannerView *)banner{ NSLog(@"Ad loaded");}-(void)bannerViewWillLoadAd:(ADBannerView *)banner{ NSLog(@"Ad will load");}-(void)bannerViewActionDidFinish:(ADBannerView *)banner{ NSLog(@"Ad did finish");}@end
輸出
運行該應用程式,得到如下輸出結果:
二、InMobi架構 一、註冊InMobi帳號,建立廣告單元,等待審核。
1)註冊帳號,登入位址是:http://www.inmobi.com/,註冊完成之後需要你填寫聯絡資訊以及收款資訊,你就正常填寫就可以,inmobi支援paypal和電匯,筆者試過,使用工行儲蓄卡(雙幣卡,一般新辦的卡都支援)和paypal都可以正常收到款項,美金哦,呵呵。
2)建立廣告單元,如下圖,如果你的APP已經上線,直接輸入APP的url;反之如果app正在開發,可以選擇“No”,輸入app名稱即可。 完成後會產生一個ID,如“4028cbff36f39ce201dfsdfsdfsdf2642”,這個ID在下面會用上。
3)建立的廣告,當你的APP通過蘋果審核後,要把APP的URL錄入進來,讓inmobi審核,否則不能正常顯示廣告的。
二、接入InMobi廣告SDK到項目當中
從下載的 SDK 捆綁包中,將以下標題檔案和二進位檔案複製到項目。 libInMobi-5.x.x.a IMSdk.h IMBanner.h IMBannerDelegate.h IMInterstitial.h IMInterstitialDelegate.h IMNative.h IMNativeDelegate.h IMCustomNative.h IMRequestStatus.h IMCommonConstants.h
添加架構
將下列架構添加到您的 Xcode 項目: AdSupport.framework AudioToolbox.framework AVFoundation.framework CoreLocation.framework CoreTelephony.framework EventKit.framework EventKitUI.framework MediaPlayer.framework MessageUI.framework Security.framework Social.framework StoreKit.framework SystemConfiguration.framework UIKit.framework UIKit.framework libsqlite3.0.dylib libc++.dylib
注:將info.plist檔案中的 NSLocationWhenInUseUsageDescription標記設定為"YES" ;
添加其他版本設定
將 標記添加到其他連結器標記,以在使用類別時載入所有類。要完成此操作,請完成下列步驟:
1. 在Xcode中開啟項目。
2. 選擇應用程式目標>版本設定。
3. 在搜尋欄位中,搜尋“其他連結器標記”。
4. 添加-ObjC標記。
針對iOS應用程式9應用程式傳輸安全性(ATS)是一種新的iOS9預設設定。它要求應用使網路連接只在TLS版本。1.2及以上。確保所有展示廣告正確顯示在您的應用程式,我們目前正與我們所有的夥伴的需求,確保100%符合ATS的要求。重要:在這個過渡階段,然而,請禁用ATS為iOS 9確保展示廣告在構建deisplay正確。這將減少美國胸科協會對應用程式的影響的貨幣化。點擊這裡瞭解更多資訊。禁用ATS,請將下面的程式碼片段添加到您的應用程式的plist。
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict> 開始接入到項目中初始化SDK 在AppDelegate.h中匯入標頭檔
#import "IMSdk.h"
#import "IMCommonConstants.h"
在AppDelegate.m 中添加初始化方法。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {//Initialize InMobi SDK with your account ID
[IMSdk initWithAccountID:@"這裡填入你申請的ID 注意是類似"sfhsjahs2fhsjkhfks2dfhkj3f2"這種的。不是那個數字ID"];
// Do your stuff.
return YES;
}
在這裡要普及一個小知識點
IMBanner屬於一個橫幅廣告
IMInterstitial屬於一個插頁廣告
IMNative屬於原生廣告
每一個對應的方法官方文檔中都會有相應的方法去建立
我接入的是一個IMnative這個廣告方式。 self.nativeAd=[[IMNative alloc] initWithPlacementId:@"Insert native Placement ID Here"]; self.nativeAd.delegate= self; [self.nativeAd load]; 裡面有一個重要的屬性就是,adContent 這個代表著廣告的內容,是一個JSON格式的字串。裡面的ImageURL是你要顯示的廣告內容,loadURL是廣告的連結,這些對於你處理廣告的邏輯很重要哦 [IMNative bindNative:self.nativeView toView:cell]; 這個方法是用來綁定你的廣告和對應的視圖的 一定要在廣告完全顯示之後再運行這個方法,這樣才不會有錯誤的曝光。 還有就是廣告跳轉的兩種方式、 1、[self.native reportAdClick:"這裡傳入你載入到的廣告內容self.native.adContent"];