次の方法で共有


iOS の遅延読み込み

遅延読み込み機能では、サードパーティのトラッカーや Mobile SDK トラッカーなど、すべてのトラッカーが発生したタイミングを管理するための新しい API 呼び出しが提供されます。 また、必要な場合と必要な直前にホスト アプリが Web ビューを読み込みることができるようにすることで、Banner AdUnit を最適化します。 この機能を有効にすると、従来の loadAd メソッドの後に 2 番目のメソッド loadLazyAd が続きます。

発射トラッカー

遅延読み込み機能は、すべての Mobile SDK とサードパーティのトラッカーを同じインスタンスで起動するように開発されており、両方のメトリック間のアライメントを維持できます。 この機能により、AdUnit の読み込みプロセスが loadAdloadLazyAd の 2 つのステップに分割されます。

AdUnit のライフサイクルの概要は、 読み込みと 表示の 2 つのステージで構成 されます。 この機能により、 読み込み ステージが loadAdloadLazyAd としてさらに 2 つのステップに分割され、その後に 表示 ステージが続きます。 つまり、loadAd が呼び出される前でも、バナー Web ビューをディスプレイにアタッチできます。 ただし、 表示 ステージはプラットフォームによって提供される利便性であり、AdUnit ライフサイクルの 読み込み 部分とは別です。

読み込みステージの 2 番目のステップ loadLazyAd では、次の 2 つのタスクが実行されます。

  • クリエイティブでサードパーティのトラッカーを起動する Web ビューを作成して読み込むことで、AdUnit の読み込みを完了します。
  • Mobile SDK トラッカーを起動します。

CPU 使用量の管理

遅延読み込み機能により、初期 loadAd は軽量の AdUnit を返し、後でコンテンツを読み込むことができます。 この機能により、内部 Web ビューの作成と構成を後の時点に延期することで、AdUnit の読み込み時間が短縮されます。 Webview の読み込みを遅延させることにより、AdUnit が使用されていない場合にユニバーサル タグで返される広告オブジェクトを読み込む際の追加の CPU 時間の消費が削減されます。

さらに、ホスト アプリはトラッカーを起動する最適な瞬間を選択し、CPU 時間を消費して Web ビューを読み込むことができます。理想的には、広告がエンド ユーザーに表示される (または高確率で表示するためにキューに入れられます)。

遅延読み込みのスコープ

この機能の範囲は、バナーとネイティブ アセンブリ レンダラー Media Types を表示する Banner AdUnits に制限されます。 これは、インストリーム ビデオやネイティブを含む他の AdUnit には適用されず、バナー ビデオ (アウトストリーム ビデオ) やバナーネイティブを含むバナーおよびネイティブ アセンブリ レンダラー以外の複数形式の Banner AdUnit によって返されるメディアの種類にも適用されません。

プロパティ

遅延読み込みは、機能が有効かどうかと、同じ機能が有効になっていないかどうかを示すプロパティを使用して Mobile SDK パブリック API を強化します。

プロパティ 属性 説明
enableLazyLoad Bool Readwrite 遅延読み込みが有効になっているかどうかを示し、有効でない場合は同じを有効にします。
@property (nonatomic, readwrite)  BOOL  enableLazyLoad

Method

loadLazyAd

遅延読み込みの AdUnit の Web ビューを読み込み、サード パーティ製および Mobile SDK トラッカーを含むすべてのトラッカーを起動します。

(BOOL) loadLazyAd;

デリゲート コールバック

lazyAdDidReceiveAd

lazyAdDidReceiveAd は、 loadAd メソッドが遅延読み込みの AdUnit 、つまり未割り当て Web ビューを持つ AdUnit を正常に返すと発生します。 ANAdResponseInfo のインスタンスを含め、AdUnit インスタンスの他のすべての機能を使用できます。 loadAd が失敗した場合、遅延読み込みされなかった AdUnit と同じコールバックが使用されます。

(void)lazyAdDidReceiveAd:(nonnull id)ad;

例 - 目標 C

@property  (nonatomic, strong, nullable)  ANBannerAdView  *lazyBanner;
 
// ...
 
- (void)viewDidLoad
{
    NSString  *placementID  = @"1234567";
      
    CGRect  rect  = CGRectMake(...);  //Set location on display.
    CGSize  size  = CGSizeMake(...);  //Set size of AdUnit.
 
      
    // Create and configure banner ad view; attach to view hierarchy.
    //
    ANBannerAdView  *banner  = [ANBannerAdView adViewWithFrame:rect placementId:placementID adSize:size];
 
    /* native assebly renderer
    self.banner.shouldAllowNativeDemand = YES;
    self.banner.enableNativeRendering = YES;
    */

    self.lazyBanner = banner;
    self.lazyBanner.delegate = self; self.lazyBanner.enableLazyLoad = YES; [self.view addSubview:self.lazyBanner]; // Begin the load of AdUnit. // [self.lazyBanner loadAd]; } // ... - (void)readyToDisplayLazyBanner { // Complete the load of AdUnit. // [self.lazyBanner loadLazyAd]; } // // ANAdProtocol delegate methods. // - (void)adDidReceiveAd:(id)ad { // Optional processing when lazy banner webview completes loading. } - (void)lazyAdDidReceiveAd:(id)ad { // Optional Processing when lazy banner is received. }
 
// ...
 
- (void)readyToDisplayLazyBanner
{
    // Complete the load of AdUnit.
    //
    [self.lazyBanner loadLazyAd];
}
 
 
 
//
// ANAdProtocol delegate methods.
//
 
- (void)adDidReceiveAd:(id)ad
{
    // Optional processing when lazy banner webview completes loading.
}
 
- (void)lazyAdDidReceiveAd:(id)ad
{
    // Optional Processing when lazy banner is received.
}

例 - Swift

import UIKit
import AppNexusSDK
class BannerAdViewController: UIViewController , ANBannerAdViewDelegate{
    var banner: ANBannerAdView?
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        self.title = "Banner Ad"
        let adWidth: Int = 300
        let adHeight: Int = 250
        let adID = ""
        
        // We want to center our ad on the screen.
        let screenRect: CGRect = UIScreen.main.bounds
        let originX: CGFloat = (screenRect.size.width / 2) - CGFloat((adWidth / 2))
        let originY: CGFloat = (screenRect.size.height / 2) - CGFloat((adHeight / 2))
        // Needed for when we create our ad view.
        
        let rect = CGRect(origin: CGPoint(x: originX,y :originY), size: CGSize(width: adWidth, height: adHeight))
        
        let size = CGSize(width: adWidth, height: adHeight)
        
        // Make a banner ad view.
        self.banner = ANBannerAdView(frame: rect, placementId: adID, adSize: size)
        self.banner?.rootViewController = self
        self.banner?.delegate = self
        
         /* native assebly renderer
        self.banner?.shouldAllowNativeDemand = true
        self.banner?.enableNativeRendering = true
        */

        self.banner?.enableLazyLoad = true
        // Load an ad.
        self.banner?.loadAd()
        
    }
    
    func adDidReceiveAd(_ ad: Any) {
        print("Ad did receive ad")
        view.addSubview(self.banner!)
    }
  
    func ad(_ ad: Any, requestFailedWithError error: Error) {
        print("Ad request Failed With Error")
    }
    func lazyAdDidReceiveAd(_ ad: Any) {
        self.banner?.loadLazyAd()
    }
   
}