ウォール型広告を取り入れる為に、アスタウォールを使ってみました。
SDKをダウンロードして、Frameworkを追加して、サンプルコードを参考にして、
びっくりするほど短いコードで動かすことができます。
が、SpriteKitを使ってるときはどうしたらいいの?って感じに2日くらい試行錯誤したので、メモ代わりに。
まず問題なのが、アスタウォールがViewControllerでできていること。
その為、SKSceneに追加はできません。
(当たり前ですが、SKNodeやSKViewにキャストしてみましたが案の定動かず。)
結局のところ、UIViewControllerに追加する必要があります。
サンプルコードにある、
[self presentViewController:vc animated:YES completion:nil];
の「self」では、SKViewを参照していると思うので、エラーになってしまいます。
なので、ViewControllerが使えるように一番手前にあるUIViewControllerを取得します。
//一番手前にあるViewControllerを取得
UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
while (topController.presentedViewController) {
topController = topController.presentedViewController;
}
//アスタウォール表示
NSBundle *mrdAstaWallBundle = [NSBundle bundleWithPath:[MrdAstaWall frameworkBundlePath]];
MrdAstaWallViewController *vc =
[[MrdAstaWallViewController alloc]initWithNibName:@"MrdAstaWallViewController" bundle:mrdAstaWallBundle];
[vc setMediaCode:@"MyMediaCode"];
//selfからtopControllerに変更
if ([topController respondsToSelector:@selector(presentViewController:animated:completion:)]) {
[topController presentViewController:vc animated:YES completion:nil];
}
これで無事呼び出す事ができました。
もっと簡単にできる方法があると思うので、知っているかたがいたら教えて下さい。
|
【楽天ブックスならいつでも送料無料】Sprite Kit iPhone2Dゲーム… |