最近のスマホには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 件のコメント:
コメントを投稿