更新履歴については今のところ表示されていないようです。
新規に組み込まれる場合は、SDK に入っているサンプルと Readme.txt を読めば特に問題無く組み込めると思いました。注意点追記しました。
3.3 から 3.4 へ SDK を更新する場合には、以下の点に注意するといいと思います。
- AdMakerView クラスが UIViewController から UIView のサブクラスに変わった。これは 3.1 の時は UIView のサブクラスだったので、一周して結局また元に戻ったということになります。(笑)
- 上記変更により viewWillAppear と viewWillDisappear メソッドが使えなくなるかと思いきや、互換性を重視してかメソッドは残っている。しかしドキュメントには何も記述されていない。
- AdMakerDelegate の didLoadAdMakerView メソッドは、広告が読み込み直される度にコールされるようになった。(これは嬉しい)
- 内部ブラウザで広告を開く場合、AdMaker.useSafari = NO にする。しかし、 requestAdURL:(NSURLRequest*)request メソッドが呼ばれるだけで、それ以外のアクションは起こらない。内部ブラウザは自分で用意せよということなのかも?
- AdMakerView をインスタンス化して start メソッドで開始させてから、インスタンスを解放しようとするとクラッシュする。SDK 添付のサンプルプログラムを改造して確認しました。
ビルド設定の ARC は OFF にします。
設置したボタンをタップすると、AdMakerView をリリースします。
// SingleViewViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
AdMaker = [[AdMakerView alloc]init];
[AdMaker setAdMakerDelegate:self];
AdMaker.viewController = self;
AdMaker.useSafari = YES;
AdMaker.backgroundColor = [UIColor clearColor];
[AdMaker setFrame:CGRectMake(0,360,320,50)];
[self.view addSubview:AdMaker];
[AdMaker start];
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:@"end AdMaker" forState:UIControlStateNormal];
button.frame = CGRectMake(85,50,150,40);
[button addTarget:self action:@selector(endAdMakerTouched:) forControlEvents:UIControlEventTouchDown];
[self.view addSubview:button];
}
- (void)endAdMakerTouched:(id)sender
{
NSLog(@"endAdMakerTouched");
if (AdMaker) {
// 注:この時点でAdMakerのリファレンスカウンタは2になっているので release を忘れないこと!
[AdMaker removeFromSuperview];
[AdMaker release];
AdMaker = nil;
}
}
クラッシュに関してはサポートに問い合わせてみるつもりです。今回の SDK バージョンは iOS 5 に対応したと書いてあったので、もしかしたらインスタンスの解放を Automatic Reference Counting 任せにしているのかもしれません。
とはいえ、すべてのプログラムが ARC の設定を ON にしているわけでもないので、そういう仕様は厳しいのではないかと思いますが、どうでしょうか。
Instrumentsで調べたが、AdMakerをインスタンス化して、解放しなかったまま、メモリリークが発生しないようです。なので、AdMakerViewのメモリ管理はおかしいと思います。
返信削除