ウォール型広告を取り入れる為に、アスタウォールを使ってみました。
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ゲーム… |