菜鸟教程小白 发表于 2022-12-13 15:09:44

ios - 避免递归bannerView : didFailToReceiveAdWithError: on iPad


                                            <p><p>我有一个使用 iAd 的 iPhone 应用,并回退到 AdMob 广告:</p>

<pre><code>- (void)bannerViewDidLoadAd:(ADBannerView *)banner {

    ;
    ;

    adBannerView.frame = CGRectMake(0, 410, 320, 50);

    ;

    // hide the admob ad
    if(adMobView != nil &amp;&amp; adMobView.superview != nil) {
      ;
      ;
      adMobView.frame = CGRectMake(0, 460, 320, 48);
      ;
    }
}

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error {

    ;
    ;

    // hide banner
    adBannerView.frame = CGRectMake(0, 460, 320, 50);
    ;

    if(adMobView != nil &amp;&amp; adMobView.superview != nil) {
      ;
    } else {
      adMobView = ;
      adMobView.frame = CGRectMake(0, 460, 320, 48);
      ;
    }
}
</code></pre>

<p>这在 iPhone 上运行良好。但是,当应用程序在 iPad 上运行时,这种情况会再次出现; <code>;</code>(特别是对'self.view'的调用)根据<a href="http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40006926-CH3-SW2" rel="noreferrer noopener nofollow">the ViewController.view reference</a>调用loadView ,再次尝试布局AdBannerView,再次触发失败。</p>

<p>我认为这与 iPad 上的窗口边界比 iPhone 上的更大/不同,以及确定是否尝试加载 AdBanner 的规则有关。</p>

<p>一种解决方案可能是将我硬编码的边界调整为更远(因此超出 iPad 的更大范围)。另一种解决方案是完全避免 self.view 调用/递归风险并以另一种方式进行 - 但是,AdMobView 有点挑剔,真的希望由 <code>requestAdWithDelegate</code> 实例化,如果我把它放在 viewDidLoad 中。</p>

<p>哪种方法是明智的?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我在 iPad 上遇到了类似的问题,只是所有以 self.view 开头的调用导致bannerView:didfailToReciveAdWithError 出现递归错误。我认为这与调用 didfailToReciveAdWithError 方法时尚未分配 self.view 中的 View 有关。为了修复它,我从该方法中删除了对 self.anything 的所有调用。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 避免递归bannerView : didFailToReceiveAdWithError: on iPad,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/11641478/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/11641478/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 避免递归bannerView : didFailToReceiveAdWithError: on iPad