最近のスマホにはPush通知の実装は欠かせなくなってきました。
PHPやRubyでは解説してある部分もあるのですが、
node.jsとなると、まだまだ新しい言語の為か、
解説ページが極端に少なくなります。
そんな訳で、今回はnode.jsでCloud to Device Messaging(C2DM)の実装をしたいと思います。
まずはC2DMへ登録します。
Sign Up for Android Cloud to Device Messaging
次に、Authコードの発行をします。
コンソール上で、
curl -X POST https://www.google.com/accounts/ClientLogin -d Email={GoogleアカウントのEmail} -d Passwd={Googleアカウントのパスワード} -d accountType=HOSTED_OR_GOOGLE -d service=ac2dm -d source={パッケージ名}
というコマンドを打つと、3行ほどのレスポンスがあります。その3行目にAuth=という行がありますので、
Auth=を含めてメモしておいてください。
以上で事前準備は完了です。
ここからはプログラムを書いていきます。
node.jsのインストールですが、
以前解説したので省きます。
npmコマンドが使えるようにしておいてください。
次に、npmでc2dmモジュールのインストールを行います。
npm install c2dmこれでプロジェクトにc2dmモジュールがインストールされました。
では、簡単なサンプルを
/**
* C2DM Sample Code
* @author dommy <shonan.shachu at gmail.com>
* @version 1.0.0 updated on 2012-03-14
*/
// settings
var http = require('http');
var server = http.createServer();
// C2DM configuration and create object
var options = {
token : 'Auth=xxxxxxxxxxxxxxxxxxxxxxxx',
};
var C2DM = require('c2dm').C2DM;
var c2dm = new C2DM(options);
// Registration ID will be received from Android App
var receiver = 'C2DM Registration ID';
// main function
server.on('request', function(req, res) {
// create notification
var msg = 'You have new message'; // main message
var sender = 'dommy@shonanshachu'; // sender
var notification = {
regitration_id : receiver,
collapse_key : '1',
'data.msg' : msg,
'data.sender' : sender,
};
c2dm.send(notification, function(error, messageId) {
// error handling
// return response
res.writeHead(200, {'Content-Type': 'application/json'});
res.write('{status:1}');
res.end();
});
};
// listen port 80
server.listen(80, '127.0.0.1');
これで、localhostを叩くと、AndroidアプリにPushが飛びます。
C2DM Registration IDはAndroidアプリから受け取ってください。
こちらの取得方法等の解説もどこかでします。
ちなみに、notification内でdata.fromを使おうとしましたが、
data.fromは予約されていて、
Authコードを発行した時に使ったGoogleアカウントのメールアドレスになります。
ちなみに、notificationのcollaple_keyの使い方がよくわかりません。
どなたか分かる方いましたら、コメントお願いします。
iPhoneのPush通知を実装する(node.js編)
参考: SpeCT / node-c2dm | GitHub
0 件のコメント:
コメントを投稿