【Monaca】ncmb-push-monaca-plugin v2.0.0 ご利用の方は今すぐアップデートを!

2016040301

4月下旬ころに「ギャンブル収支管理」のユーザーからメールが届いた。
Playストアからダウンロードすると、「エラーコード-505」が発生するとのこと。
メールにてAndroid端末の設定や初期化などお願いしたが、解決できなない状況が続いた。
そして、Net Dreamers様の提供アプリ「netkeiba.com-無料で使える人気競馬アプリ」をインストール後に「ギャンブル収支管理」をインストールすると、「プロバイダの認証が重複しています」や「エラーコード-505」というエラーにより、インストールまたはアップデートできなくなる現象が発生することがわかった。

二つのアプリに共通する箇所について調査したところ、プッシュ通知ではないかと判断し、ncmb-push-monaca-pluginのリリースを調べてみたところ、v2.0.0の不具合による現象と判明した。

v2.0.1
変更点
Cordova 5.2環境でGoogle Play Service 8.3を利用している場合に、applicationIdが指定されていないことにより
Google Play Service 8.3を含むアプリケーションを複数インストールすることができなくなってしまうため、
プラグイン内部で使用するGoogle Play Serviceのバージョンを8.1にダウングレードしました。

現在、v2.0.2なのでv2.0.0を利用してアプリを開発した方は、早急なアップデートを行った方がよい。

【Monaca】Nifty mBaaS データストアの検索条件に日付を指定する

2016061401

Nifty mBaaSのデータストアで利用可能なデータ型は、データストア(Monaca):基本的な使い方に記載されているとおり。

データストアで利用可能なデータ型

データストアでは、以下の値が利用可能です。

種類 サンプル
文字列 ABC
配列 [“orange”, “apple”, “grape”]
数字 123
日付 2013-09-06T01:51:03.606Z
真偽値 true または false
オブジェクト {“name”:”orange”}
緯度経度(位置情報) 33.857619,122.378986

検索条件「登録日時:createDateが一致」に日付を指定する場合、equalTo(“createDate”, “2016-06-14T12:00:00.000Z”)と日付型に従ってデータを設定しても何も返ってこない。

ドキュメントを隅から隅まで読みまくる。
・・・これか!!!
下記のようにデータを設定する必要がある。わかりにくいな。
REST API リファレンス 5.1 日付を参照。
[javascript]
{ “__type”: “Date”, “iso”: “2016-06-14T12:00:00.000Z” }
[/javascript]
[javascript]
var GameScore = ncmb.DataStore(“GameScore”);
GameScore.equalTo(“createDate”, { “__type”: “Date”, “iso”: “2016-06-14T12:00:00.000Z” })
.order(“score”,true)
.fetchAll()
.then(function(results) {
console.log(“Successfully retrieved ” + results.length + ” scores.”);
for (var i = 0; i < results.length; i++) {
var object = results[i];
console.log(object.score + ” – ” + object.get(“playerName”));
}
}).catch(function(err) {
console.log(err);
});
[/javascript]

【Monaca】Nifty mBaaSのプッシュ通知を実装する

Onsen UI + AngularJS
Cordovaプラグイン:ncmb-push-monaca-plugin v2.0.1(※バージョン要注意

Niftyのサンプルでは、document.addEventListener(“deviceready”, …..となっているが、ons.ready()はイベントの最後に実行されるので、その中にプッシュ通知の処理を記述しても問題ない。
プッシュ通知によって受け取ったJSONデータをons.notification.alert()を使ってダイアログ表示する。
JSONデータはダイアログ表示に必要な形式で作成し、新しいプッシュ通知画面のJSONの項目に設定して送信する。
2016052602

type: 将来に使用
title: ダイアログのタイトル
message: ダイアログのメッセージ(HTML形式)
button1: ダイアログのボタン
button2: 将来に使用
button3: 将来に使用

JSONデータ
[javascript]
{“type”:”1″,”title”:”Monacaで作ったアプリ”,”message”:”今日も暑いですね。
水分を補給しましょう。”,”button1″:”OK”}
[/javascript]
[javascript]
ons.ready(function() {
var appKey = “アプリケーションキー”;
var clientKey = “クライアントキー”;
var senderId = “12桁のプロジェクト番号”;
window.NCMB.monaca.setHandler(showPushNotification);
function showPushNotification(jsonData) {
// JSON.parse()は不要
var data = angular.copy(jsonData);
data.func = function(){};
// プッシュ通知ダイアログ表示
ons.notification.alert({
messageHTML: data.message,
title: data.title,
buttonLabel: data.button1,
animation: “default”,
callback: data.func
});
}
window.NCMB.monaca.setDeviceToken(appKey, clientKey, senderId);
window.NCMB.monaca.setReceiptStatus(true);
// ID取得
var installationId = “”;
var count = 0;
var result = setInterval(function() {
window.NCMB.monaca.getInstallationId(function(id) {
if (id) {
clearInterval(result);
installationId = id;
}
});
count++;
if (count > 9) {
clearInterval(result);
}
}, 5000);
}
[/javascript]

【Monaca】ニフティクラウド mobile backendでプッシュ通知

2016040301

ニフティクラウド mobile backend Ver.2がリリースされ、Monacaでプッシュ通知が簡単に実現できるようになった。

プッシュ通知(Monaca)基本的な使い方」のとおりに進めれば問題なく動作するが、はまりやすいところがAndroidのGCMとの連携。

※ sender_idは【GCMとの連携に必要な準備】で作成したProjectのProject Numberを入力してください

「sender_id」を設定しても動かず、数日つまずいてしまった。

「sender_id」は、Google Cloud Platformのダッシュボードで表示されるプロジェクトのプロジェクト番号のことで、プロジェクトIDではない。

2016040309

またサンプルでは、devicereadyのイベントでプッシュ通知の処理を行っているが、「Onsen UI」を使用している場合は、ons.ready()内で処理を行っても問題ないようだ。

参考:[Monaca] イベントの発生順序について

Monacaでハイブリッドアプリの開発を始めるなら、AngularJSを覚えることをオススメします。

AngularJSリファレンス

新品価格
¥4,104から