SpriteKitでアスタウォールを実装してみる

ウォール型広告を取り入れる為に、アスタウォールを使ってみました。

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];
    }

これで無事呼び出す事ができました。

もっと簡単にできる方法があると思うので、知っているかたがいたら教えて下さい。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>