一人もくもく会 α verでサービス開始しました。

cocos2d-jsでniftyのmBaaSを使用する

cocos2d-jsのjs側でniftyのmBaaSを使用してみた。
java側でも別にいいのだが、いちいちjava側にいろいろな処理を書いていたのでは
せっかくjsで作っているメリットが薄れてしまうと思うので
なんとかjsだけで完結できないか試してみた。

Androidのみのテストで、全ての機能を試したわけではないが、
最終的に後述ソースのような形で匿名会員でのログイン、オブジェクトの更新ができた。

特記するところとしては、最初のNCMB.localStorageにcocosのlocalStorageを代入しているところ。
どうも実機だとここがうまく参照されずエラー停止してしまうのでわざわざ入れてあげている。

それ以外のプログラムはNCMB.AnonymousUtils.logInでの匿名会員ログイン。
明示的なユーザー登録は離脱率が多くなるとのことなので、
明示的に登録しなくてもゲームが進められるように匿名会員でのログインが良いと思う。

logInというメソッドだが、どうも新規会員を毎回作成してしまうようなので
NCMB.User.current()を使ってログイン済みかどうかをチェックする。
(localStorageにログイン状態が保存されているので2回目以降の起動でもcurrentでデータが取れる)

これでそのうちゲームを気に入って機種変等のために正規会員になりたいと思った人のために
会員用のデータを入力してもらって埋めればいいのだと思う。(よく調べてはいないが)

NCMB.localStorage = cc.sys.localStorage;
NCMB.initialize("APP_KEY", "CLIENT_KEY");

var user = NCMB.User.current();
if (user != null && user.getUsername != undefined) {
	var label = new cc.LabelTTF(NCMB.User.current().getUsername(), 'Arial', 24);
    label.setPosition(cc.winSize.width / 2, cc.winSize.height / 2);
    layer.addChild(label);
    user.set('comment', 'aiueo');
    user.save(null, {
    	success: function(user2Again) {
    	},
    	error: function(user2Again, error) {
    	}
    });
    return true;
}

NCMB.AnonymousUtils.logIn({
	success: function(user) {
		var label = new cc.LabelTTF('匿名ユーザーでログイン成功', 'Arial', 24);
		label.setPosition(cc.winSize.width / 2, cc.winSize.height / 2);
		layer.addChild(label);
	},
	error: function(error) {
		var label = new cc.LabelTTF("匿名ユーザーでログイン失敗: " + error.message, 'Arial', 24);
		label.setPosition(cc.winSize.width / 2, cc.winSize.height / 2);
		layer.addChild(label);
	}
});

ほんとはGoogle Playゲームサービスの方でこういう機能を提供してくれた方がいいんだけどなぁ。
匿名会員的なものだけでもいいから…。