0

iAd と画面の回転を透過的に処理する iOS ユニバーサル アプリケーション テンプレートを構築しようとしています。

つまり、新しいプロジェクトごとに UIViewController を使用する代わりに、独自の iAdVC (UIViewController をサブクラス化する) を使用します。これにより、iAd がシームレスに処理され、残りのウィンドウ スペースがユーザーに渡されます。

私はこれを試しています:ビューコントローラーには、{adView、コンテンツビュー}を含むuberViewが含まれています。

広告が表示されたり消えたりするたびに、両方の {adView, content view} がアニメーション化されます:

  • iAd 用のスペースを確保するためにフレームの上部をわずかに押しつぶすコンテンツ ビュー

  • 同時に上部に沿って広告をフェードインします。

    また、デバイスが回転するたびに、ビューのサイズを変更する必要があります。

最初の広告が配信されると、それを画面の上部に配置し、残りのコンテンツ フレームを押しつぶしてスペースを空けます。

しかし、コンテンツ ビューのフレームを変更すると、広告をクリックできなくなります。そうしないと、コンテンツ ビューがウィンドウに収まりません。

http://d.pr/ZyQG

- (void) bannerViewDidLoadAd: (ADBannerView *) banner 
{   
    bool isLandscape = UIInterfaceOrientationIsLandscape( self.interfaceOrientation );
    NSString * contentSize = isLandscape ? ADBannerContentSizeIdentifierLandscape : ADBannerContentSizeIdentifierPortrait ;
    
    [self.adBannerView setCurrentContentSizeIdentifier: contentSize];
    
    CGSize bannerSize = [ADBannerView sizeFromBannerContentSizeIdentifier: contentSize];
    self.adBannerView.frame = CGRectMake(0, 0, bannerSize.width, bannerSize.height);
    
    // resize content frame & fade ad in        
    CGRect newContentFrame = uberView.bounds;
    newContentFrame.size.height -= bannerSize.height;
    newContentFrame.origin.y += bannerSize.height;   
    
    NSLog(@"%@", NSStringFromCGRect(newContentFrame)); // {{0, 50}, {320, 430}}
    if (1) // 0 works
        self.contentView.frame = newContentFrame; // NOW CANT CLICK AD
}
4

2 に答える 2

0

導入の最小目標
最初の質問は、適切な導入の最小目標とは何かということです。これはユニバーサル アプリケーションであるため、iPhone と iPad 間で統一された最初のバージョンである iOS 4.2 を使用する必要があります。

疑問が生じます: 広告をクリックした顧客の何パーセントを失うのでしょうか? たとえば、15% の顧客を獲得するためだけに 4.0 をサポートする価値はありますか?

http://insights.chitika.com/2011/ios-update-ipads-iphones-running-high-rate-of-ios-4/ は、4.2 を選択した場合でも、広告をクリックする顧客の 80% を獲得できることを示しています。

明らかに、この割合は時間の経過とともに増加するため、市場から最後のペニーをすべて絞り出そうとするのではなく、最も簡単なコーディング オプションを選択します。

これには追加の利点があります。

// Supported sizes of banner ads available from ad server. Dimensions are in points, not pixels.
// The dimensions are part of the value names to assist with design-time planning for view layout.
extern NSString * const ADBannerContentSizeIdentifier320x50 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_NA,__MAC_NA,__IPHONE_4_0,__IPHONE_4_2);
extern NSString * const ADBannerContentSizeIdentifier480x32 __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_NA,__MAC_NA,__IPHONE_4_0,__IPHONE_4_2);
extern NSString * const ADBannerContentSizeIdentifierPortrait __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_2);
extern NSString * const ADBannerContentSizeIdentifierLandscape __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_2);

つまり、一般的な新しいシンボルを使用できます (つまり、iPhone と iPad の両方で機能します)。

strPortrait = ADBannerContentSizeIdentifierPortrait; // ADBannerContentSizeIdentifier320x50;
strLandscape = ADBannerContentSizeIdentifierLandscape; // ADBannerContentSizeIdentifier480x32;

バナーは水平または垂直のいずれかにすることができるため、以下をロードする必要があります。

[self.adBannerView setRequiredContentSizeIdentifiers:
    [NSSet setWithObjects: strPortrait, strLandscape, nil]
];  

次に、画面が 90° 回転したときに、AdBannerView に次のように伝える必要があります。

[self.adBannerView setCurrentContentSizeIdentifier: isLandscape ? strLandscape : strPortrait ];

これが設定された直後に、self.adBannerView.frameをクエリして、新しいサイズを取得できます。

于 2011-03-26T20:10:09.000 に答える
0

https://github.com/pi-/iAdUniversalTemplate

これは、iOS 4.2 の最小ターゲットを必要とする、XIB を使用しないユニバーサル アプリ iAd 回転可能テンプレートです。

iAdなど、多くのスラッシングが必要でした-- バナーをクリックできません

でも今は絶好調です。

于 2011-04-04T05:21:03.883 に答える