私の開発者と私は以前、iPhoneとiPadにインタースティシャル広告をロードしようとしましたが、これをiPadで機能させることしかできませんでした。
テスト中に、インタースティシャルがiPhoneでサポートされていないことがわかりましたが、iOS7のリリース以降、これが可能であると言う人もいます。
しかし、私はこれに関するまともなドキュメントを見つけることができません。このスタックの質問は、私が再び疑問に思っています iPhoneでのiAdとAdmobのインタースティシャル統合
それで、iAdsを使用するiPhoneでフルスクリーンインタースティシャルは可能ですか?
また、iAdからiPhone用のインタースティシャル広告を待っていました。私はついにそれを私のアプリの1つに実装しました、そしてそれは実行されてテスト広告をうまく表示しています。アプリは現在審査中です。承認されたら回答を更新し、実際の広告が配信されているかどうかをテストできます。それまでの間、iAdインタースティシャルを実装するために使用したコードは次のとおりです。
ViewController.h
_@interface ViewController : UIViewController <ADInterstitialAdDelegate> {
ADInterstitialAd *interstitial;
BOOL requestingAd;
}
-(void)showFullScreenAd;
_
ViewController.m
_-(void)viewDidLoad {
requestingAd = NO;
}
// Interstitial iAd
-(void)showFullScreenAd {
// Check if already requesting ad
if (requestingAd == NO) {
[ADInterstitialAd release];
interstitial = [[ADInterstitialAd alloc] init];
interstitial.delegate = self;
self.interstitialPresentationPolicy = ADInterstitialPresentationPolicyManual;
[self requestInterstitialAdPresentation];
NSLog(@"interstitialAdREQUEST");
requestingAd = YES;
}
}
-(void)interstitialAd:(ADInterstitialAd *)interstitialAd didFailWithError:(NSError *)error {
interstitial = nil;
[interstitialAd release];
[ADInterstitialAd release];
requestingAd = NO;
NSLog(@"interstitialAd didFailWithERROR");
NSLog(@"%@", error);
}
-(void)interstitialAdDidLoad:(ADInterstitialAd *)interstitialAd {
NSLog(@"interstitialAdDidLOAD");
if (interstitialAd != nil && interstitial != nil && requestingAd == YES) {
[interstitial presentFromViewController:self];
NSLog(@"interstitialAdDidPRESENT");
}
}
-(void)interstitialAdDidUnload:(ADInterstitialAd *)interstitialAd {
interstitial = nil;
[interstitialAd release];
[ADInterstitialAd release];
requestingAd = NO;
NSLog(@"interstitialAdDidUNLOAD");
}
-(void)interstitialAdActionDidFinish:(ADInterstitialAd *)interstitialAd {
interstitial = nil;
[interstitialAd release];
[ADInterstitialAd release];
requestingAd = NO;
NSLog(@"interstitialAdDidFINISH");
}
_
ユーザーが特定のアクションを実行した後、-(void)showFullScreenAd
を呼び出すだけです。詳細については、 IViewController iAd Additions Reference を参照してください。
編集:01/03/14アプリのアップデートが承認され、12時間公開されました。現時点では、インタースティシャルiAdをまだ受け取っていません。 iPhoneのインタースティシャル広告の在庫が不足しているか、iTunesConnectのiAdモジュールで受け取った次のメッセージと関係がある可能性があります。メッセージは次のとおりです
アプリ[アプリ名]を承認のために送信すると、アプリネットワークで使用するためにiAdによってレビューされ、iAd広告主から広告を受信するための適切性が判断されます。アプリが承認されると、アプリで実行される広告の収益を得る準備が整います。
これまでこのメッセージを受け取ったことがありません。通常、App Storeでアップデートがリリースされるとすぐに、「アプリは広告を受信できるようになりました」というメッセージが表示されます。これは、アプリにインタースティシャル広告が新しく実装されたか、AppleがiAdプロシージャの一部を更新したためです。
インタースティシャルiAdの受信を開始した場合は、回答を再度更新します。それまでの間、私のアプリで自分でテストすることができます + Quotes 。上記のコードが呼び出され、ユーザーがアプリ内でFacebookを介して共有すると、インタースティシャル広告が表示されます。
編集:01/07/14 iAdに直接連絡し、今日応答を受け取りました
こんにちはダニエル、初期の広告掲載率はiOS 7でのインタースティシャルの最近のリリースを反映します。広告配信を増やしていくので、しばらくお待ちください。まだ行っていない場合は、アプリに標準の縦向きと横向きのiAdバナーを統合して、利用可能なすべてのタイプの広告枠を活用することをお勧めします。最後に、今後の参考のために、承認のためにアプリを送信すると、iAdによってレビューされ、iAd広告主から広告を受信するための適切性が判断されます。そのため、新しいiAd対応アプリが広告の表示回数を受け取り始めるまでに数日かかる場合があります。よろしくお願いいたします。iAdアプリネットワークサポート
そのため、iPhone用のインタースティシャルiAdはiOS 7.0以降で動作しますが、現在、広告掲載率は低くなっています。
私の元の答えは古くなり始めているので、ここに新しいSwift実装:
この実装ではManual
ADInterstitialPresentationPolicy
を使用するため、インタースティシャルを独自の間隔で表示できます。インタースティシャルを手動で提示する場合、それ自体を閉じるための独自の閉じるボタンが読み込まれません。したがって、私が行ったことは、インタースティシャルを提示するためにUIView
を作成し、インタースティシャルのデリゲートメソッドを使用してUIView
を閉じることです。テスト時に、iAdネットワークからの広告の受信との不整合が依然として発生します。広告を受け取ったり、ロードに失敗して新しい広告をリクエストしたり、まったく何も起こらない場合があります。これは、iAdのインタースティシャルの性質のようです。
import UIKit
import iAd // Import iAd
class ViewController: UIViewController, ADInterstitialAdDelegate { // Include the delegate
var iAdInterstitial = ADInterstitialAd() // Our ad
var iAdInterstitialView = UIView() // View to present our ad in
var adLoaded = false // Bool to keep track if an ad is loaded or not
override func viewDidLoad() {
super.viewDidLoad()
setupAd()
}
func setupAd() {
// Set presentation to manual so we can choose when to present the interstitial
// Setting this will also fetch an interstitial ad for us
self.interstitialPresentationPolicy = ADInterstitialPresentationPolicy.Manual
iAdInterstitial.delegate = self // Set the delegate
// Make our view the same size as the view we will be presenting in
iAdInterstitialView.frame = self.view.bounds
}
func requestNewAd() {
// This will fetch an ad for us
ViewController.prepareInterstitialAds()
println("Requesting new ad")
}
@IBAction func presentAdButton(sender: AnyObject) {
if (adLoaded) {
// We have an ad that is loaded so lets present it
self.view.addSubview(iAdInterstitialView)
iAdInterstitial.presentInView(iAdInterstitialView)
}
else {
// No ad has been loaded
println("Ad not loaded")
}
}
func interstitialAdDidUnload(interstitialAd: ADInterstitialAd!) {
// Kinda works as expected
// Sometimes is called prematurely
// Sometimes takes minutes after ad is dismissed to be called
println("interstitialAdDidUnload")
// Get new ad
adLoaded = false
iAdInterstitialView.removeFromSuperview()
requestNewAd()
}
func interstitialAd(interstitialAd: ADInterstitialAd!, didFailWithError error: NSError!) {
// Failed to load ad so lets try again
println("didFailWithError: \(error)")
requestNewAd()
}
func interstitialAdWillLoad(interstitialAd: ADInterstitialAd!) {
// There is an ad and it has begun to download
println("interstitialAdWillLoad")
}
func interstitialAdDidLoad(interstitialAd: ADInterstitialAd!) {
// We got an ad
println("interstitialAdDidLoad")
adLoaded = true
}
func interstitialAdActionShouldBegin(interstitialAd: ADInterstitialAd!, willLeaveApplication willLeave: Bool) -> Bool {
println("interstitialAdActionShouldBegin")
return true;
}
func interstitialAdActionDidFinish(interstitialAd: ADInterstitialAd!) {
// Done with this ad. Lets get a new one
println("interstitialAdActionDidFinish")
iAdInterstitialView.removeFromSuperview()
adLoaded = false
requestNewAd()
}