GodotでiOS用のモジュールを作りました。作ったのはSKStoreReviewControllerのrequestReviewを呼んでユーザーにレビューをしてもらうポップアップを出すだけのモジュールです。
作り方としては、元々iOS用のモジュールとして、AdMobのモジュールがしっかり動いているのは知っていたので、それを参考にしました。
kloder-games/godot-admob: Module Admob for Godot engine
このリポジトリのGodotのモジュールフォルダにコピーするフォルダがあるのですが、それをコピーして改造していきました。
ちなみに完成品はこちらです。動けばOKという感じでやっているので中身の理解はしていません。
dala00/godot-store-review: Godot store review module for iOS.
libフォルダは今回は不要ですので使っていません。外部ライブラリを使う場合は参考にすると良いと思います。
今回利用した最低限必要なファイルは下記です。
これらのファイル名や中身のadmobという名称部分を、独自のものに置き換えていきます。
不要なプロパティやメソッドを削っていきます。今回はrequestReviewを呼ぶメソッドだけがあればいいので、下記のメソッドを作って後は削除しました。
void GodotStoreReview::requestReview() {
NSLog(@"Calling requestReview");
if (instance != this) {
NSLog(@"GodotStoreReview Module dublicate singleton");
return;
}
if (@available(iOS 10.3, *)) {
if ([SKStoreReviewController class]) {
[SKStoreReviewController requestReview];
} else {
NSLog(@"SKStoreReviewController not found");
}
} else {
NSLog(@"SKStoreReviewController not found for this version");
}
}
バージョンの判定をしているのでごちゃごちゃしていますが、基本的にはinstanceの有無をチェックした後はシンプルに処理を書くだけで大丈夫です。
あとは_bind_methodsの中身も書き換え、作ったメソッドをGodotと連携させるための宣言をしておきます。
void GodotStoreReview::_bind_methods() {
CLASS_DB::bind_method("requestReview", &GodotStoreReview::requestReview);
}
基本的には以上です。あとはGodotをビルドして実際に試すだけです。Godot側では下記のような感じで実行できるようになります。
if Engine.has_singleton("StoreReview"):
_store_review = Engine.get_singleton("StoreReview")
_store_review.requestReview()
今回はやっていませんが、コールバックもできます。AdMobモジュールでも実装されていますので、必要な方は参考にできます。
逆に今回と同様のシンプルなモジュールを作りたい方は今回僕が作ったものを参考にしていただくと簡単そうです。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント