いつも質問ばかりで申し訳ございません。
管理人様及びJusty様等にはご迷惑をおかけしております。
iPhoneアプリを開発しておりAdmobを導入したいのですが
どうしても表示が出来ません。
IBを使わずに開発しており色々なサイト様を
参考しながら導入しているのですが上手く導入が出来ません。
プロジェクト:http://www1.axfc.net/uploader/Ne/so/98704
pass:ad
全てのページに広告を表示させてたいので
HelloWorldAppDelegate.mにて広告の表示についてのプログラムを書いております。
よろしければどうがソースを見ては頂けないでしょうか?
Admob導入について
Re: Admob導入について
こちらは adMobのアカウントを持っていないし、サンプルも見たことないですが。
大きな問題としては3点。
・ adMobAdのインスタンス化されていない(→requestAdWithDelegateが未使用)
・ AdMobDelegateと接続していない
・ currentViewControllerForAdの戻り値がおかしい
多分これらを解消すれば表示だけはされるようになるんじゃないかと。
大きな問題としては3点。
・ adMobAdのインスタンス化されていない(→requestAdWithDelegateが未使用)
・ AdMobDelegateと接続していない
・ currentViewControllerForAdの戻り値がおかしい
多分これらを解消すれば表示だけはされるようになるんじゃないかと。
Re: Admob導入について
ご回答ありがとうございます。
Justy様には何度ご回答いただいたことか・・・。
本当に助かっております。ありがとうございます。
・ adMobAdのインスタンス化されていない(→requestAdWithDelegateが未使用)
[window_ addSubview:[AdMobView requestAdWithDelegate:self]];
これでいいのでしょうか?
すみません・・・調べてみてこのように使われていたので・・・
・ AdMobDelegateと接続していない
これについてよくわからないです。
・ currentViewControllerForAdの戻り値がおかしい
AppDelegate意外のソースではselfとなっていたのですが
このソースでは何を返せばいいのでしょうか?
質問ばかりで申し訳ないです。
Admobのサンプルプロジェクト
http://www1.axfc.net/uploader/Sc/so/189705.zip
pass:ad
必要ないかもしれませんが宜しければ・・・。
Justy様には何度ご回答いただいたことか・・・。
本当に助かっております。ありがとうございます。
・ adMobAdのインスタンス化されていない(→requestAdWithDelegateが未使用)
[window_ addSubview:[AdMobView requestAdWithDelegate:self]];
これでいいのでしょうか?
すみません・・・調べてみてこのように使われていたので・・・
・ AdMobDelegateと接続していない
これについてよくわからないです。
・ currentViewControllerForAdの戻り値がおかしい
AppDelegate意外のソースではselfとなっていたのですが
このソースでは何を返せばいいのでしょうか?
質問ばかりで申し訳ないです。
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// windowを自分で作成
CGRect bounds = [[UIScreen mainScreen] bounds];
window_ = [[UIWindow alloc] initWithFrame:bounds];
// 基点となるControllerを作成
TopMenuController* topMenu = [[[TopMenuController alloc] init] autorelease];
rootController_ = [[UINavigationController alloc] initWithRootViewController:topMenu];
rootController_.view.frame = CGRectMake( 0, 20, 320, 480-48-20 );
// AdMod
//adMobAd = [[AdMobView alloc] init];
//adMobAd = [AdMobView requestAdWithDelegate:[self UIApplicationDelegate]];
//adMobAd = [AdMobView requestAdWithDelegate:self]; // 起動するが落ちてしまう
// windowにControllerのviewを追加
[window_ addSubview:rootController_.view];
[window_ addSubview:adMobAd];
[window_ addSubview:[AdMobView requestAdWithDelegate:self]];
[window_ makeKeyAndVisible];
}
Admobのサンプルプロジェクト
http://www1.axfc.net/uploader/Sc/so/189705.zip
pass:ad
必要ないかもしれませんが宜しければ・・・。
Re: Admob導入について
概ね。内側の[]の requestAdWithDelegateをしているところはそれでOKだと思います。TEAS TEA さんが書きました:・ adMobAdのインスタンス化されていない(→requestAdWithDelegateが未使用)
[window_ addSubview:[AdMobView requestAdWithDelegate:self]];
これでいいのでしょうか?
しかし、この段階で windows_に紐づけるのはどうでしょうね。
didReceiveAdメソッドの処理と被りませんか?
処理に時間がかかること、或いは処理に失敗して、didFailToReceiveAdが呼ばれるかも
しれないことを考えるとやめておいたほうがいいでしょう。
従って、applicationDidFinishLaunchingの中ではとりあえず
とだけしておけば大丈夫じゃないかと。
requestAdWithDelegateで self(AdMobDelegateを継承した HelloWorldAppDelegate)をTEAS TEA さんが書きました:・ AdMobDelegateと接続していない
これについてよくわからないです。
指定しているので大丈夫です。
正確に何を返せばいいのかは AdMobのドキュメントを見ないとわかりませんが、TEAS TEA さんが書きました:・ currentViewControllerForAdの戻り値がおかしい
AppDelegate意外のソースではselfとなっていたのですが
このソースでは何を返せばいいのでしょうか?
プログラム的には UIViewController *を返すことになっています。
このコードの中で UIViewController *といえば TopMenuControllerか
UINavigationControllerくらいしかありません。
生成済みの TopMenuControllerを返してみては?
Re: Admob導入について
お忙しい中、お早い返信ありがとうございました。
Justy様の言う通りに変更しましたら警告が出なくなりました。
ありがとうございます。
selfについては自分のソースのことと思っていたのですが少し違っていたようですね・・・。
ソースの<>の部分、添付したソースではHelloWorldAppDelegateのことだったのですか。
勉強になり助かります。
しかし、やはり広告の表示だけが出来ません。
今気がついたのですがサンプルを試してみたのですが
4つあるソースのうち今回貼付けたサンプルでは広告の表示が確認できませんでした。
2個目に添付したProgrammaticAdViewController.mから参照したのですがこちらが間違えているのでしょうか?
他のサンプルプロジェクトですと時間が経つと表示されるのですが今回の物では表示できませんでした。
長々と申し訳ないのですが現在のソースです。
Justy様の言う通りに変更しましたら警告が出なくなりました。
ありがとうございます。
selfについては自分のソースのことと思っていたのですが少し違っていたようですね・・・。
ソースの<>の部分、添付したソースではHelloWorldAppDelegateのことだったのですか。
勉強になり助かります。
しかし、やはり広告の表示だけが出来ません。
今気がついたのですがサンプルを試してみたのですが
4つあるソースのうち今回貼付けたサンプルでは広告の表示が確認できませんでした。
2個目に添付したProgrammaticAdViewController.mから参照したのですがこちらが間違えているのでしょうか?
他のサンプルプロジェクトですと時間が経つと表示されるのですが今回の物では表示できませんでした。
長々と申し訳ないのですが現在のソースです。
//
// HelloWorldAppDelegate.m
//
// Created by ToKoRo on 2009-08-15.
//
#import "HelloWorldAppDelegate.h"
#import "TopMenuController.h"
#import "AdMobView.h"
@implementation HelloWorldAppDelegate
@synthesize window = window_;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// windowを自分で作成
CGRect bounds = [[UIScreen mainScreen] bounds];
window_ = [[UIWindow alloc] initWithFrame:bounds];
// 基点となるControllerを作成
TopMenuController* topMenu = [[[TopMenuController alloc] init] autorelease];
rootController_ = [[UINavigationController alloc] initWithRootViewController:topMenu];
rootController_.view.frame = CGRectMake( 0, 20, 320, 480-48-20 );
// AdMob
adMobAd = [AdMobView requestAdWithDelegate:self];
[adMobAd retain];
// windowにControllerのviewを追加
[window_ addSubview:rootController_.view];
[window_ addSubview:adMobAd];
// [window_ addSubview:[AdMobView requestAdWithDelegate:self]];
[window_ makeKeyAndVisible];
}
- (void)dealloc {
[rootController_ release];
[window_ release];
[adMobAd release];
[super dealloc];
}
#pragma mark -
#pragma mark AdMobDelegate methods
- (NSString *)publisherIdForAd:(AdMobView *)adView {
return @"a14d1d37323f99d"; // this should be prefilled; if not, get it from www.admob.com
}
- (UIViewController *)currentViewControllerForAd:(AdMobView *)adView {
return rootController_; // 戻り値
}
- (UIColor *)adBackgroundColorForAd:(AdMobView *)adView {
return [UIColor colorWithRed:0 green:0 blue:0 alpha:1]; // this should be prefilled; if not, provide a UIColor
}
- (UIColor *)primaryTextColorForAd:(AdMobView *)adView {
return [UIColor colorWithRed:1 green:1 blue:1 alpha:1]; // this should be prefilled; if not, provide a UIColor
}
- (UIColor *)secondaryTextColorForAd:(AdMobView *)adView {
return [UIColor colorWithRed:1 green:1 blue:1 alpha:1]; // this should be prefilled; if not, provide a UIColor
}
// To receive test ads rather than real ads...
/*
// Test ads are returned to these devices. Device identifiers are the same used to register
// as a development device with Apple. To obtain a value open the Organizer
// (Window -> Organizer from Xcode), control-click or right-click on the device's name, and
// choose "Copy Device Identifier". Alternatively you can obtain it through code using
// [UIDevice currentDevice].uniqueIdentifier.
//
// For example:
// - (NSArray *)testDevices {
// return [NSArray arrayWithObjects:
// ADMOB_SIMULATOR_ID, // Simulator
// //@"28ab37c3902621dd572509110745071f0101b124", // Test iPhone 3GS 3.0.1
// //@"8cf09e81ef3ec5418c3450f7954e0e95db8ab200", // Test iPod 2.2.1
// nil];
// }
- (NSArray *)testDevices {
return [NSArray arrayWithObjects: ADMOB_SIMULATOR_ID, nil];
}
- (NSString *)testAdActionForAd:(AdMobView *)adMobView {
return @"url"; // see AdMobDelegateProtocol.h for a listing of valid values here
}
*/
// Sent when an ad request loaded an ad; this is a good opportunity to attach
// the ad view to the hierachy.
- (void)didReceiveAd:(AdMobView *)adView {
NSLog(@"AdMob: Did receive ad");
// put the ad at the bottom of the screen
adMobAd.frame = CGRectMake(0, 480-48, 320, 48);
[window_ addSubview:adMobAd];
}
// Sent when an ad request failed to load an ad
- (void)didFailToReceiveAd:(AdMobView *)adView {
NSLog(@"AdMob: Did fail to receive ad");
[adMobAd removeFromSuperview]; // Not necessary since never added to a view, but doesn't hurt and is good practice
[adMobAd release];
adMobAd = nil;
// we could start a new ad request here, but in the interests of the user's battery life, let's not
}
@end
Re: Admob導入について
サンプルは UIViewControllerを継承しているので selfでも問題ないですが、TEAS TEA さんが書きました:selfについては自分のソースのことと思っていたのですが少し違っていたようですね・・・。]
HelloWorldAppDelegateはそういうわけではないですから。
だとするなら、開発元に相談するべきでしょう。TEAS TEA さんが書きました:今気がついたのですがサンプルを試してみたのですが
4つあるソースのうち今回貼付けたサンプルでは広告の表示が確認できませんでした。
それはこちらではわかりません。TEAS TEA さんが書きました:2個目に添付したProgrammaticAdViewController.mから参照したのですがこちらが間違えているのでしょうか?
コードの製作者に確認した方がいいと思います。
気になるところはありますが、指摘済みですしそこは特に動作そのものには影響しないのでTEAS TEA さんが書きました:長々と申し訳ないのですが現在のソースです。
それで問題ないように見えます。
・ テストデバイスを有効にして、シミュレータで動かすとどうなりますか?
・ テストデバイスを有効にして、実機で動かすとどうなりますか?
・ publisherIdForAdの IDを a14c9a69c9dff58とか別のに変えてみたらどうなりますか?
・ TopMenuController側に Admobを実装してみたらどうなりますか?
Re: Admob導入について
回答ありがとうございます。
Justy様のお陰で表示されることは確認できました。
ただ、謎の現象がでてしまっております。
何回かに一回は表示できます。しかし殆ど表示されません。
又、時間をあけて(数時間)とデバックしなおすと表示出来ることがあります。
これはAdmob側で何か制限されていると考えた方がいいのでしょうか?
・ テストデバイスを有効にして、シミュレータで動かすとどうなりますか?
コメントを外し2つの関数を有効にすると広告が表示されます。
TopMenuController側にソースを書かなくても確認できました。
この場合は謎の現象は起こりませんでした。
・ テストデバイスを有効にして、実機で動かすとどうなりますか?
↑と同じです。
・ publisherIdForAdの IDを a14c9a69c9dff58とか別のに変えてみたらどうなりますか?
謎の現象は変わりません。
・ TopMenuController側に Admobを実装してみたらどうなりますか?
TopMenuController側でも表示するようにしてみたところ表示できました。
しかし、謎の現象が起こってしまいます。
Justy様のお陰で表示されることは確認できました。
ただ、謎の現象がでてしまっております。
何回かに一回は表示できます。しかし殆ど表示されません。
又、時間をあけて(数時間)とデバックしなおすと表示出来ることがあります。
これはAdmob側で何か制限されていると考えた方がいいのでしょうか?
・ テストデバイスを有効にして、シミュレータで動かすとどうなりますか?
コメントを外し2つの関数を有効にすると広告が表示されます。
TopMenuController側にソースを書かなくても確認できました。
この場合は謎の現象は起こりませんでした。
・ テストデバイスを有効にして、実機で動かすとどうなりますか?
↑と同じです。
・ publisherIdForAdの IDを a14c9a69c9dff58とか別のに変えてみたらどうなりますか?
謎の現象は変わりません。
・ TopMenuController側に Admobを実装してみたらどうなりますか?
TopMenuController側でも表示するようにしてみたところ表示できました。
しかし、謎の現象が起こってしまいます。
Re: Admob導入について
その可能性はあります。TEAS TEA さんが書きました:これはAdmob側で何か制限されていると考えた方がいいのでしょうか?
http://sarudeki.maiway.jp/forum/topic/100
AdMobはライブラリの中身もサーバー側の挙動も詳細が公開されているわけでは
ないので、サポートに連絡して訊いてみた方がいいと思います。
なら、それほど問題ないのかもしれませんね。TEAS TEA さんが書きました:・ テストデバイスを有効にして、シミュレータで動かすとどうなりますか?
コメントを外し2つの関数を有効にすると広告が表示されます。
Re: Admob導入について
ご連絡が遅くなってしまい申し訳ございませんでした。
無事、表示することが出来ました。
調べてみるとAdmobは同じ端末から何度もリクエストすると一時的に表示されなくなるらしいです。
現在では自分のシミュレータにて広告が表示できることを確認できました。
今回もJusty様ありがとうございました!!
質問ばかりで申し訳ないのですがもう一つ厄介な現象がでてしまいまして…
大変申し訳ないのですが別トピックにて質問させて頂きます。
今回も本当にありがとうございました。
無事、表示することが出来ました。
調べてみるとAdmobは同じ端末から何度もリクエストすると一時的に表示されなくなるらしいです。
現在では自分のシミュレータにて広告が表示できることを確認できました。
今回もJusty様ありがとうございました!!
質問ばかりで申し訳ないのですがもう一つ厄介な現象がでてしまいまして…
大変申し訳ないのですが別トピックにて質問させて頂きます。
今回も本当にありがとうございました。