2011年10月17日月曜日

AdMaker SDK 3.4導入

AdMaker SDK 3.4がリリースされました。

更新履歴については今のところ表示されていないようです。

新規に組み込まれる場合は、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 にしているわけでもないので、そういう仕様は厳しいのではないかと思いますが、どうでしょうか。

1 件のコメント:

  1. Instrumentsで調べたが、AdMakerをインスタンス化して、解放しなかったまま、メモリリークが発生しないようです。なので、AdMakerViewのメモリ管理はおかしいと思います。

    返信削除

Related Posts Plugin for WordPress, Blogger...